服务器上的 Git - Git 守护进程

Git 守护进程

对于提供公共的,非受权的只读访问,咱们能够抛弃 HTTP 协议,改用 Git 本身的协议,这主要是出于性能和速度的考虑。Git 协议远比 HTTP 协议高效,于是访问速度也快,因此它能节省不少用户的时间。git

重申一下,这一点只适用于非受权的只读访问。若是建在防火墙以外的服务器上,那么它所提供的服务应该只是那些公开的只读项目。若是是在防火墙以内的 服务器上,可用于支撑大量参与人员或自动系统(用于持续集成或编译的主机)只读访问的项目,这样能够省去逐一配置 SSH 公钥的麻烦。web

但无论哪一种情形,Git 协议的配置设定都很简单。基本上,只要以守护进程的形式运行该命令便可:shell

git daemon --reuseaddr ----export-all --base-path=/opt/git/ /opt/git/

这里的 --reuseaddr 选项表示在重启服务前,不等以前的链接超时就当即重启。而 --base-path 选项则容许克隆项目时没必要给出完整路径。最后面的路径告诉 Git 守护进程容许开放给用户访问的仓库目录。假若有防火墙,则须要为该主机的 9418 端口设置为容许通讯。安全

以守护进程的形式运行该进程的方法有不少,但主要还得看用的是什么操做系统。在 Ubuntu 主机上,能够用 Upstart 脚本达成。编辑该文件:服务器

/etc/event.d/local-git-daemon

加入如下内容:iphone

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-ro 对仓库只能读不能写。),并用它的身份来启动进程。这里为了简化,后面咱们仍是用以前运行 Gitosis 的用户 'git'。性能

这样一来,当你重启计算机时,Git 进程也会自动启动。要是进程意外退出或者被杀掉,也会自行重启。在设置完成后,不重启计算机就启动该守护进程,能够运行:url

initctl start local-git-daemon

而在其余操做系统上,能够用 xinetd,或者 sysvinit 系统的脚本,或者其余相似的脚本 — 只要能让那个命令变为守护进程并可监控。spa

接下来,咱们必须告诉 Gitosis 哪些仓库容许经过 Git 协议进行匿名只读访问。若是每一个仓库都设有各自的段落,能够分别指定是否容许 Git 进程开放给用户匿名读取。好比容许经过 Git 协议访问 iphone_project,能够把下面两行加到 gitosis.conf 文件的末尾:操作系统

[repo iphone_project]
daemon = yes

在提交和推送完成后,运行中的 Git 守护进程就会响应来自 9418 端口对该项目的访问请求。

若是不考虑 Gitosis,单单起了 Git 守护进程的话,就必须到每个容许匿名只读访问的仓库目录内,建立一个特殊名称的空文件做为标志:

$ cd /path/to/project.git
$ touch git-daemon-export-ok

该文件的存在,代表容许 Git 守护进程开放对该项目的匿名只读访问。

Gitosis 还能设定哪些项目容许放在 GitWeb 上显示。先打开 GitWeb 的配置文件 /etc/gitweb.conf,添加如下四行:

$projects_list = "/home/git/gitosis/projects.list";
$projectroot = "/home/git/repositories";
$export_ok = "git-daemon-export-ok";
@git_base_url_list = ('git://gitserver');

接下来,只要配置各个项目在 Gitosis 中的 gitweb 参数,便能达成是否容许 GitWeb 用户浏览该项目。好比,要让 iphone_project 项目在 GitWeb 里出现,把 repo 的设定改为下面的样子:

[repo iphone_project]
daemon = yes
gitweb = yes

在提交并推送过以后,GitWeb 就会自动开始显示 iphone_project 项目的细节和历史。

相关文章
相关标签/搜索