UbuntuServer搭建Git服務器之git和gitolite(二)

最近課題小組需要搭建一臺Git服務器,來進行代碼共享與合作。從各種大牛的博客中瞭解到版本控制經歷了CVS->SVN->GIT,果斷選擇用GIT。但GIT是開發在linux下的軟件,搬到windows下用也是可以的。但爲了學習學習,還是決定用linux做服務器操作系統,然後在windows下進行管理。但是如何搭建GIT呢?用到什麼軟件呢?經過幾尋google,得知有gitosis和gitolite,而且現在的gitolite要更好,果斷選擇最好的。Git服務的提供是通過ssh,對於SSH的簡單用法請參見Git服務器搭建之SSH基本用法(一),因此需要在服務器上安裝SSH服務。下面就如何搭建基礎Git服務器做詳細描述:

 

服務器操作系統爲ubuntu Linux server 12.04.1,假定服務器管理員爲cglab,主機名爲labserver。

1.系統配置及服務安裝

 

(1)Git服務需要SSH,首先確定是否已安裝SSH,Ubuntu 電腦上需要安裝 openssh-server :

       $sudo apt-get install openssh-server

(2)在服務器上創建專用賬號gitadmin,並將此賬號加到gitolite用戶組,用來提供git身份驗證:

$sudoaddgroup gitolite

$sudoadduser --ingroup gitolite gitadmin

2.SSH的公鑰認證

該操作是在客戶端,對於SSH的公鑰認證請自行google。由於不能用同一個公鑰用作shell訪問和gitolite訪問,我們需要建兩個公私鑰對,一個給shell,一個給gitolite用。you cannot use the same key for both shell access and for gitoliteaccess

$ssh-keygen

該命令會在用戶主目錄下創建 .ssh 目錄,並在其中創建兩個文件:

(1)id_rsa, 私鑰文件。是基於RSA 算法創建。該私鑰文件要妥善保管,不要泄漏。

(2)id_rsa.pub, 公鑰文件。和id_rsa 文件是一對兒,該文件作爲公鑰文件,可以公開。

創建了自己的公鑰/私鑰對後,就可以使用下面的命令,實現無口令登錄遠程服務器,即用公鑰認證取代口令認證。

$ssh-keygen –f ~/.ssh/gitadmin  //該命令創建一個指定名字爲gitadmin的公私鑰文件對。

$scp ~/.ssh/gitadmin.pub cglab@labserver:/tmp///上傳到服務器用作gitolite訪問,見gitolite安裝

$ scp ~/.ssh/id_rsa.pubcglab@labserver:/tmp/   //用作shell訪問

$ssh cglab@labserver    //以cglab賬號登陸服務器

cglab@labserver:~$sudo ssh-copy-id –i /tmp/id_rsa.pubgitadmin@labserver  //加入到SSH登陸身份gitamdin,用作shell訪問

 

回到客戶端,在~/.ssh/下創建SSH主機別名,以方便登陸服務器訪問gitolite用。

$vi ~/.ssh/config

其內容爲:

host gitadmin

 user gitadmin

 hostname labserver

 port 22

 identityfile ~/.ssh/gitadmin

$ssh gitadmin  //將以服務器賬號gitadmin身份登陸服務器,注意不能登陸shell,但可訪問gitolite

 

$ssh gitadmin@labserver //將用默認的id_rsa來認證,可以登陸shell

 

3. 安裝git和gitolite

$sudo apt-get install git-coregitolite  //對服務器操作

(1)如果是默認安裝目錄,請用此步,過程中不需要設置任何東東,其repositories目錄默認在/home/usrname/下

$sudo su – gitadmin      //切換賬號到gitadmin

$gl-setup /tmp/gitadmin.pub  //爲gitadmin配置git,其中/tmp/gitadmin.pub爲第二步上傳的公鑰

(2)如果是指定安裝目錄,需要創建目錄並設置相關權限纔可以,比如想把repositories目錄安裝在/srv下則:

$sudo mkdir /srv/repositories

$sudo chown gitadmin/srv/repositories  //改變目錄的擁有者

$sudo su – gitadmin

$gl-setup /tmp/gitadmin.pub  //在此步,設置$REPO_BASE=”/srv/repositories”

 

回到客戶端:

$git clone gitadmin:gitolite-admin  //使用gitadmin的專用公鑰,克隆gitolite-admin 庫

 

 

到此,git服務器的安裝與配置已完成,下篇將介紹其管理。

 

 

輝輝                                

(FightingBull Studio)                

 

 

 

 

 

發佈了32 篇原創文章 · 獲贊 8 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章