WTM asp.net core應用程式在Ubuntu上和CentOS上部署
wtm在Ubuntu上和CentOS上部署
專案釋出
在Visual Studio中右擊Web專案,選擇釋出,如下圖:
Ubuntu安裝.net core執行時
Ubuntu我是用的Vmware虛擬機器,版本是18.04
參考官方文件,如果要開發 .NET Core 應用,請安裝 SDK(包括執行時)。 或者,如果只需執行應用程式,請安裝執行時。 如果要安裝該執行時,建議安裝 ASP.NET Core 執行時,因為它同時包括 .NET Core 和 ASP.NET Core 執行時。
.net core sdk
Ubuntu預設不啟用root,普通使用者切換root,可以用命令:
sudo su -
安裝完成後,輸入命令:dotnet --version
,可以檢視版本。
寶塔面板安裝
安裝寶塔面板是為了安裝nginx和mysql資料庫,同時配置網站路徑。用過很長時間,還是很方面的。
寶塔面板安裝非常簡單,一行命令解決問題,安裝參考:
寶塔面板安裝
安裝nginx和mysql
輸入命令bt default
,可以檢視訪問寶塔面板地址。
在軟體商店裡面安裝nginx和mysql資料庫。
在寶塔面板中建立網站和資料庫
在網站介面建立一個純靜態站點。
網站配置
在網站設定裡面配置網站資訊,因為要將 Nginx 配置為反向代理以將請求轉接到 ASP.NET Core 應用,這裡按照微軟官網的方法配置反向代理:
server { listen 80; server_name 192.168.186.133; index index.html index.htm default.htm default.html; root /www/wwwroot/leaveapp; #SSL-START SSL相關配置,請勿刪除或修改下一行帶註釋的404規則 #error_page 404/404.html; #SSL-END #ERROR-PAGE-START 錯誤頁配置,可以註釋、刪除或修改 #error_page 404 /404.html; #error_page 502 /502.html; #ERROR-PAGE-END #PHP-INFO-START PHP引用配置,可以註釋或修改 include enable-php-00.conf; #PHP-INFO-END #REWRITE-START URL重寫規則引用,修改後將導致面板設定的偽靜態規則失效 include /www/server/panel/vhost/rewrite/leaveapp.com.conf; #REWRITE-END #反向代理配置 location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } #下邊者兩個很重要,不配置的化,圖片和css檔案無法訪問 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { proxy_pass http://localhost:5000; } location ~ .*\.(js|css)?$ { proxy_pass http://localhost:5000; } #禁止訪問的檔案或目錄 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; } #一鍵申請SSL證書驗證目錄相關設定 location ~ \.well-known{ allow all; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log off; access_log /dev/null; } location ~ .*\.(js|css)?$ { expires 12h; error_log off; access_log /dev/null; } access_log /www/wwwlogs/leaveapp.com.log; error_log /www/wwwlogs/leaveapp.com.error.log; }
參考:asp.net core linux nginx部署
複製釋出檔案到網站目錄
在建立網站的時候,寶塔會建立網路目錄,在/www/wwwroot目錄下,這裡建立了leaveapp目錄,把釋出的檔案的publish資料夾裡面的內容全部複製到leaveapp目錄下。可以通過寶塔面板把壓縮的檔案直接上傳到leaveapp目錄,還可以通過複製貼上方式先複製到虛擬機器的桌面,再移動到leaveapp目錄。unzip解壓,最終把publish資料夾的內容複製到leaveapp目錄下。 複製完成後,配置許可權:
chattr -i .user.ini //如果不刪除這個檔案,無法配置許可權
chmod -R 755 leaveapp //配置許可權
chown -R www:www leaveapp//更改所有者
vim appsettings.json //修改資料庫連結,第三步已經建立好的。
System.Drawing.Common問題
由於使用了驗證碼,在釋出前,在web專案中引用System.Drawing.Common nuget包,在ubuntu中安裝libgdiplus。
sudo apt-get -f install libgdiplus
在Ubuntu中執行專案
cd /www/wwwroot/leaveapp
dotnet leaverecordapp.dll
專案啟動後,在內外網都能夠訪問了
配置守護程序
上面執行專案,一關閉命令終端,程式就停止運行了。微軟官方文件配置了服務,按照官方文件,建立kestrel-helloapp.service服務。
[Unit]
Description=Leave Record App
[Service]
WorkingDirectory=/www/wwwroot/leaveapp
ExecStart=/usr/bin/dotnet /www/wwwroot/leaveapp/LeaveRecordApp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=leaverecordapp
User=www
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
啟用服務:
sudo systemctl enable kestrel-helloapp.service
啟動服務:
sudo systemctl start kestrel-helloapp.service
檢視服務狀態:
sudo systemctl status kestrel-helloapp.service
檢視服務執行日誌:
sudo journalctl -fu kestrel-helloapp.service
這時候網站就可以正常運行了。
下午又在自己伺服器上嘗試把WTM部署在CentOS伺服器上,也是沒有問題,列一些參考地址吧:
centos System.Drawing 解決驗證碼問題
.Net Core 使用 System.Drawing.Common 部署到CentOS上遇到的問題
CentOS下asp.net core 更改埠,預設asp.net core埠為5000,由於伺服器上已經有asp.net core網站,埠被佔用,需要更改埠,最簡單的方法是在appsettings.json中加兩行配置:
"urls": "http://localhost:6000;http://localhost:6001",
"server.urls": "http://localhost:6000;http://localhost:6001",
原因可以參考這篇文章:
asp.net core 更改埠
wtm還是很優秀的,一兩天完成一個小應用沒問題