Centos7下使用gitolite搭建git服務(wù)器
安裝較新版本Git
因?yàn)榘惭bgitolite需要使用git,所以需要事先安裝git。Centos7的git版本默認(rèn)是1.8,但是現(xiàn)在的git最新版已經(jīng)是2.x了,還是升級(jí)一下比較好。
首先安裝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
在配置環(huán)境這里我出現(xiàn)了一個(gè)問(wèn)題,執(zhí)行下面的命令之后,成功的在bashrc文件看到了追加的內(nèi)容,但是當(dāng)git --version時(shí),依舊還是之前的版本號(hào),不太清楚是什么原因?qū)е碌?。?!?/p>
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
// echo 輸出顯示一段字符串
// >> 將輸出內(nèi)容追加到目標(biāo)文件中
尋找解決辦法,找到了stackoverflow的一個(gè)問(wèn)答(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版本號(hào)顯示正確
安裝gitolite
安裝之前
gitolite搭建的git服務(wù)器是以ssh公鑰認(rèn)證為基礎(chǔ)的,無(wú)論是普通用戶還是管理員都需要通過(guò)公鑰才能訪問(wèn)gitolite服務(wù)器。
在安裝gitlolite之前,我們需要一個(gè)管理員公鑰,管理員通過(guò)該公鑰連接gitolite服務(wù)器,克隆gitolite-admin版本庫(kù)(這個(gè)版本庫(kù)只有管理員才能操作),然后管理員通過(guò)該版本庫(kù)來(lái)進(jìn)行添加新用戶、添加授權(quán)、添加新倉(cāng)庫(kù)等一系列行為。
(1)在管理員所在的客戶端上創(chuàng)建ssh公鑰
可以使用下面的命令在用戶主目錄下創(chuàng)建名為/.ssh/id_rsa.pub的公鑰文件和名為/.ssh/id_rsa的私鑰文件
# ssh-keygen
(2)將該公鑰文件拷貝到服務(wù)器端,以便安裝gitolite時(shí)備用
可以使用ftp或者郵件的方式將文件傳到服務(wù)器端,最方便的是scp命令。
# scp [-P port] ~/.ssh/id_rsa.pub user@host:/yourpath
// 如果不是默認(rèn)端口號(hào) 加上 -P 指定端口號(hào)
// scp -P port ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx:/tmp/admin.pub 注意這里更改為你自己的服務(wù)器地址
// 這里是將該公鑰文件放到了遠(yuǎn)端的/tmp目錄下,并命名為admin.pub
從源代碼安裝
(1)創(chuàng)建gitolite專用賬號(hào)
# adduser git
執(zhí)行完上述命令之后,你就會(huì)發(fā)現(xiàn)在/home目錄下多了一個(gè)git的目錄。你也可以使用passwd git來(lái)給git用戶添加密碼,但是我這里取消了git用戶的口令passwd --delete git,我的目的是只能通過(guò)公鑰進(jìn)行認(rèn)證。
(2)切換到專用賬號(hào),后續(xù)操作都以該用戶身份進(jìn)行
# su - git
# mkdir ~/bin
# git clone git://github.com/sitaramc/gitolite.git
# ./gitolite/install -ln ~/bin 創(chuàng)建連接
# ls ~/bin
執(zhí)行上面的最后一個(gè)命令后:

# gitolite setup -pk /tmp/admin.pub
// 當(dāng)然,也可以在root用戶時(shí),將該公鑰文件拷貝到/home/git目錄下,這樣的話可以直接使用

出現(xiàn)上面出現(xiàn)警告不要怕,這是正常的~
那么恭喜,你已經(jīng)完成了gitolite的安裝
測(cè)試連接
切換到你的管理員賬戶
//我這里是root
# su - root
# git clone git@xxx.xxx.xxx.xxx:gitolite-admin // 如果不是默認(rèn)端口22,命令為:git clone ssh://git@xxx.xxx.xxx.xxx:port/gitolite-admin
# cd gitolite-admin
# ls

好了,剩下的就是配置的事嘍~
配置gitolite服務(wù)器
在客戶端克隆的gitolite-admin目錄下,默認(rèn)有兩個(gè)子目錄conf/和keydir/
keydir目錄存放用戶公鑰,初始只有一個(gè)管理員admin的公鑰(admin.pub),之后新加的用戶的公鑰文件都會(huì)放在這里。
conf/gitolite.conf這里配置用戶的權(quán)限,包括讀寫(xiě)。初始內(nèi)容為
repo gitolite-admin
RW+ = admin
repo testing
RW+ = @all
意思是:gitolite-admin版本庫(kù),只有admin用戶可以讀寫(xiě)以及強(qiáng)制更新。testing版本庫(kù),任何人都可以讀寫(xiě)以及強(qiáng)制更新
添加新用戶
管理員需要做的就是拿到用戶的公鑰文件,將文件以u(píng)sername.pub進(jìn)行重命名,將其放入到gitolite-admin版本庫(kù)的keydir目錄下。
# cp /path/ziv.pub keydir/
//標(biāo)識(shí)用戶ziv
然后執(zhí)行git add,git commit, git push之后,才算是用戶添加完成。
更改授權(quán)
新用戶添加完畢后,需要為新用戶添加授權(quán)。很簡(jiǎn)單,修改conf/gitolite.conf文件即可。
管理員進(jìn)入gitolite-admin版本庫(kù),編輯文件。
# vi conf/gitolite.conf
修改為如下的話:
@team1 ziv peter jane
repo gitolite-admin
RW+ = admin
repo testing
RW+ = @team1
意思是:testing版本庫(kù),只有team1用戶組下的用戶才能夠讀寫(xiě)以及強(qiáng)制更新
執(zhí)行git add git commit git push,添加授權(quán)完成。
具體的授權(quán)語(yǔ)法,詳情請(qǐng)看: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