Apache и Git-http-бэкэнд
в настоящее время я настраиваю некоторые репозитории git на машине Ubuntu LTS 14.04 с Apache 2.4.7.
это конфигурация apache:
SetEnv GIT_PROJECT_ROOT /var/www/html/git
SetEnv GIT_HTTP_EXPORT_ALL 1
SetEnv REMOTE_USER $REDIRECT_REMOTE_USER
ScriptAliasMatch
"(?x)^/git/(.*/(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
<Location /git/oswald.git>
Options +ExecCGI
AuthType Basic
DAV on
AuthName "Git"
AuthUserFile /etc/apache2/git_paragon_passwd
Require valid-user
Order allow,deny
Allow from all
</Location>
репозитории тест под /var/www/html/git/oswald.git
. В репозитории я установил свойство config
http.receivepack=true
файл git-daemon-export-ok
присутствует.
если я сейчас попытаюсь клонировать с:
git clone https://server/git/oswald.git
после проверки подлинности, я получаю:
fatal: https://server/git/oswald.git/info/refs not valid: is this a git repository?
(клиент Git 2.1.0, на сервере в Git 1.9.1).
Я пробовал несколько вещей, поэтому, если я не использую git-http-backend и иду через WebDAV, я могу клонировать, но не нажимать, с Git-http-backend я даже не могу клонировать.
если я изменю последнюю строку ScriptAliasMatch
С
/usr/lib/git-core/git-http-backend
to
/usr/lib/git-core/git-http-backend/
как говорится в man-страница git-http-backend, я
fatal: repository 'https://server/git/oswald.git/' not found
с ошибкой.вход из Apache:
AH00130: File does not exist: /usr/lib/git-core/git-http-backend/oswald.git/info/refs
кто-нибудь знает, что это неправильно? Я уже потратил много времени, проходя через форумы, но никакие предложения там не помогли до сих пор.
4 ответов
включен ли модуль CGI Apache? Попробуйте запустить sudo a2enmod cgi
а затем перезапуск Apache.
у меня была точно такая же проблема, которая была вызвана тем, что CGI-модуль был отключен. В моем случае вышеуказанная команда выбрала и включила модуль "cgid".
Я считаю, что вам нужен трейлинг Если вы используете
ScriptAliasMatch
, но не следует указывать (но держите косую черту), если вы используете
ScriptAlias
.
вам также может потребоваться добавить Directory
блок, который выглядит примерно так:
<Directory "/usr/lib/git-core">
Options +ExecCgi -MultiViews +SymLinksIfOwnerMatch
AllowOverride none
Order allow,deny
Allow from all
Require all granted
</Directory>
для других людей, сталкивающихся с аналогичными проблемами с этой конкретной ошибкой:
fatal: https://server/git/oswald.git/info/refs not valid: is this a git repository?
В конце концов я нашел, что вызвало эту проблему для меня на CentOS 6.5: SELinux. Попробуйте выполнить следующую команду:
setenforce 0
Если это исправляет вашу проблему, то у вас есть проблема с разрешениями ACLs. Конечно, выполнив вышеуказанную команду, вы отключили целый ряд проверок разрешений, но она может по крайней мере сказать вам, является ли это причиной вашей проблемы. Для более подробная информация, ознакомьтесь с документацией здесь.
включите проверки, запустив
setenforce 1
Я не знаю, решили ли вы его еще, но взгляните на мой ответ здесь
У меня есть пара идей:
по моему опыту доступ к репозиторию с https не удался, в то время как http работал.
вы не упоминаете об изменении владельца каталога РЕПО в соответствии с пользователем apache, вы это сделали?
вы подтвердили, что скрипт git-http-backend находится там, где вы его ожидаете быть?