[Windows Server]_Web Deploy 部署建置 && non Admin User操作 && 401錯誤bug解除 && 讓WS操作順手的教學

最近都在忙一個APP的Project,是什麼不能講

主要後端架構有用到Windows Server來做,因為Linux要搞會用得有些複雜

 

只好屈就於微軟的淫威之下


因為是運行web service,加上有個coop partner要一起弄

 

所以架設了三大功能

 

1.Web Deploy,方便VISUAL STUDIO直接單鍵發行專案

2.RDP

3.WebDav

 

 

2,3跟著教學做一切OK…

只是WebDeploy這個部分…好挫折阿

 

繁體中文的文獻都是利用Administrator來做示範(例如這篇:http://www.dotblogs.com.tw/terrychuang/archive/2011/11/11/56958.aspx),

並沒有非Admin之外的user,而且微軟官方以及其他文件有分幾個方法,我都做了

但部屬的時候還是送我401錯誤…

 

找了4個多小時才找到解法,特此翻成中文的做法

 

其實達成非admin user的web deploy有以下兩種做法

1.透過IIS管理員權限,以及管理服務委派(在安裝StandAlong 的 Web Deploy 3.0的時候請記得在安裝過程中使用完整安裝,要不然會找不到這個東西 參照http://serverfault.com/questions/128468/can-not-see-manage-service-delegations-in-iis-7)的方式去做,加上部屬授權。這個方式有點瑣碎,而且步驟較多…

   幾個站台有分享作法(大家的作法大同小異):

http://www.asp.net/web-forms/tutorials/deployment/configuring-server-environments-for-web-deployment/configuring-a-web-server-for-web-deploy-publishing-(web-deploy-handler)

http://blogs.msdn.com/b/amol/archive/2011/02/09/allowing-non-admin-users-to-deploy-web-applications-on-iis-7-using-web-deploy-2-0.aspx

http://www.microsoft.com/taiwan/technet/iis/learn/configure-the-web-deployment-handler.aspx

 

2.透過Web Platform Installer安裝”建議虛擬主機供應商使用的伺服器組態”的組件,加上一點簡單的設定

   比較少人這麼做:

http://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-web-deploy

 

但我不確定這兩個做法是否作其中一種就能夠成功(2012/10/03 我重灌了SV,用第一種方法搭配文末改登錄檔,就可以順暢運行,所以如果用第二種方法不想裝一堆的人可以試試)

因為我是兩種都做(因為遇到401 bug..一直在繞圈圈)…後來把第一種的管理服務委派跟IIS管理員權限等設定全部撤除,只留下第二種”建議虛擬主機供應商使用的伺服器組態”的組件自動設定,還是能夠運作

不過第二種透過伺服器組態設定的方式,其實會幫你另外加很多雜七雜八的(PHP阿~MYSQL阿~…NODE.JS等等),如果不想要這樣的,可以選擇第一種

 

可是不管選擇哪一種,都很可能遇到都設定好了,確定權限ok了,一且都妥當了,但在VS發行的時候仍然送你

錯誤 1 Web 部署工作失敗。(無法連絡遠端代理程式 (URL http://[主機位置]/MSDEPLOYAGENTSERVICE)。請確定目標電腦上已安裝且已啟動遠端代理程式服務。)
確定網站名稱、使用者名稱和密碼正確無誤。如果無法解決問題,請連絡本機或伺服器系統管理員。
錯誤詳細資料:
無法連絡遠端代理程式 (URL http://[主機位置]/MSDEPLOYAGENTSERVICE)。請確定目標電腦上已安裝且已啟動遠端代理程式服務。
收到不支援的回應。回應標頭 ‘MSDeploy.Response’ 為 ”,但需要 ‘v1’。
遠端伺服器傳回一個錯誤: (401) 未經授權。 0 0 [發行名稱]

 

這時你怎麼搞都搞不定,很神奇的問題出在登錄檔身上

http://networkprogramming.wordpress.com/2010/10/29/401-not-authorized-for-msdeploy%E2%80%8F-msdeployagentservice/#comment-535

 

這篇提到是UAC政策有問題,沒有連動設定到所導致,結果小小的一個登錄檔就糾纏四小時…

到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System底下

如果沒有看到”LocalAccountTokenFilterPolicy”這個登錄值,請自己手動右鍵新增一個DWORD值,命名為”LocalAccountTokenFilterPolicy”

並且更改它的內容為1,OK之後重新啟動SERVER…

 

就能排除上面說的問題了~!!!

 

當然其中還有比較容易在實作漏掉的,例如驗證設定中的Windows驗證沒安裝以及啟用

還有創立的user沒有權限存取web資料夾等等…都可能會造成401,如果都確定做好一切了,但還是401…

那就嘗試最後改登錄檔的方式吧

 

 

之後要重弄伺服器的時候我再來更新這一篇,因為網路上面的作法太錯縱複雜

我幾乎全做了一輪,但不外乎是上面那兩個方式,一個手動委派設定一大堆,跟另外一個直接DL自動配置組件的

 

所以我也不能統整出一套完整的流程跟做法…

大家就看看連結,如果碰到401,先檢查完再看看情況做應對吧!

 

 

接著筆記順便分享一下幾個降低安全性提升便利性的的操作

變更密碼原則:http://jnote.posterous.com/windows-server-2008-27

關閉關機事件追蹤器:http://chenweichi.blogspot.tw/2011/10/blog-post_25.html

 

 

另外就是WS 2008上啟動ASP.NET 4的APP POOL

http://gccfeli.cn/2010/09/win7-or-windows-server-2008-enable-asp-net-4.html

Leave a comment

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料