Mercurial + Apache выдает ошибку 403

Я установил репо в /home/adil/hg/sample-repo и хочу обслужить его через httpd. Я следую руководству по адресу https://www.mercurial-scm.org/wiki/PublishingRepositories, создал файл hgweb.config и скопировал hgweb.cgi (переименованный в index.cgi) в / home / adil / веб / ртутный /

Мой конфиг 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 и все каталоги вверх имеют разрешения на чтение.

http://localhost/hg выдает ошибку "403 Forbidden". WTF?

PS: Журнал ошибок Apache показывает: [Sun Oct 17 06:45:38 2010] [error] [client 1.2.3.4] (13) Отказано в доступе: отказано в доступе к / hg

2 ответа

Я ни в коем случае не эксперт по настройке 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(.*) Собирал логотип hg и таблицы стилей, необходимые для визуализации обозревателя репозитория браузера. Я не уверен, относится ли это даже к hgweb.cgi потому что я не использую это, но это было определенно проблемой при использовании hgwebdir.cgi, В частности: script not found or unable to stat: /Users/svn/Public/hg/hgweb.cgilogo.png

Возможно, владелец процесса 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>
Другие вопросы по тегам