[食譜好菜] 使用 IIS Shared Configuration 讓我們不用再一台一台調整 IIS 設定

  • 4149
  • 0
  • IIS
  • 2019-10-29

IIS Shared Configuration 是從 IIS 7.0 開始就有的東西,透過共享的機制,讓 IIS 的設定可以在一台調整,然後同時套用到其他台,對我們需要管理多台 IIS 伺服器的工作有相當大的幫助。

首先,至少安排兩台 IIS 伺服器,這樣我們才看得出差異,接著選定要以哪一台 IIS 的設定為主,找到 Management -> Shared Configuration 雙擊兩下點開它。

Export Configuration...

再來找到 Export Configuration... 點下去,在 Physical path 指定輸出設定檔的位置,它可以是本機路徑或是 UNC 路徑,如果使用的是 UNC 路徑記得點擊 Connect As... 指定有存取權限的帳號,然後在 Encryption Keys 區塊輸入加密的密碼。

在指定的輸出位置就可以看到以下這三個檔案 administration.configapplicationHost.configconfigEncKeyAes.key

Enable shared configuration

在其他要參照共享設定檔的 IIS 上 Enable shared configuration,指定剛剛的輸出位置,如果輸出的位置是 UNC 路徑,記得在下方填入有存取權限的 User namePassword,接著按「套用」。

然後會跳出兩個視窗訊息提醒我們說:

  1. 現在的 IIS 設定值及加密鑰將會被備份在本機當前的設定資料夾,如果想要回復這些設定值跟加密鑰只需關閉 Share Configuration 即可。
  2. IIS 管理員必須被重啟才能讀到變更後的設定值。

不要漏掉輸出設定檔的那一台也需要開啟 Shared Configuration

執行 iisreset

理論上這樣做完之後,設定應該就會生效了,但是你知道、我知道、獨眼龍也知道,做設定檔變更最好還是將服務重啟,以確保設定能正常地被套用。

試著增加一個 testwebsite 站台

原本 B 伺服器跟 A 伺服器一樣都是 4 個站台

我試著在 A 伺服器增加一個 testwebsite 的站台

B 伺服器也會跟著新增一個 testwebsite 站台

限制

Shared Configuration 也不是沒有什麼限制,稍早看到 Export configuration 輸出的檔案之中與設定相關的檔案是 administration.config 及 applicationHost.config,也就是說不在這兩個檔案之中的設定值是不會被 Shared 的,像是個別網站及應用程式的 Web.Config、SSL 憑證...等等。

回復前一次的設定值

如果我們後悔了,需要回復之前的設定值該怎麼做?我們只需要取消 Enable shared configuration 的勾選再按「套用」就可以了。

但是接下來跳出來的這個視窗千萬不要選錯了,它的訊息是告訴我們按「是」的話,是直接用現在的設定值 overwrite 掉已經存在的設定值及加密鑰,聰明的你如我應該意識到在之前的設定過程不是才幫我們把原來的設定值備份在本機當前的設定資料夾? 那現在要把它 overwrite 掉豈不是原來的設定值就不見了? 是的!沒錯! 所以我們要選「否」原先的設定值才會回來,這點一定要記住。

先前的 IIS 設定值回來嘍!

參考資料

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學