使用Apache2.4设置GitHTTP后端

使用Apache2.4设置GitHTTP后端,git,apache2.4,git-http-backend,Git,Apache2.4,Git Http Backend,我正在尝试使用GitHTTPBackend和Apache2.4设置git服务器,我发现同样的东西也很有用,但我仍然遇到了困难 我已经在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_HTT

我正在尝试使用GitHTTPBackend和Apache2.4设置git服务器,我发现同样的东西也很有用,但我仍然遇到了困难

我已经在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>
接下来,我必须将目录的所有权更改为apache2所有者(Im告知)。运行
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数据的组也是www数据(我认为)

所以我用它来设置所有权:

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
git克隆http:///myrepo.git
我得到了一个错误:

fatal: unable to access 'http://<ip-address>/myrepo.git/': The requested URL returned error: 503
致命:无法访问'http:///myrepo.git/“:请求的URL返回错误:503
有人能看出我做错了什么吗

Alias /git /var/www/git
这意味着您的URL应该包含/git:

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

我在这里没有看到这样的别名

是的,我从我不确定是否有必要的地方复制了这个别名。我认为主要的问题是权限问题,我将目录所有权更改为
root
,现在我可以克隆它,但我无法推回。我认为它类似于最近的Ubuntu,似乎有一个问题。git http后端导致http 503,解决方案如下:
Alias /git /var/www/git
git clone http://<ip-address>/git/myrepo.git