Linux上部署net6應用
前言
.net6都出來了,作為一名.net搬磚工卻一直都在windows下部署應用,還未嘗試過linux環境下部署應用。參考福祿網路研發團隊的相關部落格,學習一下如何將應用部署到linux系統。
.NET5都來了,你還不知道怎麼部署到linux?最全部署方案,總有一款適合你 - 福祿網路研發團隊 - 部落格園 (cnblogs.com)
一、準備
雲伺服器:騰訊雲(便宜)
作業系統:CentOS 8.2
SSH 客戶端:PuTTY (免費且開源)
SFTP工具:WinSCP(免費且開源)
二、安裝Sdk
開啟PuTTy,登入雲伺服器,輸入賬戶密碼
在linux上先安裝sdk
參考 在 CentOS 上安裝 .NET - .NET | Microsoft Docs
指令:
sudo yum install -y dotnet-sdk-6.0
安裝成功後,檢視是否安裝成功
dotnet --version
三、建立和釋出Web應用
建立web應用:
dotnet new webapp -o test
輸入cd test,進入應用目錄,輸入執行命令:dotnet run
執行成功,這個時候我們用外網ip訪問時無法訪問的。
用WinScp開啟目錄/root/test/Properties,編輯launchSettings.json,將applicationUrl的localhost改為*
修改好後我們再用dotnet run 執行一次,用外網ip訪問正常
web程式沒問題後,我們用命令釋出
dotnet publish
四、安裝和配置Supervisor
外網訪問無問題以後,安裝Supervisor。Supervisor是用Python開發的一套通用的程序管理程式,能將一個普通的命令列程序變為後臺daemon,並監控程序狀態,異常退出時能自動重啟。
安裝Supervisor:
yum install -y supervisor
安裝成功後,分別執行以下命令
systemctl enable supervisord
systemctl start supervisord
檢視狀態
systemctl status supervisord
使用vi編輯/etc/conf.d,結果如下圖(一定要一樣)
重新載入配置檔案:
supervisorctl reload
開啟IP:9001,輸入使用者密碼:user/123
supervisor安裝配置完成後,開始配置一個ini檔案:
[program:test] ;表示程式名稱,用於在supervisor中顯示,無特殊意義。
command=/bin/bash -c "dotnet test.dll --urls http://*:5001" ; 輸入執行命令,這裡表示執行的是dotnet test.dll
directory=/root/test/bin/Debug/net6.0/publish/ ; 應用程式根目錄
autostart=true ; 是否自動啟動,當 supervisor 載入該配置檔案的時候立即啟動它
autorestart=true ; 是否自動重啟, 程式異常退出後自動重啟
logfile_maxbytes=50MB ; 該配置檔案輸出單個日誌檔案的大小,預設50M
logfile_backups=10 ; 日誌備份個數
loglevel=info ; 記錄日誌級別
stdout_logfile=/root/data/logs/test/test.out.log ; 指定標準輸出日誌檔案
environment=ASPNETCORE_ENVIRONMENT=Production ;環境變數。
user=root ;啟動服務的使用者
redirect_stderr=true ;把 stderr 重定向到 stdout,預設 false
主要配置
command: 執行命令
directory:應用程式所在目錄
stdout_logfile:日誌檔案所在路徑,非常注意:請一定先要建立好路徑,可用命令
mkdir -p /root/data/logs/test
上列ini可直接複製使用,但須注意:';'前一定一定要有個空格,否則會報錯。(踩坑)
在本地配置好這個檔案後,將其放到/etc/supervisord.d這個目錄下
重新載入:
supervisorctl reload
這時可以看到配置的應用已經執行起來了
五、Nginx
安裝Nginx
yum install -y nginx
依次執行以下命令:
systemctl enable nginx
systemctl start nginx
瀏覽器訪問ip:
配置檔案位置:/etc/nginx/nginx.conf,找到location節點,輸入proxy_pass http://0.0.0.0:5001;
重新載入配置:
nginx -s reload
直接用ip訪問成功,如果有繫結域名,也可直接用域名訪問
至此,所有配置就都完成啦~~