我最近一直在努力设置我的网站主机用于mercurial repos和hgweb。我使用freeespeech.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> </th>
</tr>
</table>
</div>
</div>
</body>
</html>
我发现hgweb.cgi脚本实际上需要设置为755权限,将其设置为可执行是不够的。