2010-10-17 26 views
0

J'ai configuré mon repo à/home/adil/hg/sample-repo et je veux le servir via httpd. Je suis le tutoriel au https://www.mercurial-scm.org/wiki/PublishingRepositories#multiple et ai créé le fichier hgweb.config et ai copié hgweb.cgi (renommé en index.cgi) en/home/adil/web/mercurial/mercurial + Apache donne l'erreur 403

Ma configuration apache (/ etc/httpd/conf/httpd.conf) ressemble à ceci:

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 et tous les dirs ont vers le haut monde lire les autorisations

http://localhost/hg donne une erreur "403 Interdit". WTF?

PS: erreur Apache journal affiche: [Dim 17 octobre 2010 06:45:38] [error] [client 1.2.3.4] (13) Autorisation refusée: l'accès à/hg refusé

+0

Que dit le fichier error.log? Il pourrait contenir des informations plus détaillées sur les raisons pour lesquelles l'accès a été refusé. –

+0

J'ai mis à jour ma question avec le message d'erreur. Comme ci-dessus, juste la permission refusée. Ça ne donne plus d'infos. – Adil

+0

Je vais mettre à jour la réponse avec d'autres façons de vérifier l'utilisateur d'Apache. –

Répondre

0

Probablement processus Apache le propriétaire n'a pas les autorisations pour accéder à /home/adil/web/mercurial.

Aussi, ne consultez le journal des erreurs d'Apache (généralement situé dans /var/log/httpd-error.log ou un endroit similaire Il vous donnera des informations supplémentaires pour déboguer votre installation

Pour vérifier ce qui est l'utilisateur qui exécute le processus d'Apache faire:..

$ ps aux | grep http 

ps devrait montrer ce qui est l'utilisateur qui exécute Apache

en outre, dans le cas où il aide, voici la façon dont je le fais.

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> 
+0

Pablo, il a lu les autorisations sur tous les répertoires. Comment puis-je vérifier si l'utilisateur 'apache' peut y accéder? – Adil

+0

A-t-il également des autorisations pour les dépôts? ou juste pour le script CGI? –

1

Je ne suis pas un expert en configuration Apache, mais j'ai eu cette erreur et j'ai réussi à m'en débarrasser.

Avant que je l'ai fait, je recevais cette erreur dans mon error_log: client denied by server configuration: /Users/svn/Public/hg/hgwebdir.cgi

Ce fut ma config d'origine:

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> 

j'ai ajouté quelques options:

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> 

J'essayées Pablo version aussi - un problème que j'ai éprouvé était que "ScriptAliasMatch ^/hg (. *)" capturait le logo de hg et les feuilles de style nécessaires pour rendre l'explorateur repo de navigateur. Je ne suis pas sûr si cela s'applique même à hgweb.cgi parce que je n'utilise pas celui-là, mais c'était vraiment un problème en utilisant hgwebdir.cgi. Plus précisément: script not found or unable to stat: /Users/svn/Public/hg/hgweb.cgilogo.png