環境: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