Настройка GitWeb - 404 - Проекты не найдены
Я настраиваю gitweb в своей системе через Apache в OpenSUSE (не виртуальный хост). Однако я получаю следующую ошибку: 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. Есть ли у кого-нибудь идеи, что может вызвать эту проблему?
Ответы
Ответ 1
gitweb cgi должен иметь того же владельца, что и сканирование репо. То есть, если ваш $projectroot является www-данными: www-data, тогда gitweb.cgi должен быть www-data: www-data тоже.
Кроме того, каталоги под $projectroot также должны иметь одинаковые разрешения. Вы должны иметь возможность сделать chown -R www-data:www-data .
, который должен помочь. Вы захотите посмотреть разрешения и право собственности, но это сложнее, и вы захотите убедиться, что у вас все получилось, и не открыли никаких дыр в безопасности.
Ответ 2
У меня была такая же проблема и в OpenSuse 11.4. В моем случае (и я подозреваю, что это был случай для первоначального плаката, который также является пользователем openuse), проблема оказалась в этом приложении AppArmor, о котором я очень мало знаю.
Здесь некоторые моменты, которые я заметил, привели к возможному решению:
- В OpenSuse пакет git -web rpm устанавливается таким образом, чтобы $projectroot по умолчанию помещался в папку /srv/git
- Если вы добавите свои репозитории git в эту "/srv/git/...", то все будет работать нормально.
- Если вы решите какое-то другое место, например "/home/myname/srv/git/", то он не работает, несмотря на то, что владелец имеет значение wwwrun: www, как указано в других сообщениях.
- Здесь находится AppArmor, который, по-видимому, ставит даже более жесткие политики в отношении того, что приложение разрешено делать
- Выполнение rpm -ql git -web "откроет файл с именем:" /etc/apparmor.d/usr.share.git-web.gitweb.cgi "
- Откройте этот файл с помощью su/sudo, чтобы его можно было отредактировать
- Здесь вы увидите следующие строки:
...
/srv/git/ r,
/srv/git/** r,
...
- Измените их на путь к родительской папке, содержащей ваши репозитории git, например, если вы их разместите в "/home/myname/srv/git/", затем используйте родительская папка "" /home/myname/srv/, например:
...
/home/myname/srv r,
/home/myname/srv/** r,
...
- Сохраните изменения в файле
- Я думаю, вам также придется изменить владельца этой родительской папки на wwwrun: www, например, " sudo chown -R wwwrun: www srv/"
- перезапустить AppArmor с помощью < перезагрузки sudo rcapparmor "
Теперь все должно быть хорошо:)
Ответ 3
У меня была та же проблема. "404 проектов не найдено", но конфигурация была хорошей. Apache кэшировал 404-ответ и снова не запускал cgi- script:
- config в gitweb.conf не был отредактирован (установка по умолчанию ubuntu)
- Я обратился к URL-адресу с помощью веб-браузера: "Не найдено ни одного проекта"
- Я обновил конфигурацию
- Я нажимаю ctrl-r, но снова: "не найдено ни одного проекта" (хотя теперь была правильная настройка)
- Я нажал shift-ctrl-r (Firefox), и я получил правильный результат!
Ответ 4
Отредактируйте файл конфигурации gitweb, найденный здесь:/etc/gitweb.conf
И измените 10-ю строку, которая начнет "наш проект":
наш $projectroot = "/path/to/your/ git/root"
затем перезагрузите веб-сервер, это скажет вам, действительно ли настроен ваш настройщик веб-сервера GIT_PROJECT_ROOT.
Ответ 5
SELinux сохраняет файлы репозитория также недоступными для http-сервера. Если вам нужно использовать SELinux, вы должны изменить политику. Самый простой способ - отключить SELinux; -)
Ответ 6
установите разрешения для папки gitweb на 777.
он работает.