`
wbj0110
  • 浏览: 1604866 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Git 守护进程

    博客分类:
  • Git
Git 
阅读更多

对于提供公共的,非授权的只读访问,我们可以抛弃 HTTP 协议,改用 Git 自己的协议,这主要是出于性能和速度的考虑。Git 协议远比 HTTP 协议高效,因而访问速度也快,所以它能节省很多用户的时间。

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

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

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

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

以守护进程的形式运行该进程的方法有很多,但主要还得看用的是什么操作系统。在 Ubuntu 主机上,可以用 Upstart 脚本达成。编辑该文件:

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

加入以下内容:

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 进程也会自动启动。要是进程意外退出或者被杀掉,也会自行重启。在设置完成后,不重启计算机就启动该守护进程,可以运行:

initctl start local-git-daemon

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

接下来,我们必须告诉 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 项目的细节和历史。

http://git-scm.com/book/zh/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-Git-%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B

分享到:
评论

相关推荐

    Gogit是Gogs的守护进程可视化客户端

    4. **启动Gogit**:完成配置后,通过命令行或图形界面启动Gogit守护进程,它会连接到Gogs并开始工作。 5. **访问Gogit**:打开浏览器,输入Gogit的URL,即可看到Gogit的可视化界面,开始管理和监控你的Gogs实例。 ...

    git+repo+gerrit代码服务器搭建

    2. 配置 Repo:使用 `vim /etc/sv/git-daemon/run` 配置 Repo,以便启动 Git 守护进程。 启动 Git 守护进程 启动 Git 守护进程,以便使得 Repo 服务器能够工作: 1. 使用 `sudo sv start git-daemon` 启动 Git ...

    Git中文学习手册 Git入门

    1 起步 1 1 关于版本控制 1 2 Git 简史 1 3 Git 基础 1 4 安装 Git ...4 9 Git 守护进程 4 10 Git 托管服务 4 11 小结 5 分布式 Git 6 Git 工具 7 自定义 Git 8 Git 与其他系统 9 Git 内部原理

    git服务哭搭建

    本教程将详述如何在Ubuntu系统上搭建Git服务器,包括安装与配置多个组件,如X11VNC远程管理、OpenSSH服务器、Git守护进程(Git Daemon)、Gitweb以及Java。 首先,我们需要【安装Ubuntu系统】,这是一个基于Debian...

    gitGit-1.9.4服务器与TortoiseGit-1.8客户端及中文补丁(附加安装步骤)

    Git服务器的主要组件包括Git守护进程(git-daemon)、Git裸仓库(bare repository)和用于访问控制的钩子脚本(hooks)。在服务器端,你需要配置Git守护进程来监听特定端口,以便客户端可以通过网络连接进行推送和...

    Git说明书电子书,有pdf和epub版本,主要讲解Git怎么使用

    git-scm.com官方开放免费版权的电子书progit,有...4.5 Git 守护进程 4.6 Smart HTTP 4.7 GitWeb 4.8 GitLab 4.9 第三方托管的选择 4.10 总结 5. 分布式 Git 5.1 分布式工作流程 5.2 向一个项目贡献 5.3 维护项目 5.4

    git使用教程详细介绍

    服务器上的 Git 涵盖了 Git 的协议、在服务器上部署 Git、生成 SSH 公钥、架设服务器、公共访问、GitWeb、Gitosis、Gitolite、Git 守护进程、Git 托管服务等内容。 五、分布式 Git 分布式 Git 是一种工作流程,它...

    Git学习手册

    4 9 Git 守护进程 4 10 Git 托管服务 4 11 小结 5 分布式 Git 6 Git 工具 7 自定义 Git 8 Git 与其他系统 9 Git 内部原理 ">1 起步 1 1 关于版本控制 1 2 Git 简史 1 3 Git 基础 1 4 安装 Git 1 5 ...

    git 常用命令和示例

    #### 四、启动Git守护进程(用于网络共享) - **命令:** ```bash git daemon --export-all --enable=receive-pack --detach ``` - **解释:** 使用此命令可以启动一个守护进程,该守护进程允许其他用户通过...

    pro git2中文版

    服务器上的Git详细讲述了如何在服务器上搭建Git环境,包括生成SSH公钥、配置服务器、Git守护进程、Smart HTTP、GitWeb以及GitLab的介绍。这部分内容对于在本地或云端设置Git服务器非常有帮助。 分布式Git章节讲解了...

    progit-zh-v2.1.1.pdf

    服务器上的Git部分介绍了如何在服务器端设置Git环境,包括协议的选择、服务器的搭建、SSH公钥的生成、Git守护进程的配置以及GitWeb的使用等。这对于想要理解如何搭建和维护Git服务器的用户至关重要。 分布式Git部分...

    git教程第二版(中文版)

    在“服务器上的Git”章节中,作者详细介绍了在服务器上搭建和配置Git服务的步骤,包括如何生成SSH公钥、配置服务器、设置Git守护进程和智能HTTP协议等。这些内容对于企业或团队部署内部版本控制系统十分有帮助。 书...

    git详解-PDF

    - **Git守护进程**:提供一个轻量级的服务端,支持通过网络访问Git仓库。 - **Git托管服务**: - **GitHub**:最流行的在线Git托管平台之一,提供了丰富的功能和支持。 - **建立新账户**:注册GitHub账户。 - **...

    SVN,HG,GIT命令对照.pdf

    关于启动服务器的命令,SVN使用svnserve -d 命令来启动服务,Mercurial使用hg serve -p 来启动一个简单的HTTP服务,而GIT使用git daemon --base-path 选项配合 --export-all 来启动GIT守护进程。 需要注意的是,...

Global site tag (gtag.js) - Google Analytics