Настройка 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. он работает.