我在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.是否有人知道可能导致此问题的原因?
答案 0 :(得分:12)
我在OpenSuse 11.4中也遇到了同样的问题。在我的情况下(我怀疑这是初始海报的情况,谁也是一个开放的用户),问题结果是这个AppArmor的事情,我对此知之甚少。
以下是我注意到的最终解决方案:
...
/srv/git/ r,
/srv/git/** r,
...
...
/home/myname/srv r,
/home/myname/srv/** r,
...
现在一切都应该没问题了:)
答案 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脚本:
答案 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。 它有效。