[英]How do I set up Mercurial and hgweb on IIS?
我昨天只需要安裝一個新的 Mercurial 實例,這里是 1.7 的更新說明:
hg clone https://www.mercurial-scm.org/repo/hg/
創建一個文件夾,作為您的 Web 應用程序文件夾。 您需要將三件事復制到此文件夾中:
您需要確保在 IIS 中設置了 Python。
您還需要創建一個名為“hgweb.config”的文件,其內容類似於以下內容。 文件中的路徑必須是您要存儲 Mercurial 存儲庫的驅動器位置:
[收藏]
c:\\Mercurial\\repos = c:\\Mercurial\\repos
編輯 hgweb.cgi 文件並將設置 hgweb.config 路徑的行更改為如下所示(無論 hgweb.config 文件在哪里):
config = "C:\\Mercurial\\hgweb.config"
另外,請查看Jeremy Skinners 博客文章。 它有點過時,但有一些額外的好步驟,例如為更干凈的 URL 設置 URL 重寫。
似乎自從 Mercurial 1.5.2 發布以來,這些教程並不完全正確。 一方面,hgwebdir.cgi 已被刪除,現在替換為 hgweb.cgi。
最適合我的說明在eworldui.net 上:
這些說明適用於 IIS 7 或更高版本。 如果您在 IIS 6 上進行設置,我編寫了針對 Win2k3 和 IIS 6.0 的類似說明:
http://partialclass.blogspot.com/2010/05/setting-up-mercurial-server-on-win2k3.html
更新:在完成這項工作后不久,我了解到 BitBucket 改變了他們的定價方案,提供免費、無限制的私人托管: https : //bitbucket.org/ 。 當我最初從事這個項目時,我會立即選擇它。
我發現Vampire Basic上的博客文章是一個好的開始,但它沒有詳細說明我所追求的內容。
我寫了一篇關於此的 4 部分博客文章,讓您從頭開始使用 IIS,包括 Active Directory 集成、設置推/拉安全權限、自定義模板,我會在此處復制它,但它相當啰嗦的是,Mercurial 真正設計為托管在 Linux/Apache 上:
http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html
這里有一個相當不錯和全面的教程: http : //vampirebasic.blogspot.com/2009/06/running-mercurial-on-windows.html
以下是我在為在 IIS6 上設置 hgwebdir.cgi 進行了大量研究后所做的工作。 它基於以下站點:
您需要在服務器上安裝以下內容:
我的步驟是:
現在是測試 Python 是否正常工作的好時機。 在新的 Hg 文件夾中創建一個名為 test.cgi 的文件。 粘貼以下python代碼:
print 'Status: 200 OK'
print 'Content-type: text/html'
print
print '<html><head>'
print ''
print '<h1>It works!</h1>'
print ''
print ''
打開瀏覽器訪問您的站點,例如http://localhost/hg/test.cgi
您應該會看到“它有效!” 在瀏覽器中。
接下來讓我們讓 hgwebdir 工作。
https://www.mercurial-scm.org/repo/hg/
: https://www.mercurial-scm.org/repo/hg/
application = hgwebdir('hgweb.config') wsgicgi.launch(application)
到
application = hgwebdir('c:\\inetpub\\wwwroot\\hg\\hgweb.config') wsgicgi.launch(application)
現在是測試它的好時機。 在瀏覽器中訪問以下 URL, http://localhost/hg/hgwebdir.cgi
[collections] \\\\server\\share$\\Hg\\ = \\\\server\\share$\\Hg\\ [web] allow_push = * push_ssl = false
這些都是我的偏好,例如我們在 \\\\server\\share$\\Hg 的子目錄中有我們的存儲庫。 Web 應用程序將通過瀏覽器在登錄用戶的權限下運行,因此他們需要對共享的讀/寫權限。
最后一步是允許長連接,這在您第一次克隆存儲庫時可能發生。 運行以下命令將超時增加到 50 分鍾:
cd \inetpub\AdminScripts\
cscript adsutil.vbs GET /W3SVC/CGITimeout
cscript adsutil.vbs SET /W3SVC/CGITimeout 3000
使用 mercurial 克隆 mercurial 倉庫:
hg clone https://www.mercurial-scm.org/repo/hg/
您會在頂層找到 hgwebdir.cgi。 它應該像任何其他 cgi 腳本一樣安裝。
在過去一周左右的時間里,我一直在與 mercurial 1.7.2 的這個設置作斗爭,為了讓它工作,我必須做一些與上述文章略有不同的事情。
在這里發帖是因為谷歌一直把我帶回這里......
完整說明張貼在這里
我遵循了這些說明和這些(在源代碼中)的組合
主要區別在於我必須對mercurial進行“純 python”安裝,否則它會抱怨缺少 dll,而且我發現使用 pywin 和 isapi-wsgi 的“python 安裝程序”很重要。 (也許這對於有經驗的 Python 開發人員來說是顯而易見的,但我是一個 Python 新手,所以這對我來說是新聞)
希望這對某人有所幫助,而且我不僅僅是在編造東西(我可能是,就像我說的,python 新手)
hg 紅皮書包含一些比我在其他地方看到的更好的一般說明。 它們不是特定於 IIS 的,但它們非常好:
http://hgbook.red-bean.com/read/collaborating-with-other-people.html#sec:collab:cgi
我遇到了“...無法加載模塊...”類型錯誤,經過一些閱讀后,我的關鍵是忽略 Mercurial 文件夾中的 Library.zip 文件,而是使用 C:\\ Program Files (x86)\\TortoiseHg 文件夾。
我在本指南中發現的第 6 條提示:
http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html
希望這可以幫助某人...
我知道這是一個老問題,但我真的很難在 Server 2019 和 IIS 10 上安裝 Hg。這是我為使其工作所做的工作:
安裝Python 2.7 ,在我的例子中是python-2.7.18.amd64.msi 。 我假設它安裝在 C:\\Python27 中。 確保將 python 添加到您的路徑並安裝了 pip。
在命令行中使用 pip 將 Mercurial 安裝為模塊:
pip install mercurial
在默認網站下添加一個名為“hg”的新應用程序,並將其指向您要使用的目錄。
將 Python 配置為 IIS 10.0 中的 CGI 處理程序,用於此新網站(或整個 Web 服務器,如果您願意)。 您可以手動執行此操作或創建/添加以下內容到您的web.config文件:
<system.webServer>
<handlers accessPolicy="Read, Script">
<add name="Python 2.7" path="*.cgi" verb="*" modules="CgiModule" scriptProcessor="C:\Python27\python.exe -u "%s"" resourceType="File" />
</handlers>
</system.webServer>
#!/usr/bin/env python3
#
# An example hgweb CGI script, edit as necessary
# See also https://mercurial-scm.org/wiki/PublishingRepositories
# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "hgweb.config"
# Uncomment and adjust if Mercurial is not installed system-wide
# (consult "installed modules" path from 'hg debuginstall'):
# import sys; sys.path.insert(0, "/path/to/python/lib")
# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()
from mercurial import demandimport
demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)
[collections]
C:\Web\www\hg\repos\ = C:\Web\www\hg\repos\
你可以試試HgLab 。 這不完全是 hgwebdir; 相反,它是一個帶有推拉服務器和存儲庫瀏覽器的純托管 Mercurial 實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.