我试图使用 git-http-backend 和 apache 2.4 设置一个 git 服务器,我发现这个问题 https://stackoverflow.com/questions/26734933/how-to-set-up-git-over-http关于同样的事情很有帮助,但我仍然陷入困境。
我已经在 Ubuntu 16.04 上安装了 git 和 apache2 并使用添加了所需的模块
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
shows /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
and 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
有人能看到我做错了什么吗?