系統:centos7linux
服務器:阿里雲git
1、前期準備github
1.安裝git算法
yum install git
2.安裝perl vim
yum install perl
3.安裝openssh windows
yum install openssh
4.安裝cpan(若是你的linux裏面沒有,就必須安裝)centos
yum install cpan
5.準備兩個用戶(這兩個用戶能夠是自定義的,而且他們相互之間沒有讀取對方目錄的權限,否則會繞過gitolite,在執行update的hook的時候報環境變量的錯誤),這裏爲了好區分就用git和gitadmin。服務器
useradd git
passwd git
useradd gitadmin
passwd gitadmin
這兩個命令的做用分別是添加用戶和爲改用戶設置密碼ssh
2、配置步驟post
1.首先切換到gitadmin登陸
su gitadmin
2.在gitadmin這個用戶下生成公鑰和祕鑰
ssh-keygen
執行該命令後,公鑰和密碼會默認爲rsa算法,而且保存在該用戶的.ssh目錄下,也就是/home/git/.ssh/id_rsa。
若是想查看生成的公鑰和祕鑰能夠執行cd /home/git/.ssh/,id_rsa就是祕鑰,id_rsa.pub就是公鑰
3.把gitadmin的公鑰複製出來
cp id_rsa.pub tmp/gitadmin.pub
這裏複製的目的是爲了等下切換git用戶能夠設置該公鑰爲具備管理git倉庫權限的公鑰,因此這裏就直接放在tmp目錄下了。
官方規範,把公鑰的名字設爲用戶的名字,以便區分。
4.這裏切換git用戶
su git
這裏的git用戶主要是用來放git倉庫和設置管理員的權限的。
確保~/.ssh/authorized_keys
是空的或不存在的,authorized_keys是用來存儲全部使用gitolite的用戶的公鑰的
5.切換到該用戶的用戶目錄並安裝gitolite
cd
git clone https://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
而後設置git的管理員,也就是咱們的gitadmin
$HOME/bin/gitolite setup -pk /tmp/gitadmin.pub
到這裏gitolite和管理員已經設置完成了
3、添加用戶和推送配置
gitolite的全部添加倉庫和用戶還有設置權限都要經過gitadmin來推送,配置才能生效。
1.如今切換回gitadmin用戶
su gitadmin
而後回到gitadmin的用戶目錄,爲了是把等下克隆的gitolite的管理倉庫,直接放在用戶目錄下便於查找
cd
2.克隆在gitolite管理配置
git clone git@127.0.0.1:gitolite-admin這個地址格式要注意規範,地址寫127.0.0.1是由於在同一臺服務器,若是想用其餘服務器能夠更換地址。
特別要注意的是不能寫成
git clone git@127.0.0.1:/home/git/repostories/gitolite-admin,這樣的寫法也能克隆到項目,可是並非經過gitolite來觸發的。
繞過gitolite的後果會致使後面推送的時候觸發update.pm這個hook報環境變量錯誤。若是沒有成功地使用gitolite來克隆項目,是會提示你要輸入這個帳號的密碼。
當出現密碼提示的時候,請返回查看以前的操做步驟有沒有遺漏,不然,後面的不少操做都沒法實現。
由於咱們前面已經爲gitadmin配置了管理權限的公鑰,理論是能夠直接克隆成功的。
3.打開gitolite-admin
cd gitolite-admin
會看到有conf和keydir兩個文件夾
conf用來添加或刪除倉庫,還有配置用戶的分組還有每一個用戶/分組的讀寫執行權限,查看權限操做能夠直接日後拉。
keydir用來保存每一個使用gitolite的用戶的公鑰,推送成功後,會在git用戶的authorized_keys生成對應公鑰。
3、使用gitolite的來管理用戶的權限
1.打開另外一臺客戶端(我本機使用的是windows系統)
直接輸入
ssh-keygen
大回車連續啪啪啪三次,就會在你C盤用戶目錄的.ssh文件夾下面生成一對公鑰祕鑰
2.把公鑰移到服務器端gitadmin用戶的keydir目錄中。
這裏有兩種方法能夠用:
1)下一個winSCP,直接把文件拖過去。記得改一下名字,如:waldon.pub
2)直接在客戶端使用命令
scp C://Users/waldon/.ssh/id_rsa.pub gitadmin@host:/home/gitadmin/gitolite-admin/keydir/waldon.pub
這裏host是你服務器的ip地址,waldon是我本機的用戶名。
提示輸入gitamdin的密碼後,就會看到上傳公鑰到服務器成功了。
3.咱們再切回root用戶,建立一個新用戶叫waldon。這個用戶名要和你公鑰的名字一致
su root
useradd waldon
passwd waldon
4.切換回gitadmin,打開conf文件夾,編輯gitolite.conf文件
su gitadmin
cd /home/gitadmin/gitolite-admin/conf
vim gitolite.conf
5.爲用戶配置權限
在gitolite-admin倉庫下添加剛剛配置的用戶waldon
repo gitolite-admin
RW+ = gitadmin waldon
按esc而後:wq保存退出
6.推送配置到git服務器
1)cd /home/gitadmin/gitolite-admin 回到gitolite-admin文件夾下
2)git status 查看當前倉庫的變化,這裏應該會顯示keydir/waldon.pub 和 conf/gitolite.conf 兩個變動文件
3)git add . 添加全部變更
4)git commit -m "這裏的提交註釋隨便填" 提交全部變更
5)git push 推送配置,若是不想看到出現的警告,也能夠用git push -u origin master 來具體到推送分支
若是對這裏的命令不熟悉能夠去看看git的相關命令,若是出現要你配置郵箱和用戶名的提示,按他提示的格式輸入便可。
7.切換回git用戶,查看配置是否成功。
su git
cd /home/git/.ssh
cat authorized_keys
當祕鑰出現新的用戶,就表明新增用戶成功了。
最後是一些簡單的倉庫權限配置,gitolite大部分的權限配置只是針對推送的。git的原意就是開源,分享代碼,gitolite的出現已經很變態了,若是還想控制其餘人讀取代碼目錄的
權限,那仍是用SVN吧。
全部的一切操做,除了切換用戶,都是不須要密碼的,由於祕鑰會自動匹配,若是出現了須要密碼的操做,有多是你繞過了gitolite,
會形成鉤子觸發失敗的操做,從而致使推送失敗。