Я пытаюсь установить свой собственный репозиторий Git на одном из моих серверов с помощью интеллектуального HTTP.Git со смарт-HTTP и suexec: репозиторий не найден
Он работает на виртуальном сервере без suexec, но не на моем рабочем сервере, который имеет suexec. Когда я пытаюсь клонировать или толкать его, говорит:
фатальным: хранилище 'http://domain.tld/git/project/' не найден
конфигурации Apache, как:
<VirtualHost *:80>
Options -Indexes +ExecCGI
ServerAdmin [email protected]
DocumentRoot /var/www/domain.tld
ServerName domain.tld
Alias /fcgi-bin/ /var/www/domain.tld/fcgi-bin/
SuexecUserGroup domainuser domainuser
########## GIT ##########
SetEnv GIT_PROJECT_ROOT /var/www/git/git_domain
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAlias /git/ /var/www/git/git_domain/git-http-backend/
Alias /git /var/www/git/git_domain
<Directory /usr/lib/git-core>
Options +ExecCGI +SymLinksIfOwnerMatch
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/git/git_domain>
Options -Indexes -SymLinksIfOwnerMatch
AllowOverride All
Require all granted
</Directory>
########## PROJECT DIRS HTPASS ##########
<LocationMatch "^/git/project1/.*$">
# DAV on
AuthType Basic
AuthName "project1"
AuthUserFile /var/www/git/gitpass/domain/project1
Require valid-user
</LocationMatch>
########## /PROJECT DIRS HTPASS ##########
########## /GIT ##########
Если отключить
ScriptAlias / git// var/www/git/git_domain/git-http-backend/
Я могу клонировать, но нажимать, потому что он работает с DAV в этом случае.
Я думаю, что я изменил все владельцы файлов и разрешения на правильное значение (domainuser, 755), и suexec не жалуется ни о чем в своем журнале.
Может ли кто-нибудь сказать мне, где я сделал что-то не так?
Заранее спасибо.
Это сработало! Обертка сценарий я содержал это: '/ bin/Баш PATH_INFO = $ SCRIPT_URL GIT_PROJECT_ROOT =/вар/WWW/мерзавец/git_domain REMOTE_USER = $ REDIRECT_REMOTE_USER экспорт GIT_HTTP_EXPORT_ALL = верно USR/Lib/ГИТ-ядро/git-http-backend' Потому что учебное пособие должно выглядеть так. После удаления всех строк, но '!/Bin/Баш экспорт GIT_PROJECT_ROOT =/вар/WWW/мерзавец/git_domain USR/Lib/ГИТ-ядро/ГИТ-HTTP-backend' и "экспортировали" GIT_PROJECT_ROOT это работает ожидается. Спасибо kostix! – vdavid
@vdavid, переменные 'REMOTE_USER' и' GIT_HTTP_EXPORT_ALL' могут быть полезны, если вы поймете, что они делают. Первый экспортируется веб-сервером в программу CGI, если веб-сервер выполнил аутентификацию клиента, и в этом случае переменная содержит имя аутентифицированного пользователя. Последний говорит Git, что он должен рассматривать все репозитории как «экспортированные», а не только те, которые содержат в них файл 'git-daemon-export-ok'. – kostix
@vdavid, переменная 'REMOTE_USER' может быть полезна, если вы хотите использовать HTTP вместе с интерфейсом Git-хоста' gitolite', потому что в этом случае 'gitolite' не выполняет собственную аутентификацию на основе SSH на основе pubkey - отключение этого на веб-сервер - и, следовательно, хочет знать имя аутентифицированного пользователя для применения его правил контроля доступа. – kostix