1、準備工作:
a:使用VisualStudioCode建立asp.net core項目,并使用指令“dotnet publish”釋出(可以參考前面兩篇文章)。
如:dotnet publish -c release -o D:\coretest 釋出到D:\coretest檔案夾中,-c 釋出時要使用的配置,預設值是debug。
b:把釋出的 asp.net core項目上傳到linux伺服器上(我的linux的代碼路徑為“/var/wwwroot/netcoretest”)。
c:linux伺服器上安裝.net core sdk。
2、asp.net core代碼注意地方:
由于請求是通過nginx反向代理轉接的,是以使用 Microsoft.AspNetCore.HttpOverrides 包中的轉接頭中間件。
此中間件使用 X-Forwarded-Proto 标頭來更新 Request.Scheme,使重定向 URI 和其他安全政策能夠正常工作。
是以在項目的Startup.cs中做如下修改:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SN3YDN0cTO1gTMtkDO0YDN2ETMxQDMyEDOxAjMtcjM2cjM28CXyEDOxAjMvw1NyYzNyYzLcd2bsJ2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
server {
listen 8003;
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:$server_port; #加上端口,這樣配置,可以防止重定向時端口丢失問題
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
4、在linux伺服器上運作項目:
切換到項目代碼目錄下(我的linux的代碼路徑為“/var/wwwroot/netcoretest”),使用指令“dotnet admin.dll”(admin為我的項目名)運作項目,如下圖:
上面的warn可以忽略。
.net core項目預設監聽端口為5000,代碼中可以在launchSettings.json中修改。
這時,在浏覽器中輸入位址http://XXXXX:8003 就可以了,如下圖(下面是建立.net core mvc 預設站點界面):
5、也可以建一個自定義服務,用于維護.net core項目程序,使項目的開機自動啟動:
a、建立自定義服務:vim /etc/systemd/system/mydotnetcore.service
b、服務代碼内容如下:
[Unit]
Description=dotnet core demo running on linux
[Service]
WorkingDirectory=/var/wwwroot/netcoretest
ExecStart=/usr/bin/dotnet /var/wwwroot/netcoretest/admin.dll
Restart=always
RestartSec= 10
SyslogIdentifier=dotnet core demo
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
c、啟動服務
systemctl start mydotnetcore.service
即可。