DotNetCore 結合 Nginx 將網站部署到阿里雲
基礎環境配置#
域名和伺服器請先自行購買
基於雲伺服器ECS建立一個應用例項,選擇系統映象為Ubuntu 16.04,在本機通過SSH進行遠端連線,並進行相關配置
Copyssh root@http://39.108.48.203/
sudo apt-get update
sudp apt-get upgrade
sudo apt-get autoremove
sudo apt-get clean
Nginx 配置#
Copysudo apt-get install nginx
sudo service nginx start
# 備份原始配置檔案
sudo cp /etc/nginx/sites-available/default etc/nginx/sites-available/default.bak
sudo vim /etc/nginx/sites-available/default
配置 default 檔案,如下所示
Copyserver {
listen 80;
server_name example.com *.example.com;
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;
}
}
檢測配置並更新
Copysudo nginx -t
sudo nginx -s reload
sudo service nginx stop
sudo service nginx start
安裝 DotNetCore
Copywget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo add-apt-repository universe sudo apt-get update sudo apt-get install apt-transport-https sudo apt-get update sudo apt-get install dotnet-sdk-3.1
請參考官網最新安裝說明:.NetCore Download
程式打包#
開啟VisualStudio2017右鍵要釋出的專案,點選publish,並參考下圖進行相關配置。
點選Save按鈕並執行釋出操作。然後將 publish 資料夾上傳至伺服器相應位置,上傳成功後執行
Copydotnet run app.dll
或者通過命令列打包釋出
Copydotnet publish -c release
dotnet publish -c release -r ubuntu.18.04-x64
如果不出意外的,這個時候,你就可以通過 IP 或者 你的網站域名來進行訪問了。
建立守護程序#
執行上述操作之後,我們的程式還是不能正在長時間執行,因此我們需要通過守護程序來管理我們的網站
Copysudo apt-get install supervisor
sudo vim /ect/supervisor/conf.d/helloworld.conf
配置 website.conf 檔案
Copy[program:HelloWebApp]
command=/usr/bin/dotnet helloworld.dll ;要執行的命令
directory=/home/hippie/helloworld/bin/release/netcoreapp3.1/publish ;命令執行的目錄
environment=ASPNETCORE__ENVIRONMENT=Production ;環境變數
user=root ;程序執行的使用者身份
stopsignal=INT
autostart=true ;是否自動啟動
autorestart=true ;是否自動重啟
startsecs=1 ;自動重啟間隔
stderr_logfile=/var/log/helloworld.err.log ;標準錯誤日誌
stdout_logfile=/var/log/helloworld.out.log ;標準輸出日誌
這個時候,我們執行下述命令啟動守護程序
Copysudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf
# 關閉所有服務
sudo supervisorctl shutdown
# 檢視狀態
sudo supervisorctl status
sudo service supervisor start/stop
# 檢視指定埠對應程式
netstat -ap | grep 5000
# 關閉指定埠對應程式
kill -9 PID
好了,這個時候你可以嘗試關閉遠端連線進行網站訪問,如果能正常訪問的話,說明你的配置已經起作用了.
配置 HTTPS#
配置 HTTPS 需要使用證書,對應的有免費和收費版,我這裡使用的是 免費版本Certbot,直接執行下述命令即可:
Copysudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx
sudo certbot --nginx
# sudo certbot renew --dry-run
sudo ufw allow https
sudo systemctl restart nginx
- linux-package-manager-ubuntu-1804
- Host ASP.NET Core on Linux with Nginx
- ASP.NET Core Linux下為 dotnet 建立守護程序(必備知識)
基礎環境配置#
域名和伺服器請先自行購買
基於雲伺服器ECS建立一個應用例項,選擇系統映象為Ubuntu 16.04,在本機通過SSH進行遠端連線,並進行相關配置
Copyssh root@http://39.108.48.203/
sudo apt-get update
sudp apt-get upgrade
sudo apt-get autoremove
sudo apt-get clean
Nginx 配置#
Copysudo apt-get install nginx
sudo service nginx start
# 備份原始配置檔案
sudo cp /etc/nginx/sites-available/default etc/nginx/sites-available/default.bak
sudo vim /etc/nginx/sites-available/default
配置 default 檔案,如下所示
Copyserver {
listen 80;
server_name example.com *.example.com;
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;
}
}
檢測配置並更新
Copysudo nginx -t
sudo nginx -s reload
sudo service nginx stop
sudo service nginx start
安裝 DotNetCore
Copywget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1
請參考官網最新安裝說明:.NetCore Download
程式打包#
開啟VisualStudio2017右鍵要釋出的專案,點選publish,並參考下圖進行相關配置。
點選Save按鈕並執行釋出操作。然後將 publish 資料夾上傳至伺服器相應位置,上傳成功後執行
Copydotnet run app.dll
或者通過命令列打包釋出
Copydotnet publish -c release
dotnet publish -c release -r ubuntu.18.04-x64
如果不出意外的,這個時候,你就可以通過 IP 或者 你的網站域名來進行訪問了。
建立守護程序#
執行上述操作之後,我們的程式還是不能正在長時間執行,因此我們需要通過守護程序來管理我們的網站
Copysudo apt-get install supervisor
sudo vim /ect/supervisor/conf.d/helloworld.conf
配置 website.conf 檔案
Copy[program:HelloWebApp]
command=/usr/bin/dotnet helloworld.dll ;要執行的命令
directory=/home/hippie/helloworld/bin/release/netcoreapp3.1/publish ;命令執行的目錄
environment=ASPNETCORE__ENVIRONMENT=Production ;環境變數
user=root ;程序執行的使用者身份
stopsignal=INT
autostart=true ;是否自動啟動
autorestart=true ;是否自動重啟
startsecs=1 ;自動重啟間隔
stderr_logfile=/var/log/helloworld.err.log ;標準錯誤日誌
stdout_logfile=/var/log/helloworld.out.log ;標準輸出日誌
這個時候,我們執行下述命令啟動守護程序
Copysudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf
# 關閉所有服務
sudo supervisorctl shutdown
# 檢視狀態
sudo supervisorctl status
sudo service supervisor start/stop
# 檢視指定埠對應程式
netstat -ap | grep 5000
# 關閉指定埠對應程式
kill -9 PID
好了,這個時候你可以嘗試關閉遠端連線進行網站訪問,如果能正常訪問的話,說明你的配置已經起作用了.
配置 HTTPS#
配置 HTTPS 需要使用證書,對應的有免費和收費版,我這裡使用的是 免費版本Certbot,直接執行下述命令即可:
Copysudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx
sudo certbot --nginx
# sudo certbot renew --dry-run
sudo ufw allow https
sudo systemctl restart nginx