我的CentOs 5.5服务器上有一个正常运行的git存储库。我想使用gitweb为我的存储库提供Web用户界面。
我使用http://git-scm.com/book/ch4-6.html上的说明安装了gitweb,并设法让我的apache服务器正确运行cgi。我将我的存储库放在/pub/git
中,并使用行gitweb.conf
在/etc/
中创建了$projectroot = '/pub/git';
文件。不幸的是,我无法看到我的存储库,网页显示了消息"没有找到这样的项目",我用Google搜索没有成功。
我尝试将行$projects_list = '/pub/git/projects.list';
添加到gitweb.conf
,并使用我的存储库名称(例如projects.list
)创建了文件repos1.git
。没有什么变化。如果我将/pub/git
中不存在的存储库的名称,则该网页会显示更受欢迎且已调查的错误消息" 404 - 未找到任何项目"。
请注意,apache用户可以访问所有文件和存储库。
我/etc/gitweb.conf
的内容是:
$projectroot = '/pub/git';
$projects_list = '/pub/git/projects.list';
谢谢!
答案 0 :(得分:10)
我解决了自己的问题,我想我会发布解决方案以防其他人遇到此问题。
事实证明,gitweb根本找不到git
可执行文件。换句话说,http://git-scm.com/book/ch4-6.html中显示的制作说明make GITWEB_PROJECTROOT="/path/to/git/git"
是不够的。
我花了这么长时间来解决这个问题的原因是因为人们会期待另一种类型的问题,而不仅仅是一个空的存储库列表!似乎为了显示最新的提交消息,gitweb在项目上运行git rev-list
。如果找不到git
,它就会放弃列出项目。我所要做的只是将$GIT = '/path/to/git/git';
行添加到gitweb.conf
。
干杯!
答案 1 :(得分:1)
我在 bluehost.com 上遇到同样的问题,提供git二进制文件的完整路径没有帮助,但正如 gitweb.cgi 评论中所述“<如果你的网络服务器有一个合理的路径“解决了这个问题,那么这只能是”git“,所以所有人都需要解决它:
our $GIT = "git";
在 gitweb.cgi 本身或“ gitweb_config.perl ”中
答案 2 :(得分:1)
如果您已经创建了repos,然后安装gitweb,那么 对回购的保护可能是错误的。 我最初的UMASK是077,所以我的所有回购都只能访问 由git用户。
当我这样做时:
cd /home/git
chmod -R 750 repositories
并将www-data添加到“git”组:
usermod -a -G git www-data
我明白了。
答案 3 :(得分:0)
我也在CentOS 6.4上遇到了这个问题,只是想把我的解决方案添加到这个帖子中。
对我来说,问题是SELinux已启用。这阻止了httpd进程访问我的存储库目录,即使我在其上chmod 777。
对我来说,只是禁用SELinux解决了这个问题。如果禁用不是一个选项,那么您需要了解如何配置SELinux以允许httpd访问您的存储库目录。
答案 4 :(得分:0)
$projectroot
的文件权限
/etc/gitweb.conf
$projectroot
和$project_list
/var/www/git/gitweb.cgi
$projectroot
和$project_list
/path/to/project.git/git-daemon-export-ok
答案 5 :(得分:0)
我认为projectroot是在gitweb.conf中定义的 - 但它也被硬编码到gitweb.cgi中。也许,gitweb.conf并没有在我的实现中获得。无论如何,我将gitweb.cgi编辑为our $projectroot = /home/git
并为我修复了它。
答案 6 :(得分:-1)
对于我刚刚为gitweb配置的CentOS6服务器,它是由SELinux引起的。
setnforce 0
解决了问题