并添加下列脚本内容:
start on startup
stop on shutdown

exec /usr/bin/git daemon \
--user=git --group=git \
--reuseaddr \
--base-path=/opt/git/ \
/opt/git/
respawn
出于安全考虑,强烈建议使用一个对仓库拥有只读权限的用户身份来运行该守护进程 - 你可以创建一个新用户git-ro 并且以该用户身份来运行守护进程。
为简便起见,我们将像 git-shell 一样,同样使用 git 用户来运行它。
当你重启机器时,你的 Git 守护进程将会自动启动,并且如果进程被意外结束它会自动重新运行。为了在不重启的情况下直接运行,你可以运行以下命令:initctl start local-git-daemon
在其他系统中,你可以使用 sysvinit 系统中的 xinetd 脚本,或者另外的方式来实现 - 只要你能够将其命令守护进程化并实现监控。
接下来,你需要告诉 Git 哪些仓库允许基于服务器的无授权访问。你可以在每个仓库下创建一个名为 git-daemon-export-ok 的文件来实现。
$ cd /path/to/project.git
$ touch git-daemon-export-ok
该文件将允许 Git 提供无需授权的项目访问服务。
6、Smart HTTP
我们一般通过 SSH 进行授权访问,通过 git:// 进行无授权访问,但是还有一种协议可以同时实现以上两种方式的访问。
设置 Smart HTTP 一般只需要在服务器上启用一个 Git 自带的名为 git-http-backend 的 CGI 脚本。
该CGI 脚本将会读取由 git fetch 或 git 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_cgi, mod_alias, 和 mod_env 等 Apache 模块, 这些模块都是使该功能正常工作所必须的。
接下来我们要向 Apache 配置文件添加一些内容,来让 git-http-backend 作为 Web 服务器对 /git 路径请求的处理器。
SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
如果留空 GIT_HTTP_EXPORT_ALL 这个环境变量,Git 将只对无授权客户端提供带 git-daemon-export-ok文件的版本库,就像 Git 守护进程一样。
接着你需要让 Apache 接受通过该路径的请求,添加如下的内容至 Apache 配置文件:
<Directory "/usr/lib/git-core*">
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/sanxing/article-72418-10.html
不过比较灵活