1. 程式人生 > 其它 >Linux上部署net6應用

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訪問成功,如果有繫結域名,也可直接用域名訪問

至此,所有配置就都完成啦~~