- 操作系统:
我在安装Ubuntu Server时就把Server类型定为OpenSSH Server,如果还没有安装ssh,需要手动执行安装命令:sudo apt-get install ssh
- git:
安装非常简单,只需要执行命令:sudo apt-get install git即可。
第二步是给系统增加一个名为git的新用户,以后所有连接git server的client都会运行在这个受限用户的空间里
sudo adduser \
--system \
--shell /bin/bash \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git
第三步,为git用户创建.ssh目录
$ su git
$ cd
$ mkdir .ssh
第四步,让developer将他们自己的公钥(public key)发给你,并加到/home/git/.ssh/authorized_keys文件中
$ cat /tmp/id_rsa.john.pub >> ˜/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ˜/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ˜/.ssh/authorized_keys
如果还没有公钥,需要developer在本地运行ssh-keygen命令生成公钥/私钥对,缺省情况下保存在%home%/.ssh目录下,文件id_rsa为私钥, id_rsa.pub为公钥。
第五步,创建空的git repository
git init --bare my.git
第六步,项目组成员就可以从自己的电脑访问git server了,repository url: git@yourserver:path_of_my.git
- gitolite:
如果对权限控制没有要求,那么上面的git server配置已经完成了。gitolite是加在git之上的权限控制工具,安装之后,我们可以将权限控制细化到repository甚至是branch级别。如果确定要安装gitolite,那么上面的git配置只要做到第二步就可以了,后面的步骤会有不同的配置,由gitolite自动完成。
gitolite的安装也很简单:sudo apt-get install gitolite
下面,我们要创建一个具有admin权限的初始用户,这个用户访问git server也需要ssh keys,现在就创建出来:
ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub /tmp/local.pub
之所以将新生成的公钥copy到tmp目录中,是因为后面的操作要以用户名为git的身份操作,该用户对root home没有访问权限。
第二步,初始化gitolite
sudo su git
echo "PATH=%HOME%/bin:$PATH" > ~/.bashrc
gl-setup /tmp/local.pub
exit
命令gl-setup会打开gitolite的配置文件,这时只要接受缺省配置并保存退出即可。
注:检查文件/home/git/.ssh/authorized_keys的权限,确保其owner和group都是git。
第三步,配置git权限
gitolite初始化会生成一个特别的git库,gitolite-admin.git,专门用于权限管理。
git clone git@localhost:gitolite-admin.git
cd gitolite-admin
此时可以看到两个目录,conf目录下唯一的文件gitolite.conf用来设定repository和branch的访问权限。
文件初始内容为:
repo gitolite-admin
RW+ = local
repo testing
RW+ = @all
现在我文件末尾加上下面两行:
repo csi
RW+ = @all
然后运行git命令commit, push之后,gitolite就会生成一个名为csi的git repository,且对所有人均可读写。这里的所有人是指公钥已经提交到gitolite-admin/keydir目录或其子目录下的用户。初始条件下,里面只有初始化gitolite时指定的local.pub。gitolite就会将新加的公钥文件添加到/home/git/.ssh/authorized_keys文件中。
以上配置完成后,用户就可以通过url: git@gitserver:csi.git访问git server了