前言
.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訪問成功,如果有綁定域名,也可直接用域名訪問
至此,所有配置就都完成啦~~