分類: Linux/Unix 2010-01-14 13:38 29647人閱讀 評(píng)論(8) 收藏 舉報(bào)
公司最近準(zhǔn)備啟用git來(lái)管理公司項(xiàng)目,在CTO張頭的帶領(lǐng)下,歷經(jīng)挫折,終于完成了git服務(wù)器的配置工作。在使用Git之前,大家首先要明確幾個(gè)概念:git服務(wù)器、git客戶端和git服務(wù)器管理員。本文中使用ubuntu當(dāng)作git服務(wù)器,pcA和pcB分別作為服務(wù)器管理員和git客戶端。通常,git服務(wù)器上需要安裝OpenSSH Server、Git、Gitosis和Apache2(如果想使用Gitweb的話)。 本文將主要介紹git服務(wù)端和管理員相關(guān)的一些配置方法,客戶端及管理員的git操作方法將在另一篇文章中作詳細(xì)介紹。 (一) Git服務(wù)端 1.請(qǐng)使用apt-get update和apt-get upgrade命令更新當(dāng)前系統(tǒng),如果不更新,在后面安裝一些程序的時(shí)候可能會(huì)出現(xiàn)某些依賴包沒(méi)安裝的現(xiàn)象。
2.安裝OpenSSH Server( ubuntu) (當(dāng)前用戶為wirror800) 首先,使用ps -e|grep ssh命令,檢查本機(jī)上是否已經(jīng)運(yùn)行ssh服務(wù)。如果沒(méi)有,繼續(xù);否則,跳過(guò)此步驟。 執(zhí)行命令: sudo apt-get install openssh-server
3.修改ssh服務(wù)端配置文件 /etc/ssh/sshd_config (當(dāng)前用戶為wirror800) Port 22 # 修改成你想要的登陸端口,如2222 PermitRootLogin no # 禁止root用戶登陸 StrictModes yes # 檢查密鑰的用戶和權(quán)限是否正確,默認(rèn)打開的 RSAAuthentication yes # 啟用 RSA 認(rèn)證 PubkeyAuthentication yes # 啟用公鑰認(rèn)證 PasswordAuthentication no # 禁止密碼認(rèn)證,默認(rèn)是打開的 ServerKeyBits 1024 # 修改后變?yōu)榇藸顟B(tài),將ServerKey強(qiáng)度改為1024比特 PermitEmptyPasswords no # 修改后變?yōu)榇藸顟B(tài),禁止空密碼進(jìn)行登錄
修改完成后,重啟ssh服務(wù): sudo /etc/init.d/ssh restart 注意:至此,服務(wù)端SSH的操作就已經(jīng)結(jié)束了。網(wǎng)上說(shuō)的“ id_rsa文件拷貝到Client端的~/.ssh/目錄下,將id_rsa.pub拷貝到 Server端的~/.ssh/目錄下,改名為authorized_keys ”其實(shí)都是不準(zhǔn)確的。id_rsa是使用 ssh-keygen生成的rsa私鑰, id_rsa.pub 是同時(shí)生成的公鑰,服務(wù)器端通信使用的秘鑰可以應(yīng)該由服務(wù)器管理員來(lái)創(chuàng)建和管理,如果你想把當(dāng)前用戶wirror800作為管理 員也是可以的,相關(guān)管理員的操作見(jiàn)本文第二部分。不推薦在ubuntu服務(wù)器端建立管理員賬號(hào)。 建議大家參考一下OpenSSH的相關(guān)內(nèi)容:http://www./doc/zh_CN/books/handbook/openssh.html
4.安裝git (當(dāng)前用戶為wirror800) sudo apt-get install git-core 安裝git過(guò)程中可能會(huì)遇到一些依賴包下載失敗的情況,主要是由于ubuntu的中文站點(diǎn)訪問(wèn)的問(wèn)題,我們可以到其英文站點(diǎn) 上下載相關(guān)文件并進(jìn)行手動(dòng)安裝。給大家一個(gè)鏈接地址: http://archive./ubuntu/pool/main/
5.安裝gitosis(為什么要使用gitosis是大家首先需要明確的問(wèn)題) (當(dāng)前用戶為wirror800) (1)在你喜歡的位置下,新建一個(gè)文件夾,用來(lái)存放下載的gitosis文件,如 mkdir ~/gitosis_setup (2)安裝gitosis cd ~/ gitosis_setup git clone git://eagain.net/gitosis cd gitosis sudo python setup.py install 注意:如果python setup.py install失敗,需要安裝python-setuptools.py sudo apt-get install python-setuptools.py
6. 為gitosis創(chuàng)建系統(tǒng)用戶 (當(dāng)前用戶為wirror800) sudo adduser --system --shell /bin/sh --gecos 'git SCM user' --group --disabled-password --home /home/git git 這種方法是網(wǎng)上比較常見(jiàn)的方法,創(chuàng)建的是一個(gè)禁用密碼的git用戶,但在使用su命令切換git用戶的時(shí)候,空密碼老是 驗(yàn)證失敗,大家可以使用下面的方法來(lái)創(chuàng)建git用戶: sudo useradd -m git sudo password git
7. 運(yùn)行g(shù)itosis(當(dāng)前用戶為wirror800) (1)將管理員生成的公鑰上傳或拷貝到服務(wù)器上。這里的公鑰需要在git服務(wù)器管理員下使用ssh-keygen -t rsa命令來(lái)創(chuàng)建, 網(wǎng)上流傳的方法是scp /your pub_path/id_rsa.pub ${SERVER_IP}:id_rsa.pub。我們這里使用的是直接U盤拷貝的方法。 (2)初始化gitosis 進(jìn)入到拷貝過(guò)來(lái)的id_rsa.pub所在目錄:cd /tmp sudo chmod 777 id_rsa.pub sudo -H -u git gitosis-init < id_rsa.pub (或者切換到git用戶下執(zhí)行gitosis-init < id_rsa.pub也可以,記得exit切換回當(dāng)前用戶) 此時(shí),會(huì)在/home/git目錄下生成一些目錄,如果想要?jiǎng)e人能夠clone gitosis-admin.git,需要執(zhí)行以下操作: sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update 至此,gitosis的安裝工作已完成,其相關(guān)配置可以有管理員來(lái)操作,然后再提交到服務(wù)器上。以下是關(guān)于gitweb的安裝配置, 不需要的同學(xué),請(qǐng)?zhí)^(guò)下面的8~10步。
8.安裝gitweb (當(dāng)前用戶為wirror800) sudo apt-get install gitweb
9.安裝apache2 sudo apt-get install apache2
10.配置gitweb (當(dāng)前用戶為wirror800) (注意后面的點(diǎn)) (2)修改配置: sudo vi /etc/ gitweb.conf 將 $projectroot 改為gitosis-admin.git所在目錄: /home/git/repositories (3)修改 /home/git/repositories權(quán)限,默認(rèn)情況下,gitosis將 repositories權(quán)限設(shè)置為不可讀的 sudo chmod 777 -R /home/git/repositories
11.編輯apache2配置文件,建立web站點(diǎn) (當(dāng)前用戶為wirror800,默認(rèn)情況下可以忽略此步驟) (1) 編輯apache2配置文件 ubuntu中默認(rèn)的web目錄是/var/www,默認(rèn)的cgi目錄是 /usr/lib/cgi-bin/,安裝完成gitweb后,gitweb的gitweb.cgi會(huì)自動(dòng)放置 到該目錄下。如果你的cgi路徑不是默認(rèn)的/usr/lib/cgi-bin/,需要將gitweb安裝在/usr/lib/cgi-bin中的gitweb.cgi復(fù)制到原來(lái)配置 的cgi-bin路徑,并修改apache的配置文件/etc/apache2/apache.conf: SetEnv GITWEB_CONFIG /etc/gitweb.conf (2)重新啟動(dòng)apache:sudo /etc/init.d/apache2 restart,訪問(wèn)http://localhost/cgi-bin/gitweb.cgi
(二) Git 管理員(git bash下運(yùn)行) 1.安裝msysgit, 下載地址:http://code.google.com/p/msysgit/downloads/list 缺省安裝。
2.生成服務(wù)器管理員公鑰。 執(zhí)行命令ssh-keygen -t rsa,操作時(shí)刻參照第一部分第7步,用于提供給服務(wù)器端初始化gitosis。
3.從服務(wù)器 克隆gitosis-admin.git 首先選定目錄,如G盤:cd /g/ 然后,新建一個(gè)目錄mkdir gitproject git clone git@YOUR_SERVER:gitosis-admin.git ( YOUR_SERVER可以是你的服務(wù)器名稱或者ip,我這里的ubuntu的ip為192.168.1.102 ) 4. 編輯 gitosis.conf cd gitosis-admin 你將看到以下文件gitosis.conf和keydir/,gitosis.conf是gitosis的配置文件,用于配置用戶和權(quán)限,keydir/是所有組成員的 公鑰。 vi gitosis.conf, 打開gitosis.conf文件,內(nèi)容為: [group gitosis-admin] 這個(gè)是管理組的權(quán)限,members中的用戶名就是剛才上傳的公鑰里面的用戶名。 把內(nèi)容修改為: [gitosis] 其中 gitweb = yes表示啟用對(duì)gitweb的支持。 這里定義了一個(gè)叫apps 的組,授予Administrator@LILIN和wirror800@192.168.1.102 兩個(gè)用戶寫“apps ”這個(gè)repo的權(quán)限
然后push到服務(wù)端后,服務(wù)器端就立刻生效。 git commit -a -m “created a new repository” git push 這樣就 更新了服務(wù)端的權(quán)限。
5.創(chuàng)建一個(gè)app的repo mkdir apps cd apps git init 6.創(chuàng)建、編輯 .gitignore , 用于忽略某些不需要進(jìn)行代碼管理的內(nèi)容,如rails的應(yīng)用可能如下: .DS_Store 7.編輯 .git/description 內(nèi)容, 加上apps 的說(shuō)明 8. 提交代碼 git remote add origin git@YOUR_SERVER:apps.git git add . git commit -am "imitial import" git push origin master:refs/heads/master
cd ../gitosis-admin cp member_1.pub keydir/ cp member_2.pub keydir/ git add keydir/member_1.pub keydir/member_2.pub
修改gitosis.conf,并提交 [group apps]
git commit -a -m "Granted new members commit rights to apps"
10. 其它成員獲取apps的代碼 git clone git@YOUR_SERVER:apps.git
在windows下安裝git服務(wù)器也是可以的,我們開始嘗試使用Cygwin來(lái)操作,但在使用gitweb的時(shí)候遇到困難。git畢竟誕生于 linux,還是建議大家使用linux來(lái)搭建git服務(wù)器吧。Mr. Zhang也提供了一個(gè)可以在windows下安裝git服務(wù)器的方法,鏈接地址奉獻(xiàn) 給大家:http://www./git/setting-up-a-msysgit-server-with-copssh-on-windows/ 。再次感謝CTO Mr. Zhang 這幾天 執(zhí)著的奉獻(xiàn)精神,讓我受益匪淺。 |
|