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>