第25天:部屬與發布(IIS 與 Azure)
課程簡介
在今天的課程中,我們將學習如何將 ASP.NET Core 應用程式部署到兩個常見的生產環境:IIS(Internet Information Services) 和 Azure。這兩者都是熱門的部署平台,適合不同規模和需求的應用程式。IIS 是一個在 Windows 上運行的伺服器,而 Azure 則是 Microsoft 提供的雲端平台,適合雲端應用的快速部署與擴展。
學習目標
- 理解應用程式部署的基本流程
- 學習如何將 ASP.NET Core 應用程式部署到 IIS 伺服器
- 學習如何使用 Azure 部署應用程式
- 掌握在生產環境中常見的問題排查技巧
課程內容
1. 部屬流程概述
無論是在本地或是雲端,應用程式的部署通常會經歷以下步驟:
- 打包應用程式:將應用程式編譯為可以運行的格式,例如將 ASP.NET Core 應用程式編譯為一個可執行檔。
- 配置伺服器環境:設定伺服器以支援 ASP.NET Core,並確保所有必要的服務已啟用。
- 上傳與部署:將應用程式檔案上傳到伺服器,並配置 IIS 或雲端環境來執行它。
- 監控與排錯:在部署完成後,監控應用程式運行狀況,並解決可能出現的問題。
2. 部署到 IIS(Internet Information Services)
步驟 1:安裝 IIS 與 ASP.NET Core Hosting Bundle
要在 IIS 上運行 ASP.NET Core 應用程式,首先需要在伺服器上安裝 IIS 和 ASP.NET Core Hosting Bundle。
- 安裝 IIS:
- 開啟 伺服器管理員。
- 點選 新增角色和功能。
- 選擇 Web 伺服器 (IIS),並依據指引完成安裝。
- 安裝 ASP.NET Core Hosting Bundle:
- 前往 Microsoft 官方下載頁面,下載並安裝適合的 ASP.NET Core Hosting Bundle。
步驟 2:設定 IIS
- 新增網站:
- 開啟 IIS 管理員。
- 右鍵點選 網站,選擇 新增網站。
- 指定網站名稱,並設定實體路徑為應用程式檔案所在的資料夾。
- 選擇適當的 主機名 與 端口,例如
localhost
和80
。
- 應用程式池設置:
- 設定應用程式池為 無受控碼 (No Managed Code),因為 ASP.NET Core 應用程式不需要使用 .NET Framework 管理的 CLR。
- 啟用 ASP.NET Core 模組:
- 確保在 IIS 管理員中已安裝並啟用了 ASP.NET Core 模組,這個模組負責將請求代理到 Kestrel 伺服器(ASP.NET Core 預設內建伺服器)。
步驟 3:部署與測試
- 發行應用程式:
- 在 Visual Studio 中,右鍵點選專案,選擇 發行 (Publish)。
- 選擇 資料夾 發行方式,將應用程式打包為可執行檔。
- 上傳已打包的檔案到指定的 IIS 網站資料夾。
- 測試應用程式:
- 確保網站已啟動,並在瀏覽器中輸入主機名來測試應用程式,例如
http://localhost
。
- 確保網站已啟動,並在瀏覽器中輸入主機名來測試應用程式,例如
3. 部署到 Azure
步驟 1:建立 Azure App Service
Azure App Service 是 Microsoft 的雲端應用平台,它可以輕鬆部署 ASP.NET Core 應用程式,並支援自動擴展與高可用性。
- 登入 Azure 入口網站:Azure Portal。
- 建立 App Service:
- 在 Azure 入口網站上,點選 建立資源,選擇 App Service。
- 填寫應用程式名稱、資源群組、作業系統(選擇 Windows 或 Linux),並選擇定價層。
步驟 2:發行到 Azure
- 在 Visual Studio 發行:
- 在 Visual Studio 中右鍵點選專案,選擇 發行 (Publish)。
- 選擇 Azure App Service (Windows) 或 Azure App Service (Linux)。
- 選擇剛剛建立的 App Service 作為發行目標,並點選 發行。
- 使用 CLI 發行: 如果你不使用 Visual Studio,也可以透過 Azure CLI 進行部署:
1
az webapp up --name your-app-name --resource-group your-resource-group --plan your-app-service-plan
步驟 3:配置 Azure App Service
- 設定環境變數:
- 在 Azure 入口網站中,進入 設定 > 設定值,可新增或修改環境變數。
- 設定自動擴展:
- 在 Azure App Service 的 縮放 頁面,可以設定自動擴展規則,讓應用程式根據流量自動擴展。
步驟 4:測試與監控
- 測試應用程式:
- 完成部署後,直接從 Azure 提供的應用程式網址訪問應用程式,例如
https://your-app-name.azurewebsites.net
。
- 完成部署後,直接從 Azure 提供的應用程式網址訪問應用程式,例如
- 使用 Azure Monitor 監控應用程式:
- Azure 提供了強大的監控功能,可以透過 Azure Monitor 查看應用程式的效能與錯誤日誌,確保應用程式正常運行。
4. 常見問題排查
- HTTP 500 內部伺服器錯誤:這通常是由於應用程式錯誤引起的。可以檢查應用程式日誌,或開啟詳細錯誤訊息來調試。
- 部署後變更未反應:可能是瀏覽器快取問題,清除快取或重新整理頁面可以解決問題。
- 應用程式不回應:檢查應用程式是否正確啟動,並確認伺服器設定與網絡連接正常。
5. 實作練習
- 部署至 IIS:
- 在本地的 Windows 環境中,安裝 IIS 和 ASP.NET Core Hosting Bundle,並嘗試將一個簡單的 ASP.NET Core 應用程式部署到 IIS。
- 驗證網站是否可以正常運行,並測試應用程式的功能。
- 部署至 Azure:
- 註冊一個 Azure 帳號,並使用 Azure App Service 部署 ASP.NET Core 應用程式。
- 配置應用程式設定與自動擴展,確保應用程式在高流量下仍然穩定運行。
- 排查與解決問題:
- 模擬常見的部署問題(例如:應用程式錯誤、設定錯誤),並學習如何透過 IIS 日誌或 Azure Monitor 來排查與解決問題。
教學重點
- 掌握將 ASP.NET Core 應用程式部署到 IIS 和 Azure 的基本流程。
- 了解如何設定 IIS 和 Azure App Service,以確保應用程式能夠正常運行。
- 學會如何排查和解決部署過程中的常見問題,並進行有效的應用程式監控。
在完成本課程後,您將能夠將自己的 ASP.NET Core 應用程式部署到不同的平台,並確保它們在生產環境中穩定運行。
本文章以 CC BY 4.0 授權