【问题标题】:Setting Up git-http-backend with apache 2.4使用 apache 2.4 设置 git-http-backend
【发布时间】:2017-04-16 22:01:17
【问题描述】:

我正在尝试使用 git-http-backend 和 apache 2.4 设置一个 git 服务器,我发现 this question 也有同样的帮助,但我仍然遇到了困难。

我已经在 Ubuntu 16.04 上安装了 git 和 apache2 并使用添加了所需的模块

sudo a2enmod cgi alias env

然后在/etc/apache2/apache2.conf中添加如下sn-p:

<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 显示/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 和 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

谁能看到我做错了什么?

【问题讨论】:

标签: git apache2.4 git-http-backend


【解决方案1】:
Alias /git /var/www/git

这应该意味着你的网址应该包含 /git:

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

我在Apache configuration 中没有看到这样的别名

【讨论】:

  • 是的,我从 this answer 复制了别名,我不确定是否有必要。我认为主要问题是权限问题,我将目录所有权更改为root,现在我可以克隆它,但我无法推回。我认为它类似于this post
猜你喜欢
  • 2014-10-02
  • 2023-03-30
  • 2016-03-27
  • 2018-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-15
相关资源
最近更新 更多