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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM