gitweb не видит репозиторий, потому что не видит файл HEAD? - PullRequest
1 голос
/ 09 февраля 2012

Я пытаюсь настроить gitweb на сервере CentOS 6.2 с установленными git / gitweb 1.7.1 и httpd 2.2.15.

Корнем проекта 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 увидеть файл.

Есть идеи, что может привести к неудаче? Это не имеет смысла для меня.

РЕДАКТИРОВАТЬ: обратите внимание, что расширения SELinux в этом окне CentOS отключены:

$ sudo sestatus
SELinux status:                 disabled

РЕДАКТИРОВАТЬ: перемещение всего с /var/lib/git на /git не помогло. Я изменил пользователя apache на настоящую оболочку, вошел в систему под этим пользователем и подтвердил, что у него есть доступ ко всем каталогам и файлам, о которых идет речь.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Это был фактически SELinux.Хотя SELinux сообщил, что он отключен, он каким-то образом препятствовал доступу к некоторым файлам для сценариев CGI, работающих под httpd.Включив SELinux и установив его в разрешающий режим, он начал работать.

Это кажется не интуитивным и расстраивает меня, но по крайней мере это работает.

0 голосов
/ 09 февраля 2012

Я все еще думаю, что это проблема с разрешениями ... но я могу ошибаться.Вы гарантировали, что все родительские каталоги, ведущие к вашему каталогу /var/lib/git, доступны с разрешения?

У кого-то еще была похожая проблема здесь , и, возможно, стоит попробовать совершенно другуюкаталог ... может быть, даже /opt.

...