我創建一個設置,其中一個推到我的中央混帳回購協議,位於我的服務器上,會自動將其通過IIS 8的Windows服務器上運行的變化,以我的網站文件夾,回收應用程序池作爲應用程序池標識
這很簡單。以下是工作: 我有Bonobo Git服務器,它自己在IIS上運行的網站。我在Bonobo管理的中央回購站有一個後接收鉤。然後,該鉤子運行一個批處理文件,將更改拖入站點文件夾的回購站。 這是可能的,因爲post-receive鉤子自然會作爲分配給Bonobo App Pool的身份運行,即「IIS AppPool \ GitServerAppPool」,並且我在該站點的文件夾上給出了該身份修改權限。
所以代碼被推動和拉好。問題在於該項目使用Python進行編碼並使用ISAPI_WSGI集成到IIS中,因此我沒有任何機制來重新加載代碼而無需循環使用App Pool。
給後收到腳本的權限,以回收應用程序池被證明是困難的。
所以,問題是這樣的。 - 後接收腳本作爲「IIS AppPool \ GitServerAppPool」運行,因此無法重新啓動其他應用程序池,因爲這樣做需要管理員帳戶。 - 任何運行appcmd或計劃任務的RunAs都不起作用,因爲它需要輸入密碼才能通過UAC。 - 在runas上使用/ savecreds不起作用,因爲我無法以AppPoolIdentity身份登錄,以便首先輸入密碼。
所以我卡住了。如果以下任何一種形式或形式都有可能,他們應該可以工作,但我找不到辦法做到這一點。
- 某些降低迴收應用程序池所需權限的方法。
- 在runas命令中包含密碼的一些方法(該腳本不會被外部世界訪問,所以我可以忍受這一點)
- 某種方式手動運行命令作爲GitServerAppPool,以便我可以運行批量文件一次/ savecreds,而不必再次輸入密碼
任何人都知道如何做a,b或c,或有另一種解決方案?
一個解決方案,它的工作是對運行爲管理員帳戶的應用程序池運行git的服務器。這似乎與UAC的觀點相反,即開始給予事物充分的管理員訪問權限來解決IIS安全性的一個規則。當然,如果我必須,我會的。
非常感謝您的任何幫助或建議。
順便說一句,這樣做的原因是爲了給我的其他開發者,分散在世界各地,以推動其變化直接到他們的臨時服務器沒有我的干擾,並沒有實際訪問服務器的能力。因此,手動重新啓動應用程序池會導致失敗。
這當然似乎是最合適的解決問題的方法更大量的移動部件。批處理文件中沒有密碼,沒有不適當的權限。我真的採納了你的想法,並制定了一個類似的解決方案,避免了開銷,並學習如何做到這一切。我的更哈克解決方案是在我自己的答案下面給他人蔘考。謝謝您的幫助! – Owen