/ dotnet

在 CentOS 上部署 .NET 网站

在本指南中,我们将介绍如何在 CentOS 服务器上部署ASP.NET Core 的托管环境。

首先你要有

  • 使用具有sudo权限的标准用户帐户访问CentOS服务器;
  • 本机装有最新版本的 Visual Stdio 2017;
  • 本机装有Xshell 和 WinSCP 或类似功能的程序。

默认版本

  • CentOS 7.3

  • Visual Stdio 2017 15.3

在本机运行 dotnet Core 网站

新建一个ASP.NET Core Web 应用程序(.NET Core)。

发布网站到本地。

拷贝发布的程序到服务器上。我这里是拷贝到了服务器路径

/home/wwwroot/WebApplication1/

在服务器上安装dotnet Core环境

不同版本略有差异,详细请直接参考官方文档

查看安装的dotnet Core 版本

dotnet --version

在服务器上运行程序

定位到程序所在目录

cd /home/wwwroot/WebApplication1/
dotnet WebApplication1.dll

查看网站是否跑起来了,另开一个Shell窗口

curl –I “http://localhost:5000”`

返回状态码是 200 就可以了。

安装nginx端口转发

安装 nginx

yum install nginx

启动 nginx

systemctl start nginx
systemctl enable nginx

配置反向代理

找到对应的配置文件,一般在

/etc/nginx/nginx.conf

修改配置文件,把监听端口这里的配置改成:

listen 80;
    location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

重启反向代理

systemctl reload nginx

service nginx restart

nginx -s reload

firewalld (如果有用到的话)

启动firewalld

sudo systemctl start firewalld

开机启动firewalld

sudo systemctl enable firewalld

查看80端口是否开放

firewall-cmd --query-port=80/tcp

开放80端口(—permanent 表示永久开放)

firewall-cmd --permanent --add-port=80/tcp

安装 supervisor 守护进程

安装supervisor

yum install supervisor

配置

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改supervisord.conf,将文件尾部的配置,修改为:

[include]
files = conf.d/*.conf

配置文件中的分号表示注释。

创建配置文件

vi /etc/supervisor/conf.d/WebApplication1.conf

内容

[program:WebApplication1]

command=dotnet  /home/wwwroot/WebApplication1/WebApplication1.dll

directory=/home/wwwroot/WebApplication1/

autostart=true

autorestart=true

environment=ASPNETCORE_ENVIRONMENT=Production

user=root

stopsignal=INT

注意 command 命令要确定能正确地跑起来。

启动站点

supervisord -c /etc/supervisor/supervisord.conf

每次修改配置后要执行 supervisorctl reload 重新加载更新配置。

不过执行命令是要定位到目录 /etc/supervisor 下再执行服务命令。

注意 如果网站正在运行请先关掉,不然守护进程会跑不起来!

查看服务进程是否正常启动

ps -ef | grep WebApplication1

如果能看到相关 dotnet 进程在运行的话就可以用IP去访问了。

域名绑定

按照实际情况调整,其实还是比较简单的。

server {
    listen 443;
    server_name www.example.com example.com;
    ssl on;
    
    ...

    location / {    
       root http://127.0.0.1:8080;
       index index.html;
   }
}
server{
    listen 80;
    server_name www.example.com example.com;
    rewrite ^https://$server_name$request_uri? permanent;
}

参考文档