我已经在/ home / adil / hg / sample-repo设置了我的仓库,并希望通过httpd提供服务。我正在关注https://www.mercurial-scm.org/wiki/PublishingRepositories#multiple的教程并创建了hgweb.config文件并将hgweb.cgi(重命名为index.cgi)复制到/ home / adil / web / mercurial /
我的apache配置(/etc/httpd/conf/httpd.conf)如下所示:
ScriptAlias /hg "/home/adil/web/mercurial/index.cgi"
<Directory "/home/adil/web/mercurial">
Order allow,deny
Allow from all
AllowOverride All
Options ExecCGI
AddHandler cgi-script .cgi
</Directory>
index.cgi,hgweb.config以及所有dirs向上都具有世界读取权限
http://localhost/hg出现“403 Forbidden”错误。 WTF?
PS:Apache错误日志显示: [Sun Oct 17 06:45:38 2010] [错误] [客户端1.2.3.4](13)权限被拒绝:访问/ hg被拒绝
答案 0 :(得分:1)
我无论如何都不是Apache配置专家,但我遇到了这个错误,并设法摆脱它。
在我这样做之前,我在error_log中收到了此错误:client denied by server configuration: /Users/svn/Public/hg/hgwebdir.cgi
这是我原来的配置:
ScriptAlias /hg "/Users/svn/Public/hg/hgwebdir.cgi"
<Location /hg>
AuthType Basic
AuthName "Mercurial Repositories"
AuthUserFile /Users/svn/Public/hg/auth
Require valid-user
</Location>
我添加了一些选项:
ScriptAlias /hg "/Users/svn/Public/hg/hgwebdir.cgi"
<Location /hg>
Options ExecCGI FollowSymLinks
Options None
Order allow,deny
Allow from all
AuthType Basic
AuthName "Mercurial Repositories"
AuthUserFile /Users/svn/Public/hg/auth
Require valid-user
</Location>
我也尝试了Pablo的版本 - 我遇到的一个问题是“ScriptAliasMatch ^ / hg(。*)”正在捕获渲染浏览器repo explorer所需的hg徽标和样式表。我不确定这是否适用于hgweb.cgi
因为我没有使用那个,但在使用hgwebdir.cgi
时肯定是个问题。具体来说:script not found or unable to stat: /Users/svn/Public/hg/hgweb.cgilogo.png
答案 1 :(得分:0)
可能Apache的流程所有者无权访问/home/adil/web/mercurial
。
另外,请检查Apache的错误日志(通常位于/var/log/httpd-error.log
或类似的地方。它将为您提供调试安装的额外信息。
要检查运行Apache进程的用户是做什么的:
$ ps aux | grep http
ps
应该显示运行Apache的用户是什么。
另外,如果它有帮助,这就是我的方式:
ScriptAliasMatch ^/hg(.*) /usr/local/share/mercurial/www/hgweb.cgi$1
<Directory /usr/local/share/mercurial/www>
Options ExecCGI FollowSymLinks
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>