Debian + Gitolite + Gitweb = 404 - проектов не найдено

Это тема, которую вы найдете очень часто. Тем не менее, я пробовал все с 2 дней, и у меня заканчиваются идеи. Надеюсь, что кто-то может помочь мне здесь.

В общем я сделал следующее:

  • apt-get установить gitolite gitweb
  • добавлены репозитории в gitolite.conf (см. ниже)
  • добавил пользователя www-data в группу gitolite
  • создал projects.list вручную (см. ниже)
  • установить символическую ссылку /var/www/gitweb -> /usr/share/gitweb
  • настроить gitweb vhost (см. ниже)

Когда я сейчас захожу на http://git.example.org/ я вижу gitweb с сообщением "404 - Проекты не найдены". В файле журнала нет сообщения об ошибке.

1) Гитолит каталог:

drwxr-xr-x  5 gitolite gitolite 4096 Mai  6 20:03 .
drwxr-xr-x 43 root     root     4096 Mai  6 18:12 ..
drwxr-x---  8 gitolite gitolite 4096 Mai  6 18:12 .gitolite
-rw-r-xr--  1 gitolite gitolite 4217 Mai  6 19:43 .gitolite.rc.new
-rwxr-xr-x  1 gitolite gitolite   25 Mai  6 19:59 projects.list
drwxr-xr-x  6 gitolite gitolite 4096 Mai  6 18:14 repositories
drwxr-x---  2 gitolite gitolite 4096 Mai  6 18:14 .ssh

2) gitolite.conf

repo    gitolite-admin
        RW+ = admin

repo    repo1
        RW+ = admin
        R   = @all

repo    repo2
        RW+ = admin
        R   = @all

3).gitolite.rc.new (Почему здесь добавляется.new? Установленный gitolite с помощью apt-get install gitolite)

# ------------------------------------------------------------------------------
# DO NOT TOUCH THIS SECTION!
# ------------------------------------------------------------------------------

$GL_ADMINDIR=$ENV{HOME} . "/.gitolite";
$GL_CONF="$GL_ADMINDIR/conf/gitolite.conf";
$GL_KEYDIR="$GL_ADMINDIR/keydir";
$GL_CONF_COMPILED="$GL_ADMINDIR/conf/gitolite.conf-compiled.pm";

# DO NOT CHANGE THE NEXT FOUR LINES UNLESS YOU REALLY KNOW WHAT YOU'RE DOING.
# These variables are set automatically by the install method you choose.
#            (PACKAGE MAINTAINERS: PLEASE READ doc/packaging.mkd)
$GL_PACKAGE_CONF = "/usr/share/gitolite/conf";
$GL_PACKAGE_HOOKS = "/usr/share/gitolite/hooks";

# ------------------------------------------------------------------------------
# most often used/changed variables
# ------------------------------------------------------------------------------
$GL_WILDREPOS = 0;
$PROJECTS_LIST = $ENV{HOME} . "/projects.list";
# $WEB_INTERFACE = "gitweb";
# $GITWEB_URI_ESCAPE = 0;
$REPO_UMASK = 0022;

4) /var/lib/gitolite/projects.list

repo1.git
repo2.git

5) / var / lib / gitolite / repositories

drwxr-xr-x 7 gitolite gitolite 4096 Mai  6 18:14 repo1.git
drwxr-xr-x 7 gitolite gitolite 4096 Mai  6 18:14 repo1.git

6) gitweb vhost:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName git.example.org

    SetEnv GITWEB_CONFIG   /etc/gitweb.conf
    SetEnv GIT_PROJECT_ROOT /var/lib/gitolite/repositories

    DocumentRoot /var/www/gitweb

    <Directory /var/www/gitweb>
      Options FollowSymLinks ExecCGI
      AllowOverride All
      order allow,deny
      Allow from all
      AddHandler cgi-script .cgi

      DirectoryIndex index.cgi

      # Pretty gitweb URLs
      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^.* /index.cgi/$0 [L,PT]
    </Directory>

    # Enable git clone over HTTP
    ScriptAliasMatch \
    "(?x)^/(.*/(HEAD | \
        info/refs | \
        objects/(info/[^/]+ | \
        [0-9a-f]{2}/[0-9a-f]{38} | \
        pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
        git-(upload|receive)-pack))$" \
        /usr/lib/git-core/git-http-backend/$1

    ErrorLog /var/log/apache2/git-error.log
    CustomLog /var/log/apache2/git-access.log combined
</VirtualHost>

7) /etc/gitweb.conf

# path to git projects (<project>.git)
$projectroot = "/var/lib/gitolite/repositories";

@git_base_url_list = ("git://git.example.org", "http://git.example.org");

$site_name = "git.example.com";

# require export flag
$export_ok = "git-daemon-export-ok";
$strict_export = 1;

# 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 = "indextext.html";

# file with project list; by default, simply scan the projectroot dir.
$projects_list = "/var/lib/gitolite/projects.list";

# stylesheet to use
#@stylesheets = ("static/gitweb.css");

# javascript code for gitweb
#$javascript = "static/gitweb.js";

# logo to use
#$logo = "static/git-logo.png";

# the 'favicon'
#$favicon = "static/git-favicon.png";

# git-diff-tree(1) options to use for generated patches
#@diff_opts = ("-M");
@diff_opts = ();

Большое спасибо!

2 ответа

Решение

Просто ради полноты - мой ответ от 6 мая 2013 года:-)

Это все для gitolite v2:

Я наконец-то заработал: сначала добавил "gitweb daemon" ко всем R в gitolite.conf, а затем добавил "SetEnv GIT_HTTP_BACKEND /usr/lib/git-core/git-http-backend" в файл vhost. Не знаю, если оба изменения необходимы, хотя.

В моем случае это была просто проблема разрешения /home/gitolite/repositories/ каталог.

Или это может быть проблема с настройками Umask - по умолчанию DOC Umask 0700, для cgit / gitweb работает 0027,

Другие вопросы по тегам