天天看點

VisualStudioCode建立的asp.net core項目部署到linux,使用nginx代理

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中做如下修改:

  

VisualStudioCode建立的asp.net core項目部署到linux,使用nginx代理
3、配置nginx:

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為我的項目名)運作項目,如下圖:

VisualStudioCode建立的asp.net core項目部署到linux,使用nginx代理

上面的warn可以忽略。

.net core項目預設監聽端口為5000,代碼中可以在launchSettings.json中修改。

這時,在浏覽器中輸入位址http://XXXXX:8003 就可以了,如下圖(下面是建立.net core mvc 預設站點界面):

VisualStudioCode建立的asp.net core項目部署到linux,使用nginx代理

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

即可。

繼續閱讀