配置GitWeb - 404 - 未找到任何项目

时间:2012-04-23 06:00:15

标签: gitweb

我在OpenSUSE(非虚拟主机)中通过Apache在我的系统中配置gitweb。但是,我收到以下错误:404 - No projects found

/etc/gitweb.conf

# path to git projects (<project>.git)
$projectroot = "/home/zhijian/gitweb";

# 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 = "/gitweb/static/indextext.html";

# file with project list; by default, simply scan the projectroot dir.
$projects_list = $projectroot;

# stylesheet to use
$stylesheet = "/gitweb/static/gitweb.css";

# logo to use
$logo = "/gitweb/static/git-logo.png";

# the 'favicon'
$favicon = "/gitweb/static/git-favicon.png";

/etc/apache2/conf.d/gitweb.conf

Alias /gitweb "/home/zhijian/gitweb"

<Directory "/home/zhijian/gitweb">
    Options +Indexes +ExecCGI +FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    AddHandler cgi-script .cgi
    DirectoryIndex gitweb.cgi

</Directory>

我在gitweb文件夹中添加了一个软链接,用于链接gitweb.cgi和静态文件夹。 Apache错误日志显示gitweb.cgi: Can't opendir(/home/zhijian/gitweb): Permission denied,但gitweb文件夹的权限已设置为755.是否有人知道可能导致此问题的原因?

6 个答案:

答案 0 :(得分:12)

我在OpenSuse 11.4中也遇到了同样的问题。在我的情况下(我怀疑这是初始海报的情况,谁也是一个开放的用户),问题结果是这个AppArmor的事情,我对此知之甚少。

以下是我注意到的最终解决方案:

  • 在OpenSuse中,安装git-web rpm软件包,以便 $ projectroot 默认为“ / srv / git ”文件夹
  • 如果你在这个“ / srv / git /...”子文件夹中添加你的git repos,那么一切正常
  • 如果您决定使用其他位置,例如“ / home / myname / srv / git / ”,则会失败,尽管将所有者设置为 wwwrun:www 正如其他职位所述。
  • 这里的gotchya是 AppArmor ,它似乎对应用允许的内容制定了更严格的政策
  • 执行“ rpm -ql git-web ”会显示一个名为“ /etc/apparmor.d/usr.share.git-web.gitweb.cgi
  • 使用su / sudo打开此文件,以便进行编辑
  • 在这里,你会看到以下几行:

...

/srv/git/ r,
/srv/git/** r,

...

  • 将这些更改为包含您的git repos的父文件夹的路径,例如,如果您将它们置于“ / home / myname / srv / git / ”中,则使用“”< strong> / home / myname / srv / “父文件夹,例如:

...

/home/myname/srv r,
/home/myname/srv/** r,

...

  • 将更改保存到文件
  • 我认为您还必须将此父文件夹的所有者更改为wwwrun:www,例如“ sudo chown -R wwwrun:www srv /
  • 使用“ sudo rcapparmor restart ”重启AppArmor

现在一切都应该没问题了:)

答案 1 :(得分:8)

gitweb cgi必须与您正在扫描的repo拥有相同的所有者。也就是说,如果您的$ projectroot是www-data:www-data,那么gitweb.cgi必须是www-data:www-data。

此外,$ projectroot下的目录也必须具有相同的权限。你应该能够做chown -R www-data:www-data .这应该有所帮助。你会想要查看权限和所有权,但这更棘手,你要确保你做对了,没有打开任何安全漏洞。

答案 2 :(得分:3)

我遇到了同样的问题。 “404没有找到任何项目”,但配置很好。 Apache缓存了404响应并且没有再次运行cgi脚本:

    未编辑gitweb.conf中的
  1. config(默认的ubuntu安装)
  2. 我使用网络浏览器访问了网址:“找不到任何项目”
  3. 我更新了配置
  4. 我再次点击了ctrl-r:“找不到任何项目”(虽然现在配置正确)
  5. 我点击 shift-ctrl-r (Firefox),我得到了正确的结果!

答案 3 :(得分:3)

编辑你的gitweb配置文件:/etc/gitweb.conf

将“我们的$ projectroot”开头的第10行更改为:

我们的$ projectroot =“/ path / to / your / git / root”

然后重新启动您的网络服务器,这将告诉您您的网络服务器配置设置GIT_PROJECT_ROOT是否实际有效。

答案 4 :(得分:0)

SELinux也为http服务器保留了存储库文件不可用。如果必须使用SELinux,则必须更改策略。最简单的方法是禁用SELinux; - )

答案 5 :(得分:-2)

将gitweb文件夹的权限设置为777。 它有效。