Git http-backend не работает на Apache/Xampp для Windows
Я везде искал ответ на свою проблему, но я не смог найти ничего, связанного с моей конкретной проблемой, так что вот и я.
По сути, я не могу получить доступ к своему хранилищу или заставить работать git-http-backend с помощью apache. Когда я набираю git http-backend в своей папке git через git-bash, я получаю следующий вывод:
$ git http-backend
fatal: No REQUEST_METHOD from server
Status: 500 Internal Server Error
Expires: Fri, 01 Jan 1980 00:00:00 GMT
Pragma: no-cache
Cache-Control: no-cache, max-age=0, must-revalidate
Кажется, я не могу найти что-либо об этой проблеме выше, и я сделал все возможное, чтобы настроить apache так, чтобы были включены mod_cgi, mod_env и mod_alias.
Вот мой файл httpd-vhosts.config:
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "C:/git_folder.git/"
<Directory "C:/git_folder.git/">
AllowOverride none
Require all granted
</Directory>
SetEnv GIT_PROJECT_ROOT "C:/git_folder.git/"
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAlias /git/ "C:/Program Files/Git/mingw64/libexec/git-core/git-http-backend.exe"
#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))$" \
# "C:/Program Files/Git/mingw64/libexec/git-core/git-http-backend.exe/$1"
<Directory "C:/Program Files/Git/mingw64/libexec/git-core">
Options +ExecCGI -MultiViews +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
Кроме того, вот часть моего файла httpd.conf
ServerRoot "C:/xampp/apache"
Listen 80
----------------------------------------
LoadModule alias_module modules/mod_alias.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule env_module modules/mod_env.so
----------------------------------------
Include conf/extra/httpd-vhosts.conf
После запуска сервера xampp в Windows 10 я также попытался настроить свой каталог git, выполнив следующие действия в "C:\git_folder.git\" с помощью git-bash:
$ mkdir git_subfolder.git
$ cd git_subfolder.git
$ git init --bare --shared
$ cp hooks/post-update.sample hooks/post-update
$ git update-server-info
К сожалению, это, похоже, тоже ничего не делает, независимо от того, использую я закомментированный или незакомментированный код в предыдущем примере. Когда я захожу на страницу " http://www.example.com/git/git_subfolder.git", я получаю сообщение "Ошибка 403 - запрещено". Аналогично, используя следующую команду на одном из моих клиентских компьютеров, я получаю вывод ниже:
$ git remote set-url origin
"http://www.example.com/git/git_subfolder.git"
fatal: Not a git repository (or any of the parent directories): .git
Я не верю, что это проблема с моим доменным именем, так как я правильно настроил это в файле hosts в Windows, и когда я помещаю только пример.html-файла в корневой каталог, это прекрасно отображается, когда я захожу http://www.example.com/ как в моей локальной сети, так и через Интернет (примечание: www.example.com не является моим настоящим доменным именем). Однако, если кто-нибудь знает, где я ошибаюсь с моей конфигурацией git, я буду искренне благодарен.