> CentOS > CentOS服务器 > 环境配置 >

CentOS 7 64位下安装Gitolite

0. 安装前提

 

  • sh
  • git 1.6.6 或更高版本,我使用的是CentOS 7 64位,yum install git.x86_64,的Git版本是1.8.x
  • perl 5.8.8 或更高版本,CentOS 7自带perl 5.16.x
  • openssh 5.0或更高版本,CentOS 7自带
  • 为Git专门建立的用户,我使用的账号名是:git
  • 专有账号,最好不带ssh的设置,也就是在$HOME目录下面没有.ssh文件夹的存在;另外,最好专有账号在sudoers组下面,这样可以使用sudo,做root权限的工作
另外,我使用的是Mac,所以要将客户端的ssh的公钥上传到git服务器上,并且根据Gitolite的要求,这个公钥要放到专有账号的主目录下面,而不是合并到ssh的.ssh/authority_keys文件当中。因为Mac上没有ssh-copy-id的命令,所以采用的上传的命令如下:
cat .ssh/id_rsa.pub| ssh [git专有账号]@[目标服务器] "umask 077; cat >> [git用户名].pub"
这里需要替换方括号中对应的内容,其中最后.pub的是代表上传到服务器上以后的文件名,Gitolite要求使用将来使用的git用户名作为文件名,比如我的Git用户名为:michael_li,那么以上命令最后的部分就是michael_li.pub
 
1. 安装Gitolite
切换到当前用户的主目录:
cd ~
运行下列命令,从github下载Gitolite,并安装:
git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
这时会把gitolite命令安装到账号主目录下的bin文件夹,同时自动将$HOME/bin路径添加当前的$PATH下,通过:
vim .bash_profile
可以看到,这样在任意目录下面都可以执行gitolite命令。
 
2. 将公钥对应的用户建立为Gitolite的管理员:
gitolite setup -pk michael_li.pub
这里需要根据自己的公钥文件名来替换,参考准备步骤里的最后一段。执行该命令后,Gitolite会自动将.ssh目录和authority_keys文件建好,并将对应的管理员的公钥文件合并进去。在控制台可以看到两个警告就是在提示这两个步骤。
 
如果上面这个命令没有执行,说明$HOME/bin没有在$PATH下面。要么使用绝对路径:$HOME/bin/gitolite,要么添加好$PATH再执行。如果是添加到$PATH中,要记得用source命令重新应用一下环境变量。
 
3. 管理Gitolite
对Gitolite的管理并不是在服务器端完成的,而是在安装好Gitolite以后,服务上自动会建立两个git库,一个是gitolite-admin和test。
因此需要把服务器上的gitolite-admin克隆到客户端,即前面ssh公钥对应的客户端,在客户端执行命令:
git clone git@host:gitolite-admin
在客户端的gitolite-admin目录下有两个文件夹,conf下的gitolite.conf用于管理git库,以及对应的权限;新加用户的ssh公钥文件需要按照“用户名.pub”的命名格式,放在keydir目录下。这里的ssh公钥用户名需要和conf下gitolite.conf中管理的的用户名对应。
 
接下来就像使用普通的git版本库一样的,把gitolite-admin下的变更都commit,并push到服务器上。服务器上的Gitolite会根据内容自动建立新的git版本库,并放置在服务器专有账号主目录下的repositories文件夹下:
git add conf
git add keydir
git commit -m "added foo repo, gave access to Jason"
git push
 
到此为止,Gitolite应该可以正常使用了。具体Git的学习还是博大精深的,推荐蒋鑫的《Git权威指南》,里面讲得很细,但是太细了,要看很多内容以后,心里才有数具体怎样去做,耐着性子读下去,对原理的说明还是非常透彻的。照着命令敲,都可以看到效果的。
(责任编辑:IT)