在 Ubuntu 建構 ASP.NET Core 6 開發環境
大约 2 分鐘
作業系統安裝
[[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:5000 開啟
[ Nginx 設定 ]
以 Nginx 設定反向代理 將 HTTP 要求轉送至您的 ASP.NET 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.NET Core ]
https://docs.microsoft.com/zh-tw/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-6.0
[ 在 Ubuntu 上安裝 .NET SDK ]
https://docs.microsoft.com/zh-tw/dotnet/core/install/linux-ubuntu
[ASP.NET Core + Nginx on CentOS 安裝筆記]