在使用 IIS 6 時,TigerLin 是用 Adsutil.vbs 來管理整個 IIS 的運作,讓一些瑣碎的工作都可快速的進行。過年期間在研究 IIS 7 的時候發現 Adsutil.vbs 已經無法使用了,到 Technet 上看了一下,看到了最新的指令管理工具是 Appcmd,過年閒的發慌剛好可以來研究一下~ 這篇文章也算是 TigerLin 當作日後方便查閱的筆記~^^
在使用 IIS 6 時,TigerLin 是用 Adsutil.vbs 來管理整個 IIS 的運作,讓一些瑣碎的工作都可快速的進行。過年期間在研究 IIS 7 的時候發現 Adsutil.vbs 已經無法使用了,到 Technet 上看了一下,看到了最新的指令管理工具是 Appcmd,過年閒的發慌剛好可以來研究一下~ 這篇文章也算是 TigerLin 當作日後方便查閱的筆記~^^
Appcmd 可以管理的物件如下:
- SITE 管理虛擬站台
- APP 管理應用程式
- VDIR 管理虛擬目錄
- APPPOOL 管理應用程式集區
- CONFIG 管理一般設定區段
- WP 管理工作者處理序
- REQUEST 管理 HTTP 要求
- MODULE 管理伺服器模組
- BACKUP 管理伺服器設定備份
- TRACE 使用失敗要求的追蹤記錄
在使用過程中,只要使用 "/?" 參數都有詳細的說明,例如執行 appcmd site /? 就會列出很詳細的說明了
使用案例:新增站台
appcmd add site /name:"My Test site" /id:9 /bindings:http/*:8080: /physicalPath:"d:\@@@@@"
/name - 新增站台的識別名稱
/id - 指定站台的識別元 (如省略將會自動給予一個)
/bindings - 指定係結的資訊
/PhysicalPath - 站台的實體路徑
使用案例:對指定站台設定主機標頭
appcmd set site /site.name:"My Test Site" /bindings:"http://test.ptitas.net:8080"
使用案例:更改站台的識別元
appcmd set site /site.name:"My Test Site" /id:999
這裡要注意,變更識別元之後的站台預設會變成 "stop",要追加以下指令啟動站台
appcmd start site "My Test Web"
這樣看來,Appcmd 的簡單易用還真是不賴,在進行大型佈署時可以用指令批次的方式省下不少的麻煩
這裡 TigerLin 也測試了變更 LOG 格式的方法,語法比 adsutil.vbs 簡單,但測試的過程要把 LOG 的各項屬性找出來費了一點功夫呢~
使用案例:變更指令站台的 W3C Log 格式
首先,將其中一個站台的 LOG 紀錄全部勾選,先以指令找出 Log 相關的區域設定
appcmd list config | findstr log > d:\LogExt.txt
接下來新增一個站台,針對特殊的分析程式 (EX:AWStats) 設定 LOG,再度執行一次剛剛的指令,就會發現有兩個區段,一個很長的就是全選的,另外一個就是依照需求自己設定的。很長的區段 (也就是全部勾選的LOG 欄位) 可看到下列的內容:
<logFile logExtFileFlags="Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, UserAgent, Cookie, Referer, ProtocolVersion, Host, HttpSubStatus” />
經過比對與撰寫後,就可以對站台設定想要的 LOG 格式了 --
appcmd set config /section:sites /[id='9'].logFile.logExtFileFlags:Date,Time,ClientIP,UserName,Method,UriStem,
UriQuery,HttpStatus,BytesSent,UserAgent,Referer,ProtocolVersion
也可將此命令撰寫成一個 Script,以利後續使用~
後記:為什麼要使用命令模式管理
哈~這個是 TigerLin 最常被問到的問題,有介面可用幹嘛還要去搞指令?
舉個例子:某些設定並不是介面可以達成的,就以 SQL SERVER 來說,AWE 模式都要先執行某個預存程序才能啟動。
而從另外一個角度來看則是 "自動化",使用指令就可以編入排程定期執行。
我們可以用指令的方式自動備份 IIS 的組態檔,不用人工進行備份了 (雖然 IIS7 會定時備份,但 TigerLin 習慣每天備份比較不會出差錯)
基於以上的理由,TigerLin 越來越偏好使用指令的方式來設定了,多了解一些指令在未來的應用上會更廣闊的 ^^b
參考連結
使用 Adsutil.vbs 管理指令碼 http://technet.microsoft.com/zh-tw/library/cc781546.aspx
IIS 7.0:Appcmd.exe http://technet.microsoft.com/zh-tw/library/cc772200.aspx