你好,首先抱歉我的英语不好:(......
我有一台 ubuntu 11.10 服务器,我想建立 gitweb 服务器。我参考了这个网站 -http://www.snowfrog.net/2011/08/02/setting-up-gitweb-on-your-ubuntu-workstation/。
因此,我尝试安装 gitweb 并重新启动 apache 服务器。
(as root account)
$ apt-get install gitweb
$ service apache2 restart
我尝试连接我的 gitweb 服务器,但无法连接 - 内部服务器错误。我搜索了很长时间并试图解决这个问题,但我做不到。
这是我的 gitweb 和我的服务器信息 -
- 已安装“mediawiki”并且现在可运行。
- 安装了“apache2”并且也可以运行。
- git 也在工作。我尝试将 git repo 克隆到我的桌面,并且成功连接。
- 安装了“gitweb”但是……不工作。- 内部服务器错误。
我检查了我的 apache2 日志。
[error] [client ---.---.---.---] (13)Permission denied: exec of '/usr/share/gitweb/index.cgi' failed [error] [client ---.---.---.---] Premature end of script headers: index.cgi
gitweb 安装到 /usr/share/gitweb。
这是 /usr/share/gitweb 文件夹的权限。
-rwxr-xr-- 1 root root 221331 2012-05-08 02:24 gitweb.cgi lrwxrwxrwx 1 root root 10 2011-06-11 18:17 index.cgi -> gitweb.cgi drwxrwxrwx 2 root root 4096 2012-05-07 19:36 static
这是‘perl /usr/share/index.cgi’的结果。
Status: 404 Not Found^M Content-Type: text/html; charset=utf-8^M ^M <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> <!-- git web interface version 1.7.5.4, (C) 2005-2006, Kay Sievers <[email protected]>, Christian Gierke --> <!-- git core binaries version 1.7.5.4 --> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <meta name="generator" content="gitweb/1.7.5.4 git/1.7.5.4"/> <meta name="robots" content="index, nofollow"/> <title>Untitled Git</title> <link rel="stylesheet" type="text/css" href="static/gitweb.css"/> <link rel="shortcut icon" href="static/git-favicon.png" type="image/png" /> </head> <body> <div class="page_header"> <a title="git homepage" href="http://git-scm.com/"><img class="logo" height="27" src="static/git-logo.png" alt="git" width="72" /></a><a href="/">projects</a> / </div> <div class="page_body"> <br /><br /> 404 - No projects found <br /> </div> <div class="page_footer"> <a class="rss_logo" href="?a=opml">OPML</a> <a class="rss_logo" href="?a=project_index">TXT</a> </div> <script type="text/javascript" src="static/gitweb.js"></script> </body> </html>
/etc/gitweb.conf
# path to git projects (<project>.git) $projectroot = "/home/git/repositories"; # directory to use for temp files $git_temp = "/tmp"; # target of the home link on top of all pages #$home_link = $my_uri || "/"; # html text to include at home page #$home_text = "indextext.html"; # file with project list; by default, simply scan the projectroot dir. $projects_list = "/home/git/projects.list"; # stylesheet to use @stylesheets = ("static/gitweb.css"); # javascript code for gitweb $javascript = "static/gitweb.js"; # logo to use $logo = "static/git-logo.png";
/etc/apache2/conf.d/gitweb
Alias /gitweb /usr/share/gitweb <Directory /usr/share/gitweb> Option FollowSymLinks +ExecCGI AddHandler cgi-script .cgi <Directory>
我执行了这个命令 - “a2enmod cgi,a2enmod perl”并且已经启用。
答案1
看起来 apache 无法执行 index.cgi,因为它没有权限。index.cgi 是 gitweb.cgi 的符号链接,我从它的权限中可以看到只有 root 可以执行它。
通常 Apache 不以 root 用户身份运行,因此您需要更改 gitweb.cgi 的权限以允许 Apache 执行它。
尝试运行此命令(以 root 身份)来更改 gitweb.cgi 的权限
chmod +x /usr/share/gitweb/gitweb.cgi