2011-01-04 8 views
0

私はMercurial 1.7とApache 2.2.3を使用しています。私は/ var/lib/mercurial-server/reposにあるリポジトリを認証して提供するためにhgwebdir.cgiスクリプトを使用しようとしています。MercurialとApacheの使用

認証は機能しますが、Webページにはリポジトリが表示されません。

これは私の/var/www/cgi-hg/hgwebdir.cgiです:

config = "/var/lib/mercurial-server/repos/" 
import sys; sys.path.insert(0, "/usr/lib64/python2.4/") 
import cgitb; cgitb.enable() 

from mercurial import demandimport; demandimport.enable() 
from mercurial.hgweb import hgweb, wsgicgi 
application = hgweb(config) 
wsgicgi.launch(application) 

これは私の/var/www/cgi-hg/hgwebdir.configです:

[collections] 
/var/lib/mercurial-server/repos=/var/lib/mercurial-server/repos 

[web] 
allow_push = * 
style = gitweb 
push_ssl = False 

= "の/ var/libに/ Mercurialのサーバ/レポ/" と設定=「の/ varの設定を使用して

DocumentRoot "/var/www/cgi-hg" 

<Directory /> 
Options ExecCGI FollowSymLinks 
AllowOverride None 
Order allow,deny 
Allow from all 
</Directory> 

<Directory "/var/www/cgi-hg"> 
Options ExecCGI Indexes FollowSymLinks 
AllowOverride None 
</Directory> 

DirectoryIndes index.html index.html.var hgwebdir.cgi 

ScriptAlias /hg "/var/www/cgi-hg/hgwebdir.cgi" 

<Location /hg> 
AuthType Basic 
AuthName "Login Required" 
AuthUserFile /usr/local/etc/users 
Require valid-user 
</Location> 

:これは私のある/etc/httpd/conf/httpd.conf(変更が行われた部品)であります/ hg/hgwebdir hgwebdir.cgiの ".config"は私に空のリポジトリページを与えます。/var/hg /にはhgwebdir.configはありません。

config = "/var/www/cgi-hg/hgwebdir.config"を使用すると、OSErrorを示すページが表示されます。ページの一部を示しています

Starting httpd: [date time] [warn] The ScriptAlias directive in /etc/httpd/conf/httpd.conf at line 570 will probably never match because it overlaps an earlier ScriptAliasMatch. 
httpd: Could not reliably determine the server's fully qualified domain name, using <IP address> for ServerName 

私のhttpd.confにはScriptAliasMatchはありません。

/var/www/cgi-hg/hgwebdir.cgi 
(highlighted) 22 application = hgweb(config) 
application undefined, hgweb = <function hgweb>, config = '/var/www/cgi-hg/hgwebdir.config' 

/usr/lib64/python2.4/site-packages/mercurial/hgweb/__init__.py in hgweb(config='/var/www/cgi-hg/hgwebdir.config', name=None, baseui=None) 
(highlighted) 26 return hgwebdir_mod.hgwebdir(config, baseui=baseui) 
... 

また、私は私のhttpdを再起動するたびに、私は2つのメッセージを得ることに気づきました。

ブラウザで/ hgを指定すると、hgwebdir.cgiでどの設定を使用しているのかによって認証が求められ、空のリポジトリページまたはPythonエラーが表示されます。

「hg serve -webdir-conf /var/www/cgi-hg/hgwebdir.config」を使用すると、すべてのリポジトリが正しく表示されます。

私は非常にApacheに新しく、私は何か間違っていると確信しています。お知らせ下さい。

ありがとうございます。

答えて

0

私はScriptAliasとの警告については知らないが、私はあなたの/var/www/cgi-hg/hgwebdir.cgiファイルの行は、現在から変更する必要があると思う:

config = "/var/lib/mercurial-server/repos/" 

config = "/var/www/cgi-hg/hgwebdir.config" 

にあなたが提供しているとき単一リポジトリはそのリポジトリへのパスであり、複数のファイルを提供している場合は、hgweb設定ファイルへのパスです。

あなたはそれが(濃い灰色である)coalのような非常に顕著なものにstyleを変更してhgwebdir.configファイルを読んでいることを確認することができます。その変更が表示されない場合は、デフォルトで実行されているだけです。

あなたは物事を取得したら、あなたはあまりにもそのApacheの設定をロックダウンする必要があります。あなたのDocumentRootは通常、CGIを含むディレクトリ以外のものです(人々は/hg以外の場所を行き来したくありません)。同様に、ファイルシステム全体に対してExecCGIオプションを有効にするべきではありません(Directory /)。

まず、実際にはhgwebdir.configファイルを読み込んでいることを確認してから作業してください。

+0

私は設定を "/var/www/cgi-hg/hgwebdir.config"に変更しましたが、上記のOSErrorが私に渡されました。 – Rayne

+0

あなたはhgwebdir.cgiをどこで手に入れましたか?あなたはMercurial 1.7を使っていますが、hgwebdir.cgiはバージョン1.6でhgweb.cgiに改名されました。最新のものはこちら:http://mercurial.selenic.com/hg/hg/file/tip/hgweb.cgi実際の設定ファイルを指すconfig引数は、複数のreposでは間違いなく正しいです。それを働かせれば、あなたはあなたのところにいるでしょう。あなたのウェブサーバーのユーザーがすべての関連ファイルを読むことができると確信していますか? PYTHON_PATHに早く登場している古い水銀をインストールしたことも可能ですか? –

+0

1.4.3よりもMercurial 1.7をインストールしました。私のPYTHON_PATHを確認するには? – Rayne

関連する問題