Linux 使用 Apache 部屬 ASP.NET Core MVC 網站

 今天想要轉換一下linux平台部屬程式,剛好來記錄一下部署流程:

1. 安裝 Apache

sudo apt update

sudo apt install apache2 -y


確認 Apache 運行:

sudo systemctl status apache2

打開瀏覽器輸入 http://伺服器IP,應該可以看到 Apache 的預設頁面。


2. 測試靜態網頁

/var/www/html 放置一個 index.html

echo "<h1>Hello Apache!</h1>" | sudo tee /var/www/html/index.html

重新整理瀏覽器,即可看到自訂的靜態頁面。

3. 安裝 .NET SDK

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

sudo dpkg -i packages-microsoft-prod.deb

sudo apt-get update

sudo apt-get install -y dotnet-sdk-8.0


檢查是否安裝成功:

dotnet --version


4. 建立 ASP.NET Core MVC 專案

dotnet new mvc -o MyWebApp

cd MyWebApp

dotnet run


5. 配置 Apache 反向代理

sudo a2enmod proxy

sudo a2enmod proxy_http

新增設定檔 /etc/apache2/sites-available/mywebapp.conf:

<VirtualHost *:8080>
    ServerName 你的ip

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/

    ErrorLog ${APACHE_LOG_DIR}/mywebapp_error.log
    CustomLog ${APACHE_LOG_DIR}/mywebapp_access.log combined
</VirtualHost>

echo "Listen 8080" | sudo tee -a /etc/apache2/ports.conf

啟用站點:
sudo a2ensite mywebapp.conf
sudo systemctl restart apache2

6. 測試網站

靜態網頁 → http://你的ip

ASP.NET Core 網頁 → http://你的ip:8080/


7. 進階:使用 systemd 管理 .NET 應用程式

要讓 .NET App 在背景執行並隨開機啟動,可以建立一個 systemd service

建立檔案 /etc/systemd/system/mywebapp.service

[Unit]

Description=ASP.NET Core Web App

After=network.target


[Service]

WorkingDirectory=/var/www/MyWebApp

ExecStart=/usr/bin/dotnet /var/www/MyWebApp/MyWebApp.dll

Restart=always

RestartSec=10

SyslogIdentifier=mywebapp

User=www-data

Environment=ASPNETCORE_ENVIRONMENT=Production


[Install]

WantedBy=multi-user.target


啟用並啟動:
sudo systemctl enable mywebapp
sudo systemctl start mywebapp

確認服務狀態:
sudo systemctl status mywebapp

留言

熱門文章