跳至主要內容

在 Ubuntu 建構 ASP.NET Core 6 開發環境

Pamis Wang大约 2 分鐘後端ASP.NET CoreASP.NET Core 6APINginxKestrel

作業系統安裝

[[install_ubuntu_22.04]]

開發環境安裝

盡量照順序做

[ 安裝 網頁伺服器 Nginx ]

sudo apt update
sudo apt install nginx

[ 安裝 .NET 6 SDK ]

sudo apt-get update
sudo apt-get install -y dotnet-sdk-6.0

透過 Kestrel 啟動專案服務

指定專案發佈目錄並輸入指令

dotnet [project_name].dll

預設會以 http://localhost:5000open in new window 開啟

[ Nginx 設定 ]

以 Nginx 設定反向代理 將 HTTP 要求轉送至您的 ASP.NETopen in new window Core 應用程式

Nginx 設定可以至 /etc/nginx/site-available/ 這個資料夾內的 default 進行設定,
通常一台機器內若有架設多個網站,可以利用多個設定檔方便區分不同網域或服務。

設定檔的路徑,建議先將 default 另存一個 default_old

/etc/nginx/sites-available/default

參考 MSDN 官方的設定檔

server {
    listen        80;
    server_name   example.com *.example.com;
    location / {
        proxy_pass         http://127.0.0.1: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;
    }
}

設定完成後,需要將這個設定檔連結至 site-enabled

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

確認 Nginx 是否連接成功

sudo nginx -t

得到這個消息後便可重啟 Nginx

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重啟 Nginx

sudo service nginx restart

[ Kestrel 建立服務 ]

建立服務定義檔

sudo nano /etc/systemd/system/kestrel.service

服務定義檔內容

[Unit]
Description=Example .NET Web API App running on Ubuntu

[Service]
# 指向專案目錄
WorkingDirectory=/home/pamis/DEV_API
# 指向專案執行檔案
ExecStart=/usr/bin/dotnet /home/pamis/DEV_API/DEV_API.dll
# 指向專案執行檔案 並指定 位址與埠號
# ExecStart=/usr/bin/dotnet /home/pamis/DEV_API/DEV_API.dll --url http://0.0.0.0:5000
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
# 管理服務的使用者
User=root
# User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

設好服務後註冊並啟動服務

設好 kestrel.service 後註冊並啟動服務

sudo systemctl enable kestrel.service
sudo systemctl start kestrel.service
sudo systemctl status kestrel.service

參考資料

[ 在 Linux 上使用 Nginx 裝載 ASP.NETopen in new window Core ]

https://docs.microsoft.com/zh-tw/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-6.0open in new window

[ 在 Ubuntu 上安裝 .NET SDK ]

https://docs.microsoft.com/zh-tw/dotnet/core/install/linux-ubuntuopen in new window

[ASP.NETopen in new window Core + Nginx on CentOS 安裝筆記]

https://blog.darkthread.net/blog/aspnetcore-with-nginx/open in new window

上次編輯於:
貢獻者: pamis,Pamis Wang