不知道大家有沒有遇過一些鬼打牆的場景,明明就沒有動過設定,結果設定自己跑掉了!這個地方本來部署的時候設定值是 A,結果出了問題回來一看,咦,是誰!打開我心門...喔不是,我是說是誰把設定改成 B了!
為了避免這種無解的情況,讓我們這篇來聊聊關於設定監聽的這件事,還有關於 IIS 的 config 的相關備份機制,當問題發生的時候,我們怎麼樣會有過往可用設定來比較。
雖然是 IIS 的 Config Auditing,其實是靠著 Event Viewer 留下紀錄,首先我們先開啟 Event Viewer:
依照畫面上的路徑顯示,一路展開到 Windows 底下,並選取 IIS-Configuration,展開。
在從未設定過的時候,中間的內容畫面應該如我上面截圖一樣空白,什麼都看不到。這邊我們在 Operational 上面點右鍵,這個功能是需要被開啟的,選擇 Enable Log,好地,這樣就把功能開起來了。
我們馬上來試驗一下,用上篇的 Configuration Editor 我改了一個設定,就可以看到它在這邊出現:
畫線的地方是可以特別注意的:首先先看下半,會記錄下該次更改發生的時間、更改時候登入的帳號,更改的來源。這些對於被程式自動更改的項目很有用,能夠幫你釐清它到底是被誰改的、又是什麼時候。上半的說明格裡則列出了詳細被改的內容,包含是哪個網站、改了什麼值等等,更進一步釐清狀況。
只要你開了這個設定,之後設定檔跑掉基本就能來這邊查找,做一下小偵探,誰是兇手。
另外我們來看一下,如果你沒開這個,那我們有其他機會能夠知道過往的設定嗎?有的,在 application host 的層級,我們一樣使用 Configuration Editor,打開 system.applicationHost/ configHistory 的這個路徑。
這邊的設定其實相當一目瞭然,是否允許設定檔的歷史紀錄,最多儲存多少個歷史檔案,歷史檔案儲存的位置,預設通常會在 %SYSTEMDRIVE%\inetpub\history,每隔多久記一個歷史檔案。
當你真的需要使用備份,回復到過往的設定的時候,除了暴力的剪下貼上,也可以透過 appcmd 的方式,是 IIS 提供的命令列工具。更多的指令或介紹我們留待後篇,這邊我們先簡單講一下透過 appcmd 單純還原備份這件事。
好地,按照以上步驟就能對被備份的檔案做到復原。另外提個以前也是我做過時紀錄的文章,這邊我就不重提,提供連結給大家參考:
【IIS】搬設全部IIS的網站及設定至另一台機器上 - 雜食性的貓 - Medium
上面這篇文章指的情景是當你只需要 site 和 app pool 的設定的時候,可以參這這篇去做指令搬遷。基本上設定搬遷可以的話都建議不要用一些笨方法向照著介面設,越多人工,越多失誤。能夠讓指令處理的都盡量讓指令處理,減少人為疏失。
大致上今天的內容就到這裡,介紹了如何去開啟 IIS 設定檔的變更監控,與如何設定備份、利用備份的設定檔做還原,在有多台機器或比較複雜的運用場景中都是很實用的操作。