程序员人生 网站导航

Git Server搭建

栏目:综合技术时间:2016-02-29 16:59:25

1 参考

所有相干细节都可以从该文档出获得:

http://git.oschina.net/progit/4-%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git.html#

2 安装

Git其实不存在Server端和Clint端之分,在Git Server上安装的也还是Git。最简单的安装方式是直接用系统提供的包管理工具。例如CentOS/RHEL,可使用:

yum install git

3 协议

Git支持4种主要的协议来传输数据:本地传输,SSH 协议,Git 协议和 HTTP 协议, 我们来简单快速地过1下这4种协议。

3.1 FILE 本地协议

对本地协议来说几近只有1种可能的利用场景:即团队使用的是同享的文件系统(例如 NFS),团队中的每个成员都能向访问本地文件系统1样访问它。

3.2 SSH 协议

SSH是Git最经常使用传输协议,这是应为SSH本身已非常成熟且通用的访问协议了,Git基于SSH是非常聪明的选择。另外SSH是4种协议中唯逐一个同时支持读写操作的网络协议

1个典型的SSH协议的repo是这样的:

git clone user@gitserver:/path/to/my-project.git

3.3 GIT 协议

Git 协议是现存最快的传输协议。如果你在提供1个有很大访问量的公共项目,或1个不需要对读操作进行授权的庞大项目,架设1个 Git 守护进程来供应仓库是个不错的选择。它使用与 SSH 协议相同的数据传输机制,但省去了加密和授权的开消。

3.4 HTTP/S 协议

HTTP 协议的好处是易于架设。几条必要的命令就能够让全球读取到仓库的内容。

简单总结1下: 如果是公司的项目,SSH多是你们团队唯1需要使用的协议。如果是开源项目或是允许对项目进行匿名只读访问,那末除SSH 协议以外,还需要支持Git或Http/s协议以便他人访问读取。

4 配置

实际上Git并没有特别的配置,只是如果我们使用SSH协议进行数据传输的话我们需要创建专职的登陆账号和登入密钥,因此所谓的“配置”实际上是SSH相干的配置。

4.1 GIT(SSH) SERVER端配置

创建Git用户和用户组

groupadd git useradd -g git -d /var/git git

命令本省非常简单, 这里要解释的是为何我们要创建这个git用户,这个用户不是为了运行Git而创建的专职用户,而仅仅是为了SSH访问而创建的。正如我们在前面“SSH协议”1节中提到的地址格式:

git clone user@gitserver:/path/to/my-project.git

这里的“user@gitserver”实质上就是SSH在登入时提供的用户和远程主机的命令行格式,所以说,既然我们需要使用SSH的方式登入并进行数据读写,总归是要有1个登入账户吧?OK,那就创建1个叫git专用账户来专门支持git的数据传输吧。

另外,我们把git用户的home目录设定为了/var/git, 用以区分1般的登入账户。而这个/var/git下,是放置所有repository的理想位置。

4.2 GIT(SSH) CLIENT端配置

一样的,并没有甚么真实的git client端配置,还是SSH登陆的问题,不过就是为本地用后创建SSH密钥对,并把公钥拷贝到Server端git用户的~/.ssh/authorized_keys中,简单讲就是:只要本地能通过密钥登入git@gitserver就算是完成了客户真个配置。

关于配置SSH密钥登入,本文不再赘述。只是结合这里的场景重复1个角色:客户端要访问Git Server则应由客户端生成密钥,私钥客户端保存,公钥拷贝至Git Server的Git用户的authorized_keys文件中。

5 操作

配置完成以后,我们就能够在Server端创建(初始化)Repository了。假定的我们要创建的项目就叫“project”,我们在应当在Server端履行以下命令:

$ cd /var/git $ mkdir project.git $ cd project.git $ git --bare init
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐