mercurial + Apache给出403错误

时间:2010-10-17 11:40:34

标签: apache mercurial http-status-code-403 hgweb

我已经在/ 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被拒绝

2 个答案:

答案 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>