gitolite服務部署:linux
1,在git服務器端安裝git並建立git用戶。git
yum install -y gitgithub
useradd git 正則表達式
2,生成gitolite的管理帳戶,這個帳戶也能夠在git服務器端生成,也能夠在本身的客戶端生成。(爲了防止人員離職,致使管理員丟失,建議在git服務器端生成。我這裏是在git服務器端生成管理員用戶的)vim
su - gitbash
ssh-keygen 服務器
cp /home/git/.ssh/id_rsa.pub /tmp/admin.pubssh
屢次回車,生成祕鑰對,找到~/.ssh/id.rsa.pub 上傳到git服務器的/tmp上,並命名爲admin.pubide
3,切換到git用戶,並確保~/.ssh/authorized_keys文件爲空或者不存在測試
rm -f ~/.ssh/authorized_keys
4,安裝gitolite
git clone git://github.com/sitaramc/gitolite #下載gitolite軟件
mkdir -p $HOME/bin #建立存放gitolite相關命令的目錄
gitolite/install -to $HOME/bin #安裝gitolite,若是執行這個報錯,請先執行 yum install -y perl-Time-HiRes。
echo "PATH=$PATH:$HOME/bin" >> .bashrc #將gitolite命令加入環境變量中,建議退出終端,從新進入。
gitolite setup -pk /tmp/admin.pub #將客戶端的用戶配置爲git的管理員,其實就是將admin.pub的公鑰添加到authorized_keys裏面去了。
5,查看~/.ssh/authorized_keys 裏面是否已經有添加進去的公鑰
cat ~/.ssh/authorized_keys
另外,安裝完成後,咱們能夠在$HOME下看到一個repositories目錄,裏面有兩個倉庫,分別爲gitolite-admin和testing,其中gitolite-admin爲管理倉庫。
6,克隆gitolite-admin倉庫
cd /tmp
git clone git@127.0.0.1:gitolite-admin
進入gitolite-admin倉庫,會看到兩個目錄,分別爲keydir和conf,其中keydir目錄用來管理用戶,在其中能夠看到默認有一個文件叫作admin.pub,正是咱們以前生成的管理用戶的公鑰文件.
查看conf裏面的配置文件:
[git@iz2ze0n2ws2p2jpw1i9fd4z conf]$ cat gitolite.conf repo gitolite-admin RW+ = admin repo testing RW+ = @all
能夠簡單的發現 repo 定義倉庫名
RW+ 表示權限 可讀可寫可強制更新
admin 表示admin用戶,即admin用戶能夠對gitolite-admin這個倉庫有可讀可寫可強制更新權限。
7,添加用戶
添加用戶其實蠻簡單,只要在管理員克隆下來的gitolite-admin中,將用戶添加到conf/gitolite.conf中,並將要添加用戶的pub文件放入keydir中便可,而後push到git服務器中便可。
我這裏添加一個xiaobai用戶,並設置爲管理員。
首先在原來的admin用戶下克隆代碼(上面已經克隆了):
cd /tmp/gitolite-admin
vim /conf/gitolite.conf
上傳xiaobai用戶的公鑰到keydir中
執行git相關命令,將變化的內容推送到git服務器上。
git add . git commit -m 'add xiaobai user to admin' git push
切換到小白帳戶,測試建立用戶是否成功,克隆代碼
git clone git@git服務器地址:gitolite-admin
以下
8,添加倉庫,主要是更改gitolite.conf文件,定義1個repo便可。
9,權限說明
經常使用的配置: 1,定義組 @admin=xiaobai xiaoa #定義一個admin組,組員有xiaobai,xiaoa 2,定義一個倉庫 repo spider 3,@all 全部用戶 repo spider RW = @all #表示全部用戶對spider倉庫有讀寫權限
具體的能夠參考以下:
1 @admin = breezey chenliang 2 repo gitolite-admin 3 RW+ = breezey 4 repo ossxp/.+ 5 C = @admin 6 RW = @all 7 repo testing 8 RW+ = @admin 9 RW master = junio 10 RW+ pu = junio 11 RW cogito$ = pasky 12 RW bw/ = linus 13 - = somebody 14 RW tmp/ = @all 15 RW refs/tags/v[0-9] = junio 咱們先對該示例文件做一個簡單的說明,以方便你們對受權文件有一個基本的瞭解: 第1行定義了一個admin的組,該組裏包含兩個用戶,分別是breezey chenliang 第2-3行定義了一個版本庫gitolite-admin,而且指定breezey用戶對gitolite-admin倉庫擁有讀(R),寫(W)和強制更新(+)的權限 第4行經過正則表達式定義了一組版本庫,即ossxp目錄下的全部版本庫 第5行定義admin組的用戶能夠在ossxp目錄下建立版本庫 第6行定義全部用戶對ossxp目錄下的版本庫擁有讀寫的權限,但不能強制更新 第7行定義了一個版本庫testing 第8行定義了admin組用戶對testing庫的全部分支和tag擁有讀、寫、重置、添加、刪除的權限 第9行定義junio用戶對master分支有讀寫的權限,還包括以master開頭的全部分支。 第10行定義junio用戶對pu分支擁有讀寫,重置,添加,刪除的權限,還包括以pu開頭的全部分支 第11行定義pasky用戶對cogito分支擁有讀寫的權限,僅此分支,精確匹配 第12行定義linus用戶對bw/擁有讀寫的權限 第13行定義somebody用戶對testing倉庫有寫的權限 第14行定義全部用戶對tmp/擁有讀寫的權限 第15行定義junio能夠讀寫任意tag,包括以v加上數字開頭的tag 組的定義: @admin = breezey chenliang @user = @admin @staff user1 版本庫的定義: repo ossxp/.+ #匹配ossxp目錄下的全部版本庫 repo myrepo.$ #匹配以myrepo.結尾的版本庫 repo sandbox/test1 #建立sandbox下的test1庫 受權關鍵字: C: C表明建立。僅在符版本庫受權時可使用。用於指定誰能夠建立與通配符匹配的版本庫。 R,RW,RW+: R爲只讀,RW爲讀寫,RW+爲讀寫及強制push RWD,RW+D: 只有當受權指令中定義了正則引用(正則表達式定義的branch、tag等),纔可使用該受權指令。其中 D 的含義是容許刪除和正則引用匹配的引用(branch or tag) RWCD,RW+CD: 只有當受權指令中定義了正則引用(正則表達式定義的branch、tag等),纔可使用該受權指令。其中 C 的含義是容許建立和正則引用匹配的引用(branch or tag),D的含義是容許刪除和正則引用匹配的引用(branch or tag ) -: 減號(-)是一條禁用指令,只對寫操做起做用,不會對用戶的讀操做施加影響。