背景是這樣的,公司有兩台服務器,平時一台備用,另一台做為主生產機器。當有大量補丁或者安裝什么東西需要重啟的時候,交其中一台直接關掉IIS,然后重啟即可,此時另一台負責處理用戶請求。
之前一台服務器一個網站的時候,發布都是遠程上去,然后復制開發機器pubish目錄下的文件過去。這種情況有幾個弊端:
- 每次復制過去的文件量巨大。
- web.config難以把控,雖然使用Release和Debug來控制連接字符串,但是,必然不如web.config來得正規。
- 每次要登陸遠程機器,有時候剪切板無法共享,需要使用驅動器共享來復制文件,然后還要解壓之類的操作。容易出現問題。
使用web deploy發布的話,帶來了哪些改變:
- 不再需要遠程登陸服務器,減少出錯機率。多台服務器發布時效率高。
- 文件量明顯減少。
- 控制vs在發布前都提交一個svn版本,使用svn作為備份,下次出問題時,只需要回滾到上一個版本,然后進行發布即可。
- 多個網站操作方便,不需要多個文件夾來回切換。
- 不知道是不是錯覺,我感覺發布的速度快很多。
使用的方法
環境需要:
- web platform installer。(WEB PI,其實是用來安裝web deploy用的,但是我沒用,我直接在官網下載的)
- 安裝【管理服務】
- 安裝web deploy。
操作:
- 如果有WEB PI,則直接使用它先安裝WEB DEPLOY 3.5,然后再安裝WEB DEPLOY 3.6。(一定要這樣,不然會出現404等問題,原因是3.6里面有好多組件由3.5提供的)。
- 如果沒有WEB PI,或者不想用它安裝,就直接搜索微軟官網的WEB DEPLOY3.5和3.6,然后分別安裝。
- 檢測系統【服務】中的[web management….]有沒有打開,沒有打開的話,請打開。
- 在IIS中,選擇服務器結點,然后在內容里面打開【管理服務】,右邊操作欄里面停止服務,把【啟用遠程連接】前面復選框選上。然后選在下面的使用windows憑據或IIS用戶。點右邊的應用,然后啟動服務。
- 選中你要發布的網站的站點節點,在內容里面打開【IIS管理器權限】,進入之后,右擊鼠標,選【允許用戶】,然后可以輸入IIS用戶,也可以輸入windows的用戶。這個用戶將在vs里面被作為遠程發布的憑證。
- 打開vs,右擊項目名,點發布,輸入剛剛那台服務器的IP地址,輸入用戶名和密碼,在【站點名稱】的地點輸入服務器中對應網站的網站名稱,如果是虛擬目錄的二級站點,請將名稱用/隔開。
- 然后點擊vs發布中的【驗證連接】,如果成功,則ok。不成功,查看問題,百度一般是百不出答案的,這時時候,google吧。數據庫連接字符串在發布的界面記得改啊~~~~~