先在你的 Linux 伺服器上建立資料夾,這裡示範命名為 myweb。記得設定正確的資料夾權限,一般預設使用 0755。0755 對應的權限為 rwxr-xr-x:
其他使用者:僅具備讀取與執行權限(r-x)
擁有者(你的使用者帳號):完整的讀取、寫入與執行權限(rwx)
群組成員:僅具備讀取與執行權限(r-x)
接著在 Visual Studio 中發布專案。先切換至「發行」組態並完成編譯,再對專案按右鍵選擇發布。發布作業完成後,透過 FTP 軟體將發布資料夾內所有檔案,複製到剛才建立的 myweb 目錄中。
cd /usr/myweb
檔案移動完畢後,執行下方指令將應用程式以背景程序方式啟動。採用背景執行的好處是,即便關閉遠端 Linux SSH 連線視窗,程式仍會持續運作。
sudo nohup dotnet yourprogramname.dll &Code language: CSS (css)
指令末尾的 & 符號是背景執行的關鍵。若省略此符號,程式會在前景執行,一旦關閉終端機或是按下 Ctrl + C,程式就會立刻停止。
這裡提供實際使用範例:sudo nohup dotnet WebSite.dll &
額外重要提醒
發布前請先設定連接埠,開啟 .NET MVC 專案裡的 appsettings.json 檔案。
請參考以下範例新增組態內容:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://0.0.0.0:8080"
}
}
}
}Code language: JSON / JSON with Comments (json)
此組態會開放 8080 連接埠,接受來自任意 IP 位址的連線,你也能搭配 Nginx 實現反向代理,在同一台 Linux 伺服器上架設多個不同網域。
如果僅使用 Nginx 作為反向代理,建議不用開放防火牆連接埠,並將服務綁定至本機位址,設定方式如下:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://127.0.0.1:8080"
}
}
}
}Code language: JSON / JSON with Comments (json)
套用這組設定後,應用程式只接受本機請求,並拒絕所有外部直接連線。
本次目標是透過網址 abc.com/hello 存取此應用程式。
接著執行 sudo nohup dotnet WebSite.dll & 啟動應用程式。
可使用下列指令檢查程式是否正常執行:ps -aux | grep WebSite.dll
若畫面出現對應的程序資訊,就代表服務已順利啟動。
設定 Nginx 反向代理(不需要此功能可跳過本段落)
若你的主機已安裝 Nginx,主要組態檔會位於 /etc/nginx/nginx.conf
接著編輯站台組態檔,路徑為 /etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/web/xxxx;
index index.html index.htm index.nginx-debian.html;
server_name _;
# 主站
location / {
try_files $uri $uri/ =404;
}
# ✅ 重點:將 /hello 轉導至 .NET 服務
location /hello {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Code language: PHP (php)
儲存修改後,重新啟動 Nginx
sudo nginx -t
sudo systemctl restart nginx
接下來重新啟動 .NET MVC 應用程式
先執行 ps -aux | grep WebSite.dll 找出正在執行的程序,並記下 sudo 程序列最前方的 PID 編號
透過該 PID 編號終止目前執行中的 .NET MVC 執行個體。
使用這行指令重新啟動服務:sudo nohup dotnet 你的專案.dll –urls http://127.0.0.1:8080 > /dev/null 2>&1 &
接下來進行整體功能測試
重新啟動 Nginx
執行下方指令:
bash
輸入指令:
sudo systemctl restart nginx
.NET 服務監聽 8080 連接埠
使用下列指令確認 .NET 服務運作狀態:
bash
輸入指令:
curl http://127.0.0.1:8080
Code language: JavaScript (javascript)
如果終端機畫面輸出原始 HTML 內容,就代表運作正常。
