Настройка 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. Кто-нибудь знает, что может быть причиной этой проблемы?


person xuzhijian    schedule 23.04.2012    source источник
comment
какое разрешение верхних каталогов? попробуйте su от имени пользователя www (или любого другого пользователя на вашем компьютере) и перейдите в этот каталог   -  person CharlesB    schedule 23.04.2012
comment
Вы имеете в виду, что мне нужно проверить пользователя папки?   -  person xuzhijian    schedule 23.04.2012
comment
Пользователям необходимо иметь разрешение READ на refs/*, чтобы видеть gitweb проекта.   -  person fracz    schedule 14.06.2016


Ответы (6)


У gitweb cgi должен быть тот же владелец, что и у репо, которое вы сканируете. То есть, если ваш $projectroot имеет вид www-data:www-data, тогда gitweb.cgi тоже должен быть www-data:www-data.

Кроме того, каталоги в $projectroot также должны иметь такие же разрешения. Вы должны быть в состоянии сделать chown -R www-data:www-data ., что должно помочь. Вы захотите посмотреть на разрешения, а также на право собственности, но это сложнее, и вам нужно убедиться, что вы все сделали правильно и не открыли никаких дыр в безопасности.

person jeremiah    schedule 27.01.2013
comment
Также стоит отметить, что если на вашем веб-сервере не включен cgi, вы получите отказ в доступе, и сценарий будет отображаться в виде обычного текста. - person jeremiah; 05.07.2016

У меня была такая же проблема в 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 restart»

Теперь все должно быть хорошо :)

person Gurce    schedule 31.08.2013
comment
Работа над SLES 11 SP 3... это то, что мне было нужно, чтобы наконец запустить эту штуку. Благодарю вас! - person Avindra Goolcharan; 04.03.2014
comment
По какой-то причине GitWeb действительно заработал у меня сразу после того, как я его установил. Только после перезагрузки я получил ту же ошибку, что проекты не найдены - и это исправило ее. Спасибо. - person Marie Fischer; 25.10.2014

У меня такая же проблема. «404 проектов не найдено», но конфигурация была хорошей. Apache кэшировал 404-ответ и больше не запускал cgi-скрипт:

  1. config в gitweb.conf не редактировался (установка ubuntu по умолчанию)
  2. Я получил доступ к URL-адресу с помощью веб-браузера: «Проекты не найдены»
  3. я обновил конфиг
  4. Я нажимаю ctrl-r, но снова: «проекты не найдены» (хотя конфигурация теперь была правильной)
  5. Я нажал shift-ctrl-r (Firefox) и получил правильный результат!
person guettli    schedule 16.05.2012

Отредактируйте файл конфигурации gitweb, который находится здесь: /etc/gitweb.conf

И измените 10-ю строку, с которой начинается «наш $projectroot», на:

наш $projectroot = "/path/to/your/git/root"

затем перезапустите свой веб-сервер, это скажет вам, действительно ли работает настройка конфигурации вашего веб-сервера GIT_PROJECT_ROOT.

person Beachhouse    schedule 05.03.2013

SELinux также хранит файлы репозитория недоступными для http-сервера. Если вам нужно использовать SELinux, вы должны изменить политику. Самый простой способ - отключить SELinux ;-)

person szaroblekitny    schedule 20.05.2015

установите права доступа к папке gitweb на 777. это работает.

person feiy    schedule 14.07.2017