最近課題小組需要搭建一臺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)