NetCore部署到Linux

 环境:CentOS 7  防火墙状态:关闭

1.安装SDK

只是在Linux系统上面部署应用程序,按道理只需要安装ASP.NET Core Runtime即可。但是在进行直接通过 dotnet  xxx.dll启动程序时失败,

所以直接安装SDK吧,里面包含runtime。

在安装.NET之前,我们需要先注册Microsoft密钥和源,在终端里面执行下面的命令:

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-3.1       我的项目是基于3.1 的; 所以直接安装 3.1  

  参考微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7

二、部署

  1)环境安装完成以后,我们将发布好的文件上传到服务器。

在终端里面新创建一个文件夹,用来存放我们上传的文件:

sudo mkdir /NetCore

如下图所示:

   2)部署: 

    方式一:直接Kestrel方式启动

dotnet AspNetCoreDeployDemo.dll --urls http://*:5000 

  

如下图所示:

在浏览器中访问:http://ip:5000 就可以正常访问

PS

  如果防火墙是开启的,需要把5000端口添加到防火墙中:

firewall-cmd --zone=public --add-port=5000/tcp --permanent

但是这种方式有弊端,就是当前终端关闭了,或者按了ctrl+C ,当前站点会无法访问。 所以这种方式不推荐。

     方式二:Nginx 通过 进程守护 Supervisor 方式

      前提:

          1.安装Nginx:https://www.cnblogs.com/huangshuqiang/p/15515000.html

          2.安装supervisor 并将core项目添加进守护进程:https://www.cnblogs.com/huangshuqiang/p/15524132.html

    1)找到nginx的位置,进入,可以看到里面有conf文件夹:

   2)进入conf文件夹,编辑文件nginx.conf 文件:

   3)修改server中对应的内容,如图:

 就可以将5000端口通过nginx监听80端口的方式进行访问。

       通过访问:http://ip 的方式就可以访问对应的netcore项目。

扩展 1:将supervisor 通过nginx代理。

只需要在nginx.conf中server节点添加一个location即可。

 注意,箭头标识处的两个  /  符号一定要加。访问站点时,站点的显示样式会有问题。访问方式:http://ip/supervisor  。

扩展 2: 将netcore项目做成服务。

前面通过将项目添加进supervisor 以进程守护的方式保证项目的运行,还有通过将项目做成服务的方式来保证项目的运行。

置 .NET Core 开机启动

创建服务文件

vim /etc/systemd/system/demoapp.service

写入如下内容

[Unit]
Description=Demo .NET Web Application running on CentOS 7

[Service]
WorkingDirectory=/home/publish/demo
ExecStart=/usr/bin/dotnet /home/publish/demo/Linux.Web.dll
Restart=always
RestartSec=20
SyslogIdentifier=dotnet-demo
User=nginx
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

设置开机启动

systemctl enable demoapp.service

开启服务,并查询状态

systemctl start demoapp.service
systemctl status demoapp.service

其实跟做成supervisor的方式目的一样,都是保证netcore项目的实时运行。

参考:

https://www.cnblogs.com/dotnet261010/p/12169294.html

https://www.jianshu.com/p/b1f573ca50c7

https://www.cnblogs.com/weiwxg/p/11995577.html

原文地址:https://www.cnblogs.com/huangshuqiang/p/15525899.html