使用Gitolite搭建Git服務器
需要用到的軟件
其實Gitolite的搭建過程中,Gitweb、Apache不是必須的,Gitweb、Apache跟Gitolite一起使用,看到的效果就像這個一樣 http://git.chromium.org/gitweb/
環境
假設Server用的是Ubuntu 12.04
Client能通過SSH連接至Ubuntu Server
Server、Client都安裝好Git,怎么安裝?Google一下吧!
如何搭建?
Server:
添加一個計算機用戶,並設置密碼,如git:
# -s指令用於指定用戶的默認shell,不指定的話,默認是/bin/sh,這個shell在ssh下支持有問題
sudo useradd -m git -s /bin/bash
sudo passwd git
Client:
設置你本機的git用戶信息(非必須):
git config --global user.name “xxx”
git config --global user.email xxx@email.com
創建一個SSH公鑰/私鑰對:
ssh-keygen -t rsa
上傳公鑰到服務器:
scp ~/.ssh/id_rsa.pub git@server(ip):/home/git/admin.pub
SSH連接到Server:
ssh user@server
Server:
server取得root,安裝gitolite:
sudo -sH
apt-get install gitolite
切換至git用戶,運行gitolite安裝腳本:
su - git
gl-setup /home/git/admin.pub
客戶端獲取gitolite管理庫:
git clone git@server:gitolite-admin.git
cd gitolite-admin
編輯gitolite配置文件,進行項目、用戶添加等操作:
sudo vim conf/gitolite.conf
怎么對庫進行管理、用戶添加、授權等操作,gitolite的文檔里都有詳細介紹的。
配置好以后,push到Server上即可!
Gitweb的安裝、配置(都是在Server上)
首先安裝一下Apache:
sudo apt-get install apache2
安裝Gitweb:
sudo apt-get install gitweb
安裝完成后,修改下gitweb.conf:
sudo vim /etc/gitweb.conf
$projectroot = "/home/git/repositories"
重啟下Apache
sudo service apache2 restart
若 "/home/git/repositories" 可被訪問,即可通過 http://server/gitweb 訪問你的git庫了!
補充: 修改git相關文件與目錄的權限,以支持gitweb的訪問。
vi ~/.gitolite.rc
# 將 $REPO_UMASK = 0077; 改為 $REPO_UMASK = 0027; 以支持gitweb的權限。
# 在每次push后,gitolite會修改相關的repo的權限。
chmod g+r /home/gitolite/projects.list
chmod -R g+rx /home/gitolite/repositories
下面還有更簡單的方法
安裝gitolite以及git,只需要指定gitolite就可以,gitolite依賴git,apt-get會自動的尋找到依賴包,並安裝。
sudo apt-get install gitolite
創建git用戶,並切換到git用戶下, 用戶名最好為git,這樣用ssh方式遷出的格式為:git@server:repo,如果是其他用戶名的話,那么@前就為相應的用戶信息。
sudo useradd -m git -s /bin/bash
passwd git
su - git
准備gitolite管理員的公鑰文件,win下可以用putty生成,只要注意把Key comment的內容設置為空,再把公鑰拷貝出來后黏貼到相關的文件就好了。
# 用vi創建相關的文件,並在其中貼入公鑰信息
vi ~/admin.pub
執行gitolite的安裝,命令后跟的是管理員的公鑰文件。
gl-setup ~/admin.pub
根據需要修改配置文件,完成安裝。
