Centos7下使用gitolite搭建git服務器

Centos7下使用gitolite搭建git服務器

安裝較新版本Git

由於安裝gitolite須要使用git,因此須要事先安裝git。Centos7的git版本默認是1.8,可是如今的git最新版已是2.x了,仍是升級一下比較好。html

首先安裝git所需的依賴包git

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

下載github

# 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(解壓)

安裝centos

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

在配置環境這裏我出現了一個問題,執行下面的命令以後,成功的在bashrc文件看到了追加的內容,可是當git --version時,依舊仍是以前的版本號,不太清楚是什麼緣由致使的。。。bash

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版本號顯示正確ssh

安裝gitolite

安裝以前

gitolite搭建的git服務器是以ssh公鑰認證爲基礎的,不管是普通用戶仍是管理員都須要經過公鑰才能訪問gitolite服務器。
在安裝gitlolite以前,咱們須要一個管理員公鑰,管理員經過該公鑰鏈接gitolite服務器,克隆gitolite-admin版本庫(這個版本庫只有管理員才能操做),而後管理員經過該版本庫來進行添加新用戶、添加受權、添加新倉庫等一系列行爲。curl

(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

相關文章
相關標籤/搜索