我正在使用 Debian Wheezy,并且想要设置一个 Mercurial 服务器。
这是我所做的:
1.因此,我首先创建了以下目录:
/var/www/hg
/var/www/hg/cgi-bin
/var/repo
/var/repo/hg
2.文件夹内/var/www/hg/cgi-bin
有两个文件:
2.1.hgweb.config:
[web]
style = coal
allow_push = *
push_ssl = false
[paths]
/=/var/repo/hg/**
2.2.hgwebdir.wsgi:
config = "/var/www/hg/cgi-bin/hgweb.config"
import cgitb; cgitb.enable();
from mercurial import demandimport
from mercurial.hgweb import hgweb
application = hgweb(config)
3.然后我在 apache2 的站点中创建了一个条目并重新启动它:
<VirtualHost *:80>
ServerName hg.********.com
DocumentRoot /var/www/hg
WSGIScriptAliasMatch ^(.*)$ /var/www/hg/cgi-bin/hgwebdir.wsgi\$1
</VirtualHost>
4.之后,我在这里添加了一个名为“default”的存储库:/var/repo/hg/default
问题
因此根据这个,我应该有 a.) mercurial 用户界面,因为脚本中调用了“hgweb”和 b.) 我应该能够从 TortoiseHg 中提取。但这些都不起作用。相反,我得到了一个错误 404当我调用域名时。
有任何想法吗?
编辑:
这似乎就是造成问题的那一行:
WSGIScriptAliasMatch ^(.*)$ /var/www/hg/cgi-bin/hgwebdir.wsgi\$1
因为当我删除 时\$1
,它有点起作用了。它实际上不起作用,但它不再显示错误 404。那么我可以用什么来正确表达这个正则表达式呢?
答案1
我尝试了不同的 URL 后找到了答案:
这行
WSGIScriptAliasMatch ^(.*)$ /var/www/hg/cgi-bin/hgwebdir.wsgi\$1
应替换为以下行:
WSGIScriptAlias / /var/www/hg/cgi-bin/hgwebdir.wsgi/
一切正常:)