2

Centos7下使用gitolite搭建git服务器

安装较新版本Git

因为安装gitolite需要使用git,所以需要事先安装git。Centos7的git版本默认是1.8,但是现在的git最新版已经是2.x了,还是升级一下比较好。

首先安装git所需的依赖包

# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 
# yum install gcc perl-ExtUtils-MakeMaker

下载

# cd /usr/src
# wget https://www.kernel.org/pub/software/scm/git/git-2.10.4.tar.gz (可以到https://www.kernel.org/pub/software/scm/git/去找想要下载的版本,我这里下载的是2.10.4) 
# tar -zxvf git-2.10.4.tar.gz(解压)

安装

# cd git-2.10.4
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install

在配置环境这里我出现了一个问题,执行下面的命令之后,成功的在bashrc文件看到了追加的内容,但是当git --version时,依旧还是之前的版本号,不太清楚是什么原因导致的。。。

echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
// echo 输出显示一段字符串 
// >> 将输出内容追加到目标文件中

寻找解决办法,找到了stackoverflow的一个问答(https://stackoverflow.com/questions/21820715/how-to-install-latest-version-of-git-on-centos-7-x-6-x),找到了解决办法.

# yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm

# yum update git

最终git --version版本号显示正确

安装gitolite

安装之前

gitolite搭建的git服务器是以ssh公钥认证为基础的,无论是普通用户还是管理员都需要通过公钥才能访问gitolite服务器。
在安装gitlolite之前,我们需要一个管理员公钥,管理员通过该公钥连接gitolite服务器,克隆gitolite-admin版本库(这个版本库只有管理员才能操作),然后管理员通过该版本库来进行添加新用户、添加授权、添加新仓库等一系列行为。

(1)在管理员所在的客户端上创建ssh公钥
可以使用下面的命令在用户主目录下创建名为~/.ssh/id_rsa.pub的公钥文件和名为~/.ssh/id_rsa的私钥文件

# ssh-keygen

(2)将该公钥文件拷贝到服务器端,以便安装gitolite时备用
可以使用ftp或者邮件的方式将文件传到服务器端,最方便的是scp命令。

# scp [-P port] ~/.ssh/id_rsa.pub user@host:/yourpath
// 如果不是默认端口号 加上 -P 指定端口号
// scp -P port ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx:/tmp/admin.pub  注意这里更改为你自己的服务器地址
// 这里是将该公钥文件放到了远端的/tmp目录下,并命名为admin.pub

从源代码安装

(1)创建gitolite专用账号

# adduser git

执行完上述命令之后,你就会发现在/home目录下多了一个git的目录。你也可以使用passwd git 来给git用户添加密码,但是我这里取消了git用户的口令passwd --delete git,我的目的是只能通过公钥进行认证。

(2)切换到专用账号,后续操作都以该用户身份进行

# su - git
# mkdir ~/bin
# git clone git://github.com/sitaramc/gitolite.git
# ./gitolite/install -ln ~/bin 创建连接
# ls ~/bin

执行上面的最后一个命令后:
结果图2

# gitolite setup -pk /tmp/admin.pub 
// 当然,也可以在root用户时,将该公钥文件拷贝到/home/git目录下,这样的话可以直接使用

结果图2

出现上面出现警告不要怕,这是正常的~

那么恭喜,你已经完成了gitolite的安装

测试连接

切换到你的管理员账户

//我这里是root
# su - root
# git clone git@xxx.xxx.xxx.xxx:gitolite-admin // 如果不是默认端口22,命令为:git clone ssh://git@xxx.xxx.xxx.xxx:port/gitolite-admin
# cd gitolite-admin
# ls

结果图3

好了,剩下的就是配置的事喽~

配置gitolite服务器

在客户端克隆的gitolite-admin目录下,默认有两个子目录conf/和keydir/

keydir目录存放用户公钥,初始只有一个管理员admin的公钥(admin.pub),之后新加的用户的公钥文件都会放在这里。

conf/gitolite.conf这里配置用户的权限,包括读写。初始内容为

repo gitolite-admin
    RW+ = admin
repo testing
    RW+ = @all

意思是:gitolite-admin版本库,只有admin用户可以读写以及强制更新。testing版本库,任何人都可以读写以及强制更新

添加新用户

管理员需要做的就是拿到用户的公钥文件,将文件以username.pub进行重命名,将其放入到gitolite-admin版本库的keydir目录下。

# cp /path/ziv.pub keydir/ 
//标识用户ziv

然后执行git addgit commitgit push之后,才算是用户添加完成。

更改授权

新用户添加完毕后,需要为新用户添加授权。很简单,修改conf/gitolite.conf文件即可。

管理员进入gitolite-admin版本库,编辑文件。

# vi conf/gitolite.conf

修改为如下的话:

@team1 ziv peter jane

repo gitolite-admin
    RW+ = admin
repo testing
    RW+ = @team1

意思是:testing版本库,只有team1用户组下的用户才能够读写以及强制更新

执行git add git commit git push,添加授权完成。

具体的授权语法,详情请看:http://www.worldhello.net/gotgit/05-git-server/040-gitolite.html#id10

参考资料

【1】https://www.unixmen.com/install-gitolite-centos-7/
【2】http://www.worldhello.net/gotgit/05-git-server/040-gitolite.html#gitolite


luckyziv
1.2k 声望52 粉丝

摸索中前进!!