Posted on 2007-07-02 10:18
chemz 閱讀(4233)
評(píng)論(2) 編輯 收藏 引用 所屬分類:
Other
subversion安裝配置記錄
由于前些年在版本的管理上采用的都是CVS系統(tǒng),總體上而言還是很優(yōu)秀的,經(jīng)過(guò)了多年
的項(xiàng)目開(kāi)發(fā)管理經(jīng)歷,在使用CVS系統(tǒng)在管理中大型的軟件項(xiàng)目時(shí)還是遇到了很多不可克服的
缺陷和局限性,主要表現(xiàn)在如下的幾個(gè)方向:
1. 無(wú)法進(jìn)行文件名稱的修改活動(dòng),這樣一來(lái)就會(huì)導(dǎo)致必須先刪除該文件再上傳,丟失了
歷史信息,要不就必須到服務(wù)上將xxx,v文件進(jìn)行改名(我采用這種方法,不過(guò)總是
找管理員太不方便了);
2. 目錄名稱沒(méi)有被管理,這樣就不能進(jìn)行改名等動(dòng)作,其實(shí)項(xiàng)目的目錄結(jié)構(gòu)對(duì)于項(xiàng)目的
成功起了非常重要的作用,每次也只能到服務(wù)器上進(jìn)行修改;
3. 項(xiàng)目的分支代價(jià)太高,需要對(duì)每一個(gè)文件都進(jìn)行標(biāo)記,對(duì)于大的項(xiàng)目耗時(shí)太長(zhǎng),并且
基本上不能刪除廢棄了的分支和標(biāo)記,因?yàn)槟菢雍苋菀讓?dǎo)致項(xiàng)目倉(cāng)庫(kù)的損壞,我就遇
到了好多次這種讓人發(fā)狂的情況;
4. 對(duì)于文件二進(jìn)制和文本的處理經(jīng)常會(huì)出現(xiàn)混亂,結(jié)果就使將二進(jìn)制文件當(dāng)作文本上傳
后內(nèi)容被擴(kuò)展導(dǎo)致丟失,因?yàn)橛行r(shí)候二進(jìn)制文件的擴(kuò)展名和某些文本文件的擴(kuò)展名
相同了,所以導(dǎo)致CVS識(shí)別就會(huì)出錯(cuò)。
上面所列舉的就是我這多年來(lái)管理軟件項(xiàng)目開(kāi)發(fā)時(shí)所遇到的幾個(gè)最大的問(wèn)題,其他我沒(méi)
有遇到的問(wèn)題不易再次評(píng)價(jià)。所以為了能夠更好的解決版本管理中遇到的問(wèn)題同時(shí)將版本的
管理工作進(jìn)一步的作好,前一段時(shí)間嘗試著安裝并配置了subversion(簡(jiǎn)稱svn)系統(tǒng),試圖
使用svn來(lái)替換CVS系統(tǒng),以解決上述問(wèn)題。通過(guò)近三個(gè)月的使用感覺(jué)上目前還沒(méi)有遇到其他
的什么工具移植上的問(wèn)題,因?yàn)閟vn和CVS系統(tǒng)在命令行接口上報(bào)此一致,同時(shí)所使用的
TorToiseSVN和TorToiseCVS基本上相同,所以適應(yīng)性非常的好,同時(shí)也解決了上面的幾個(gè)問(wèn)
題,所以特將svn系統(tǒng)的安裝和配置過(guò)程記錄下來(lái)。
1. Linux和svn的安裝
最好將svn系統(tǒng)安裝在Linux操作系統(tǒng)環(huán)境下,這樣一來(lái)系統(tǒng)比較的穩(wěn)定可靠,同時(shí)
也可以減少很多的病毒和攻擊的服務(wù)器日常維護(hù)工作量;我將svn安裝在了RHEL5的
服務(wù)器版本下,其實(shí)該操作系統(tǒng)本身自帶有一個(gè)1.4.2的svn的版本,所以基本上來(lái)
將只要你在安裝操作系統(tǒng)時(shí)選擇了svn就會(huì)安裝該軟件系統(tǒng)了,同時(shí)還需要注意由于
我選擇了采用http協(xié)議作為svn的訪問(wèn)協(xié)議,所以還必須同時(shí)安裝apache和對(duì)應(yīng)與svn
的module,主要有如下的包需要安裝上去:
apr-1.2.7-11.i386.rpm
apr-util-1.2.7-6.i386.rpm
mod_dav_svn-1.4.2-2.el5.i386.rpm
如果你沒(méi)有安裝此三個(gè)軟件包,也可以在安裝完成后手工進(jìn)行安裝就可以了,如果
要確認(rèn)是否成功的安裝了svn可以通過(guò)如下的命令進(jìn)行驗(yàn)證:
svn --version
2. apache和svn的配置
在安裝完成后就可以進(jìn)行配置了,首先必須配置apache一使得apache能成功載入svn
的插件模塊。
2.1. apache的配置
進(jìn)入到/etc/httpd/conf目錄下用vim打開(kāi)httpd.conf配置文件進(jìn)行選項(xiàng)的修改:
a. KeepAlive選項(xiàng)
該選項(xiàng)可以修改也可以不修改,主要是為了提高h(yuǎn)ttp協(xié)議訪問(wèn)的性能,可以
使得svn倉(cāng)庫(kù)的訪問(wèn)更快,KeepAlive表示可以保持http的永久性TCP連接,
省去了每次都需要進(jìn)行重建TCP連接的巨大開(kāi)銷,找到如下幾個(gè)選項(xiàng)并修改:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
b. ServerAdmin/ServerName選項(xiàng)
對(duì)于需要對(duì)系統(tǒng)進(jìn)行管理的可以在ServerAdmin選項(xiàng)設(shè)置成為管理員的email
地址,這樣在出現(xiàn)問(wèn)題時(shí)apache會(huì)自動(dòng)發(fā)送郵件到該地址中;而ServerName
必須設(shè)置為本服務(wù)器的域名,如xxx.xxx.cn:80。
2.2. svn的配置
進(jìn)入到/etc/httpd/conf.d目錄下用vim打開(kāi)subversion.conf配置文件進(jìn)行選項(xiàng)的
修改:
a. module的配置
一定要保證下面的兩句話存在于配置文件中,否則無(wú)法在如svn的模塊,就
無(wú)法訪問(wèn)svn的倉(cāng)庫(kù)了:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
b. 倉(cāng)庫(kù)目錄配置
項(xiàng)目倉(cāng)庫(kù)就是用于存放項(xiàng)目目錄結(jié)構(gòu)的服務(wù)器目錄,一般情況下Linux的規(guī)則
時(shí)間容易變化的內(nèi)容存放在/var目錄下,所以我們需要在/var目錄下創(chuàng)建一個(gè)
svn目錄,這樣所有的項(xiàng)目的根目錄都作為/var/svn/目錄下的一級(jí)子目錄了,
這樣以來(lái)就可以在一個(gè)倉(cāng)庫(kù)目錄下存放多個(gè)項(xiàng)目了;同時(shí)還必須在/var/svn/
目錄下創(chuàng)建一個(gè)conf目錄用于存放svn的配置文件,然后將下面的一段添加到
subversion.conf文件中:
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /var/svn/conf/passwd.conf
AuthzSVNAccessFile /var/svn/conf/authz.conf
Require valid-user
</Location>
上面的配置含義其實(shí)很好理解,就不一一解釋了,而對(duì)于passwd.conf和
authz.conf這兩個(gè)用戶密碼和權(quán)限的配置文件將會(huì)在下面的倉(cāng)庫(kù)配置中進(jìn)行
描述。
配置完成了上述的工作后我們需要驗(yàn)證apache是否能夠啟動(dòng),一般情況下需要通過(guò)
如下的命令來(lái)設(shè)置apache自動(dòng)在系統(tǒng)運(yùn)行時(shí)啟動(dòng):
chkconfig --level 345 httpd on
service httpd start
第一句話表示將httpd設(shè)置成為在模式345下自動(dòng)運(yùn)行。
3. 項(xiàng)目倉(cāng)庫(kù)配置
倉(cāng)庫(kù)的配置基本上來(lái)講就比較的簡(jiǎn)單了通過(guò)如下的命令就可以創(chuàng)建一個(gè)項(xiàng)目的倉(cāng)庫(kù)了:
cd /var/svn
svnadmin create proj
有了項(xiàng)目倉(cāng)庫(kù)后還必須進(jìn)行對(duì)應(yīng)的訪問(wèn)用戶和權(quán)限的配置,否則無(wú)法訪問(wèn),具體如下:
cd /var/sv/conf
htpasswd -b -c passwd.conf user1 pass1
這樣一來(lái)會(huì)自動(dòng)地在/var/svn/conf目錄下創(chuàng)建一個(gè)passwd.conf密碼文件,同時(shí)里面
包含了user1用戶和其密碼pass1,要注意一旦運(yùn)行了該命令后passwd.conf就會(huì)被創(chuàng)建
下次再添加用戶名和密碼時(shí)就不能夠在使用-c參數(shù)了,-c表示重新創(chuàng)建密碼文件,這
樣會(huì)導(dǎo)致以前的信息丟失,緊緊使用-b選項(xiàng)就可以了。
此時(shí)還需要?jiǎng)?chuàng)建一個(gè)權(quán)限控制文件authz.conf,可以通過(guò)vim authz.conf來(lái)完成:
一般情況下內(nèi)容像下面這個(gè)樣子:
[groups]
g_leader = pm
g_dev = dev1,dev2,dev3
#=============================== proj Repository ==========================
[proj:/]
@g_leader = r
@g_dev = rw
user1 = r
* =
[proj:/xxx/tags]
@g_dev = r
dev1 = rw
* =
首先[groups]標(biāo)記所定義的是分組信息(當(dāng)然你可以不分組),一般會(huì)根據(jù)參與者的
性質(zhì)對(duì)其進(jìn)行分組,比如:團(tuán)隊(duì)的領(lǐng)導(dǎo)、開(kāi)發(fā)人員、測(cè)試人員、發(fā)行人員等,因?yàn)樗?br> 們具有相似的權(quán)限,這樣也方便控制;定義的格式非常的簡(jiǎn)單,等號(hào)的左邊表示組名,
右邊是用逗號(hào)隔開(kāi)的用戶名。
下面就是具體的項(xiàng)目和目錄權(quán)限的配置了(可以做的很細(xì),到每一個(gè)項(xiàng)目的子目錄),
[proj:/]標(biāo)簽表示的是某個(gè)項(xiàng)目(proj)的目錄(/)的權(quán)限配置,其中proj表示項(xiàng)目
倉(cāng)庫(kù)名稱,/表示項(xiàng)目的目錄名(此處是根目錄的意思);而下面就可以針對(duì)組或用戶
進(jìn)行配置了,注意組名稱的前面必須要加一個(gè)@符號(hào),權(quán)限只有三種:r、w、無(wú);對(duì)于
不用允許訪問(wèn)的用戶必須保證其等號(hào)的右邊是空的;svn的默認(rèn)情況下是所有的用戶均
具有只讀權(quán)限,如果需要關(guān)閉這個(gè)默認(rèn)的配置必須將* =添加到對(duì)應(yīng)的配置中。
4. 項(xiàng)目的導(dǎo)入
經(jīng)過(guò)上面的配置后svn的系統(tǒng)就可以正常的運(yùn)行了,此時(shí)還需要將項(xiàng)目的目錄導(dǎo)入到
倉(cāng)庫(kù)中,一般情況下可以采用TorToiseSVN進(jìn)行項(xiàng)目的import,其實(shí)很簡(jiǎn)單只要在本
地硬盤中創(chuàng)建好項(xiàng)目的目錄,然后點(diǎn)擊鼠標(biāo)右鍵選擇TortoiseSVN/Import菜單就可
以了。