我正在尝试在安装了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,以该用户身份登录,并验证它可以访问所有相关目录和文件。
答案 0 :(得分:2)
实际上是SELinux。即使SELinux报告它被禁用,它也会以某种方式阻止访问在httpd下运行的CGI脚本的某些文件。启用SELinux并将其设置为许可模式后,它开始工作。
这似乎非常不直观,令我感到沮丧,但至少它起作用了。
答案 1 :(得分:0)
我仍然认为这是权限问题......但我可能错了。您是否确保通往/var/lib/git
目录的所有父目录都可以访问权限?
其他人有similar problem here,可能值得尝试一个完全不同的目录...甚至可能/opt
。