1

私は最近、mercurial リポジトリと hgweb に使用する Web ホストのセットアップに苦労しています。ホスティングにはNearlyfreespeech.net (NFSN) を使用しています。

デフォルトでは、NFSN には freebsd72 の CGI レルムがあり、CGI のみに制限され、WGSI などは制限されません。もともと、NFSN には mercurial 1.6 がインストールされていましたが、これらの指示に大まかに従うことで、mercurial 2.6 のセットアップを取得することができました。Python 2.6.6 もデフォルトでホストにインストールされているので、そのままにしておきます。

私の問題は、ブラウザで hgweb.cgi ファイルを読み込めないことです。ホストで SSH 経由で実行すると、正常に実行され、HTML が出力されますが、ブラウザで 500 内部サーバー エラーが発生します。ファイルは実行可能で、CGI が有効になっています。他に何を確認する必要があるのか​​ わかりません... NFSNでhgおよびhgwebを使用したアドバイスや経験がある人はいますか?

コメントで提案されているように、作成されたエラーログを確認したところ、サイトにアクセスすると...

[Sun Jun 16 08:22:31 2013] [error] [client 172.17.0.141] CGI ERROR: A system problem prevented your request from being completed.
[Sun Jun 16 08:22:31 2013] [error] [client 172.17.0.141] Premature end of script headers: hgweb.cgi

そのエラーを少し検索すると、実行時にスクリプトが正しいヘッダーを生成していない可能性があることがわかります。スクリプトの出力をファイルに保存すると、次のようになります...

Status: 200 Script output follows
Content-Type: text/html; charset=US-ASCII

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
<head>
<link rel="icon" href="/static/hgicon.png" type="image/png" />
<meta name="robots" content="index, nofollow" />
<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />

<title>Mercurial repositories index</title>
</head>
<body>

<div class="container">
<div class="menu">
<a href="http://mercurial.selenic.com/">
<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
</div>
<div class="main">
<h2>Mercurial Repositories</h2>

<table class="bigtable">
    <tr>
        <th><a href="?sort=name">Name</a></th>
        <th><a href="?sort=description">Description</a></th>
        <th><a href="?sort=contact">Contact</a></th>
        <th><a href="?sort=lastchange">Last modified</a></th>
        <th>&nbsp;</th>
    </tr>

</table>
</div>
</div>

</body>
</html>
4

1 に答える 1

1

hgweb.cgi スクリプトは実際には 755 のアクセス許可に設定する必要があり、実行可能に設定するだけでは不十分であることがわかりました。

于 2013-06-19T01:29:01.833 に答える