2021年12月30日 星期四

ASP.NET Core 6.0 Blazor Server 部署到 IIS

ASP.NET Core 6.0 Blazor Server 部署到 IIS

在這裡,假設遠端的 Windows Server 2022 已經預設安裝完成(採用桌面體驗模式來安裝),接下來將要進行 IIS 的安裝與設定

安裝 IIS 服務

  • 請開啟 [伺服器管理員] 應用程式

  • 在 [伺服器管理員] > [儀錶板] 視窗內,點選 [新增角色與功能] 項目

    Windows Server 2022 伺服器管理員

  • 此時,[新增角色及功能精靈] 對話窗將會顯示出來,並且標示現在進度為 [在您開始前] (可以查看左上方的文字內容)

    新增角色及功能精靈

  • 在此對話窗下,點選 [下一步] 按鈕

  • 現在的進度為 [選取安裝類型]

  • 在此選擇預設的 [角色形或功能型安裝] 選項

  • 在此對話窗下,點選 [下一步] 按鈕

  • 現在的進度為 [選取目的地伺服器]

  • 現在需要 [選取在上面安裝角色與功能的伺服器與硬碟],在此將會選擇預設顯示的項目,也就是本機電腦

    選取目的地伺服器

  • 在此對話窗下,點選 [下一步] 按鈕

  • 現在的進度為 [選取伺服器角色]

  • 在中間的所有角色清單中,勾選 [網頁伺服器 (IIS)] 這個選項

  • 此時,將會彈出與顯示新的 [新增角色及功能精靈] 對話窗在螢幕上

  • 請點選右下方的 [新增功能] 按鈕

    確認是否要安裝 網頁伺服器 (IIS)

  • 現在將會回到 [新增角色及功能精靈] 對話窗的 [選取伺服器角色] 的進度內容,從畫面可以看到,對於 [網頁伺服器 (IIS)] 這個項目已經勾選起來了

    已經勾選了 網頁伺服器 (IIS)

  • 在此對話窗下,點選 [下一步] 按鈕

  • 現在的進度為 [選取功能]

  • 在此對話窗下,點選 [下一步] 按鈕

  • 現在的進度為 [網頁伺服器角色 (IIS)]

    網頁伺服器角色 (IIS) 安裝進度

  • 在此對話窗下,點選 [下一步] 按鈕

  • 現在的進度為 [選取角色服務]

  • 在中間區域顯示 [選取要針對 網頁伺服器 (IIS) 安裝的角色服務] 提示訊息

  • 請在中間區域的 [角色服務] 清單中,找到並且勾選 [網頁伺服器] > [應用程式開發] > [WebSocket 通訊協定] 項目

    勾選安裝 WebSocket 通訊協定

  • 在此對話窗下,點選 [下一步] 按鈕

  • 現在的進度為 [確認安裝選項]

    最後確認此次安裝的內容

  • 在此對話窗下,點選 [安裝] 按鈕

  • 現在的進度為 [安裝進度]

    檢視安裝進路

  • 一旦安裝完成之後,點選右下角的 [關閉] 按鈕,結束此次的 [新增角色及功能精靈] 作業

  • 在此 Windows Server 2022 下,使用檔案總管在根目錄下建立一個 SQLite 目錄,該資料夾是要用來儲存 SQLite 資料庫之用

安裝 .NET Core 裝載套件組合

  • 使用此連結,直接下載 .NET Core 裝載套件組合(目前版本)安裝程式
  • 下載完成後,請將該檔案安裝到有使用 IIS 的 Windows Server 2022 上

設定改用用 SQLite 資料庫

  • 打開 Blazor Server 專案
  • 在專案根目錄下找到 [appsettings.json] 檔案,並且開啟這個檔案
  • 找到 [DefaultConnection] 項目,將其值設定為 Data Source=C:/SQLite/MyDatabase.db
  • 底下將是完成後的 [appsettings.json] 檔案內容
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=C:/SQLite/MyDatabase.db"
  },
  "AllowedHosts": "*"
}

安裝 SQLite NuGet 套件

  • 滑鼠右擊專案節點

  • 從彈出功能表點選 [管理 NuGet 套件]

  • 當出現 [NuGet: Blogger] 視窗,點選 [瀏覽] 分頁頁次

  • 在文字輸入盒輸入 Microsoft.EntityFrameworkCore.Sqlite

  • 找到這個套件,點選並且安裝這個套件

    Microsoft.EntityFrameworkCore.Sqlite

  • 安裝完成後,準備修正程式碼,改用 SQLite 資料庫

通知 Entity Framework Core 要改用 SQLite 資料庫

  • 在專案根目錄下找到並且打開 [Program.cs] 檔案
  • 找到 builder.Services.AddDbContext 文字
  • 將此敘述改為底下 C# 程式碼
builder.Services.AddDbContext<BlogDbContext>(
    options =>
    options.UseSqlite(connectionString), ServiceLifetime.Transient);

準備發布 Blazor Server 專案的內容

  • 打開 Blazor Server 專案

  • 使用滑鼠右檢點選專案節點

  • 從彈出功能表中點選 [發佈] 選項

    選擇發佈功能,準備進行發佈作業

  • 現在 [發佈對話窗] 出現在螢幕上

  • 請點選 [資料夾] 這個選項,代表將您的應用程式發佈到本機資料夾或檔案共用

    發佈對話窗

  • 在此對話窗下,點選 [下一步] 按鈕

  • 現在需要提供本機或網路資料夾的路徑,在此將先使用預設路徑名稱

    提供本機或網路資料夾的路徑

  • 在此對話窗下,點選 [完成] 按鈕

  • 現在回到了 Visual Studio 2022 下

  • 在此將會看到 [Blogger: 發佈] 視窗

  • 在此視窗的右上方,點選 [發佈] 按鈕

    應用程式 發佈視窗

  • 一旦成功發佈完成,將會可以從 [輸出] 視窗中看到有 1 個專案成功發布的訊息

  • 此時,在發佈視窗中找到 [目標位置] 這個欄位,點選該欄位名稱右方的藍色文字

    成功發佈完成

  • 現在將會看到檔案總管自動顯示出來

  • 該檔案總綰的目錄內的檔案,就是準備要部署到遠端 IIS 上的檔案

  • 請將這些檔案複製起來

    成功發佈完成

  • 現在使用遠端桌面工具,連線到遠端 IIS 伺服器上

  • 打開此 IIS 伺服器上的 [檔案總管] 應用程式

  • 切換到 C:\inetpub\wwwroot 路徑下

    伺服器上的 C:\inetpub\wwwroot 目錄

  • 將剛剛產生出來的發佈所有檔案,複製到這個目錄下

    將專案藥部署檔案複製到伺服器上的 C:\inetpub\wwwroot 目錄

  • 在伺服器上找到 [Internet Information Services (IIS) 管理員] 應用程式圖示

  • 開啟這個 [Internet Information Services (IIS) 管理員] 應用程式

  • 在 [Internet Information Services (IIS) 管理員] 視窗左方的 [連線] 面板中,找到並且點遠 [應用程式集區] 這個項目

  • 在該視窗的中間區域將會看 [DefaultAppPool] 這個項目

    找到 DefaultAppPool

  • 滑鼠雙擊 [DefaultAppPool] 這個項目

  • 當出現 [編輯應用程式集區] 視窗

  • 點選 [.NET CLR 版本] 標題下方的下拉選單

  • 切換選擇,設定為 [沒有受控碼] 這個選項

    編輯應用程式集區

  • 點選下方 [確定] 按鈕,完成應用程式集區的變更作業

  • 當回到 [Internet Information Services (IIS) 管理員] 的 [應用程式集區] 畫面下

  • 找到右方動作面板

  • 點選 [停止] 按鈕

  • 一定該應用程式集區成功停止後

  • 點選 [啟動] 按鈕

    應用程式集區

進行測試

  • 開啟瀏覽器,在位址列上輸入剛剛發佈的 IIS 服務端點網址
  • 現在,便可以看到與使用這個網站服務了

 





沒有留言:

張貼留言