gitweb没有看到存储库,因为它看不到HEAD文件?

时间:2012-02-08 23:21:59

标签: perl http-status-code-404 apache gitweb

我正在尝试在安装了git / gitweb 1.7.1和httpd 2.2.15的CentOS 6.2服务器上安装gitweb。

gitweb的默认项目根目录(在CGI脚本中验证)是/ var / lib / git,所以我在那里创建了那个和一个简单的git存储库:

$ ls -laF /var/lib/git
total 12
drwxrwxr-x.  3 git  git  4096 Feb  8 16:37 ./
drwxr-xr-x. 15 root root 4096 Feb  8 14:20 ../
drwxrwxr-x.  7 git  git  4096 Feb  8 15:37 foo/

$ git init --bare --shared foo
Initialized empty shared Git repository in /var/lib/git/foo/

$ ls -lF foo
total 32
drwxrwsr-x. 2 git git 4096 Feb  8 17:16 branches/
-rw-rw-r--. 1 git git  126 Feb  8 17:16 config
-rw-rw-r--. 1 git git   73 Feb  8 17:16 description
-rw-rw-r--. 1 git git   23 Feb  8 17:16 HEAD
drwxrwsr-x. 2 git git 4096 Feb  8 17:16 hooks/
drwxrwsr-x. 2 git git 4096 Feb  8 17:16 info/
drwxrwsr-x. 4 git git 4096 Feb  8 17:16 objects/
drwxrwsr-x. 4 git git 4096 Feb  8 17:16 refs/

$ cat foo/HEAD
ref: refs/heads/master

然而,在查看http://localhost/git/时,我看到“404找不到任何项目”。

我已经通过脚本进行了调试,可以看到它正在查找/var/lib/git/foo,但Perl的-e运算符在/var/lib/git/foo/HEAD上失败了。在文件的同一位置,对ls的回调调用显示该文件在那里可见,但我无法让Perl -e看到该文件。

知道可能导致失败的原因是什么?这对我来说毫无意义。

编辑:请注意,此CentOS框上的SELinux扩展似乎已禁用:

$ sudo sestatus
SELinux status:                 disabled

编辑:将所有内容从/var/lib/git移至/git并没有帮助。我已经将apache用户更改为拥有一个真实的shell,以该用户身份登录,并验证它可以访问所有相关目录和文件。

2 个答案:

答案 0 :(得分:2)

实际上是SELinux。即使SELinux报告它被禁用,它也会以某种方式阻止访问在httpd下运行的CGI脚本的某些文件。启用S​​ELinux并将其设置为许可模式后,它开始工作。

这似乎非常不直观,令我感到沮丧,但至少它起作用了。

答案 1 :(得分:0)

我仍然认为这是权限问题......但我可能错了。您是否确保通往/var/lib/git目录的所有父目录都可以访问权限?

其他人有similar problem here,可能值得尝试一个完全不同的目录...甚至可能/opt