# 4.6 服务器上的 Git - Smart HTTP

# Smart HTTP

我们一般通过 SSH 进行授权访问,通过 git:// 进行无授权访问,但是还有一种协议可以同时实现以上两种方式的访问。 设置 Smart HTTP 一般只需要在服务器上启用一个 Git 自带的名为 git-http-backend的 CGI 脚本。 该 CGI 脚本将会读取由 git fetchgit push命令向 HTTP URL 发送的请求路径和头部信息, 来判断该客户端是否支持 HTTP 通信(不低于 1.6.6 版本的客户端支持此特性)。 如果 CGI 发现该客户端支持智能(Smart)模式,它将会以智能模式与它进行通信, 否则它将会回落到哑(Dumb)模式下(因此它可以对某些老的客户端实现向下兼容)。

在完成以上简单的安装步骤后, 我们将用 Apache 来作为 CGI 服务器。 如果你没有安装 Apache,你可以在 Linux 环境下执行如下或类似的命令来安装:

$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env

该操作将会启用 mod_cgimod_aliasmod_env等 Apache 模块, 这些模块都是使该功能正常工作所必须的。

你还需要将 /srv/git的 Unix 用户组设置为 www-data,这样 Web 服务器才能读写该仓库, 因为运行 CGI 脚本的 Apache 实例默认会以该用户的权限运行:

+

关注公众号,获取验证码 !

验证码:
Last Updated: 5/25/2023, 2:35:11 PM