Настройка git-http-backend с apache 2.4

Я пытаюсь настроить сервер git, используя git-http-backend и apache 2.4. Я нашел этот вопрос о том же, что было полезно, но я все еще достиг точки, когда я застрял.

Я установил git и apache2 на Ubuntu 16.04 и добавил необходимые модули, используя

sudo a2enmod cgi alias env

Затем добавил следующий фрагмент в /etc/apache2/apache2.conf :

<VirtualHost *:80>
    SetEnv GIT_PROJECT_ROOT /var/www/git
    SetEnv GIT_HTTP_EXPORT_ALL
    SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
    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"
    Alias /git /var/www/git
    <Directory /usr/lib/git-core>
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

Обратите внимание, что /var/www/git — это то место, где я намереваюсь размещать свои репозитории, и запуск

find / -name git-http-backend показывает /usr/lib/git-core/git-http-backend

Затем внутри /var/www/git/ я создал каталог myrepo.git и настроил его следующим образом:

sudo git init --bare --shared
sudo cp hooks/post-update.sample hooks/post-update
sudo git update-server-info

Затем я должен изменить владельца каталога на владельца apache2 (мне сказали). Выполнение ps aux | egrep '(apache|httpd)' возвращает следующее:

root 3087 0.0 0.4 73688  4928 ? Ss 02:37 0:00 /usr/sbin/apache2 -k start
www-data 3455 0.0 0.5 362836  5852 ? Sl 03:13 0:00 /usr/sbin/apache2 -k start
www-data 3456 0.0 0.5 362836  5852 ? Sl 03:13 0:00 /usr/sbin/apache2 -k start
git 3531 0.0 0.0 14512 932 pts/1 S+ 03:19 0:00 grep -E --color=auto (apache|httpd)

Теперь я не уверен, потому что похоже, что и root, и www-data что-то запускают, но в настоящее время я решил установить право собственности на www-data (может быть, это должен быть root?). Группа www-data также является www-data (я думаю)

$ id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data)

поэтому я использую это, чтобы установить право собственности:

sudo chown -R www-data:www-data .

Я также, кажется, помню, что читал, что весь путь должен принадлежать пользователю apache, поэтому на всякий случай я установил

sudo chown -R www-data:www-data /var/www

Теперь с моей локальной машины я пытаюсь клонировать myrepo:

git clone http://<ip-address>/myrepo.git

И я получаю сообщение об ошибке:

fatal: unable to access 'http://<ip-address>/myrepo.git/': The requested URL returned error: 503

Кто-нибудь может увидеть, что я делаю неправильно?


person bradimus    schedule 02.12.2016    source источник
comment
У недавней Ubuntu, похоже, есть проблема с этим. git-http-backend вызывает http 503, разрешение здесь: stackoverflow.com/a/65039313/1364242   -  person Jason M    schedule 27.11.2020


Ответы (1)


Alias /git /var/www/git

Это должно означать, что ваши URL-адреса должны включать в себя /git:

git clone http://<ip-address>/git/myrepo.git

Я не вижу такого псевдонима в этом Конфигурация Apache

person VonC    schedule 02.12.2016
comment
Да, я скопировал этот псевдоним из этого ответа. Я не уверен, что это необходимо. Я думаю, что основная проблема связана с правами доступа, я изменил владельца каталога на root, и теперь я могу его клонировать, но не могу выполнить резервное копирование. Я думаю, что это похоже на этот пост< /а> - person bradimus; 03.12.2016