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
执行上面的最后一个命令后:
# gitolite setup -pk /tmp/admin.pub
// 当然,也可以在root用户时,将该公钥文件拷贝到/home/git目录下,这样的话可以直接使用
出现上面出现警告不要怕,这是正常的~
那么恭喜,你已经完成了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
好了,剩下的就是配置的事喽~
配置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 add
,git commit
, git 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