概述
本文记录了如何为 Linux 服务器搭建 .Net Core 环境,并将 ASP.NET Core 网站项目部署到服务器上,并使用 Nginx 作为反向代理服务器,借助 Supervisor 实现项目的进程管理。
一、项目配置与发布
1. 项目配置(可选)
ASP.Net Core 项目默认侦听 5000 端口,若出现端口占用,可进行此步骤来自定义端口。
1.1 配置文件
在项目根目录下新增配置文件 hosting.json,其中 8080 为示例的自定义端口号:
1 | { |
1.2 修改 Program.cs
1 | public static void Main(string[] args) |
2. 项目发布
在解决方案资源管理器中右键你的项目,选择 发布,使用文件夹模式进行发布,找到发布生成的 publish 文件夹,将其中的内容通过 Xftp 或其他方式上传至服务器上对应的项目空目录中。
二、搭建 .Net Core 环境
1. 注册 Microsoft 签名密钥
1 | sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm |
2. 安装 .Net SDK
1 | 验证 yum |
3. 验证安装结果
1 | dotnet --version |
三、Nginx 安装与配置
nginx 用来做反向代理,nginx 监听 80 端口,当通过 url 访问服务器请求 80 端口时,会通过 nginx 结合访问的域名来转发到对应项目的自定义端口。
1. 安装 Nginx
点击链接 epel-release-7-12.noarch.rpm 直接下载,
或自己前往 https://dl.fedoraproject.org/pub/epel 下载需要的版本 epel 并上传到服务器,在存放 epel rpm 包的目录下依次使用以下命令完成安装:
1 | 安装epel |
可使用下面的命令测试 Nginx 是否运行正常:
1 | curl http://127.0.0.1 |
2. 配置 Nginx
Nginx 的配置文件默认位置为 /etc/nginx/nginx.conf,根据自身需要完成配置,下面是我的配置参考:
1 | server { |
配置完成后重载配置文件:
1 | nginx -s reload |
启用 nginx 开机自动启动:
1 | systemctl enable nginx service |
四、启动网站
至此,你的网站已经可以启动并从外网访问了。关于启动方式,你可以在 Xshell 会话窗口中,进入之前发布到服务器上的项目目录,通过命令 dotnet 你的项目名.dll
来启动网站,但是这样只要 Ctrl + C 或断开会话连接,项目进程就被结束了,因此可以用来做临时测试。若要使网站持续运行下去,可以使用下面两种方法之一。
nohup 启动
1 | nohup dotnet 你的项目名.dll |
这样一来你的网站就跑起来了,并且断开会话进程也不会被关闭,简单和无需进行配置就是它的优点,但若是想要关闭就麻烦了,需要 ps -ef | grep dotnet
找到对应的进程 id 再将其 kill。另外一个缺点是,如果服务器重启,或者你的项目出现错误意外退出了,那么你的项目是不会自动重新启动的。因此你若介意的话,还是推荐下面一种方法。
Supervisor 守护
Supervisor 是微软推荐的一个进程管理工具,可以让指定程序在后台运行,并且在进程异常退出时将自动重启它。
安装 supervisor
1 | yum install python-setuptools |
配置 supervisor
1 | mkdir /etc/supervisor |
- 修改 supervisor.conf 文件尾部的 include 部分如下:
1 | ;[include] |
- 在 /etc/supervisor/conf.d 目录下为项目创建配置文件:
vim /etc/supervisor/conf.d/你的项目名.conf
1 | [program:你的项目名] |
- 启动配置文件:
1 | supervisord -c /etc/supervisor/supervisord.conf |
相关命令
重载配置文件
1
supervisorctl reload
查看守护的所有进程状态
1
supervisorctl status all
关闭所有守护进程
1
supervisorctl stop all
至此,ASP.NET Core 项目部署就完成了。