由於安裝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搭建的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
執行上面的最後一個命令後:
# 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-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