一 安裝服務(wù)器端
下載Apache和SVN源碼包:httpd-2.0.52.tar.gz,subversion-1.1.1.tar.gz
(因?yàn)閞edhat 9默認(rèn)安裝的Apache沒有并包含--enable-so選項(xiàng),所以無法產(chǎn)生mod_dav_svn.沒有這個(gè)模塊,SVN就無法采用http方式運(yùn)行,所以必須重新編譯新的Apache)
以root身份執(zhí)行:
#tar zxvf httpd-2.0.52.tar.gz
#cd httpd-2.0.52
#./configure --enable-dav --enable-so --enable-maintainer-mode
#make
#make install
此時(shí)會(huì)產(chǎn)生/usr/local/apache2目錄
#tar zxvf subversion-1.1.1.tar.gz
#./configure --with-apxs=/usr/local/apache2/bin/apxs
#make
#make install
此時(shí)會(huì)自動(dòng)在/usr/local/apache2/conf/httpd.conf添加
LoadModule dav_svn_module modules/mod_dav_svn.so
安裝完成后,運(yùn)行svnserver --version確認(rèn)版本為1.1.1。
SVN服務(wù)器安裝結(jié)束.
二 建立倉庫Repository
Subversion 的檔案庫是個(gè)中央倉儲(chǔ), 用來存放任意數(shù)量項(xiàng)目的受版本控管數(shù)據(jù),建立方法很簡單
#svnadmin create path/to/repos
舉個(gè)例子:#svnadmin create /home/mysvn
導(dǎo)入項(xiàng)目到版本中心庫
#svn import /tmp/project/ file:///data/repos -m "initial import"
三 運(yùn)行服務(wù)器
Subversion服務(wù)器有兩種運(yùn)行方式,一是可以作為Apache 2.0的一個(gè)模塊,以WebDAV/DeltaV協(xié)議與外界連通;另外,也可使用Subversion 自帶的小型服務(wù)器程序svnserve。該程序使用的是自帶的通訊協(xié)議,可以很容易地透過SSH以
以http方式運(yùn)行
在/usr/local/apache2/conf/httpd.conf中加入:
<Location /svn/repository>
DAV svn
SVNPath /home/mysvn
</Location>
在服務(wù)器的瀏覽器中輸入網(wǎng)址:
http://localhost/svn/repository/
這時(shí)候,你會(huì)看到這樣一副界面:
這表明服務(wù)器已經(jīng)以http方式正常運(yùn)行了.
以svnserve方式運(yùn)行
這種方式的運(yùn)行又可以分為以下兩種(這和vsftp有些相似)
1) standalone mode
直接運(yùn)行 #svnserve –d
運(yùn)行 lsof -i :3690可以看到SVN服務(wù)器已經(jīng)在運(yùn)行
四 客戶機(jī)訪問
客戶機(jī)的訪問方法輿服務(wù)器的運(yùn)行方式有直接關(guān)系
window客戶機(jī):
1) 服務(wù)器以http方式運(yùn)行
安裝完TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi后,在你想工作的目錄下點(diǎn)擊右鍵,執(zhí)行checkout,按上圖輸入即可。
2) 服務(wù)器以svnserve方式運(yùn)行
同上的區(qū)別只是URL of repository變?yōu)?svn://svn服務(wù)器ip/home/mysvn
或者 svn+ssh://svn服務(wù)器ip/home/mysvn
(注意不是//svn服務(wù)器ip//svn/repository)
linux客戶機(jī):
1) 服務(wù)器以http方式運(yùn)行
執(zhí)行 #svn checkout http: //svn服務(wù)器ip/svn/repository
2) 服務(wù)器以svnserve方式運(yùn)行
執(zhí)行 #svn checkout svn://svn服務(wù)器ip/home/mysvn
或者 #svn checkout svn+ssh://svn服務(wù)器ip/home/mysvn
五 客戶認(rèn)證機(jī)制
這輿服務(wù)器的運(yùn)行方式有關(guān)
服務(wù)器以svnserve方式運(yùn)行
默認(rèn)下客戶可以以匿名方式通過svn://方式任意訪問檔案庫,為了限制其權(quán)限,比如只允許讀操作,可以通過修改檔案庫conf子目錄中的svnseve.conf文件來實(shí)現(xiàn)。
#vi /home/mysvn/conf/svnseve.conf
修改[general]字段下內(nèi)容為:
anon-access = read
如果設(shè)為anon-access = none,則匿名用戶不可以通過svn://方式訪問檔案庫
為了實(shí)現(xiàn)用戶認(rèn)證,我們一般采用svn+ssh://訪問機(jī)制。
首先在svnseve.conf文件設(shè)置anon-access = none禁止匿名用戶通過svn://方式訪問檔案庫
在其后加入auth-access = write一行
auth-access 是限制有援權(quán)的使用者(使用svn+ssh:// 來登入) 的存取權(quán)限,我們?cè)O(shè)為是可以讀寫。
當(dāng)用戶通過svn+ssh://訪問時(shí),服務(wù)器會(huì)自動(dòng)啟動(dòng)ssh認(rèn)證機(jī)制,要求用戶輸入密碼,對(duì)于window用戶來說還需要安裝第三方軟件openssh,才可以采用這種機(jī)制
服務(wù)器以http方式運(yùn)行
比如我們想給 Sally 與 Harry 送交存取檔案庫的權(quán)限. 首先, 我們必須把它們加入到密碼檔案.
# ### 第一次: 以 -c 建立檔案
# htpasswd -c /etc/svn-auth-file harry
New password: *****
Re-type new password: *****
Adding password for user harry
# htpasswd /etc/svn-auth-file sally
New password: *******
Re-type new password: *******
Adding password for user sally
#
接著,在/usr/local/apache2/conf/httpd.conf的加入:
<Location /svn/repository >
DAV svn
SVNPath /home/mycvs
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>
重新啟動(dòng) Apache后,如果有人要訪問SVN服務(wù)器,系統(tǒng)會(huì)要求他輸入用戶名和密碼。 只有輸入Sally 或Harry的用戶名和相應(yīng)的密碼,才可以對(duì)檔案庫進(jìn)行修改和訪問
六 添加用戶
打開/conf/目錄,打開svnserve.conf找到一下兩句:
# [general]
# password-db = passwd
去之每行開頭的#,其中第二行是指定身份驗(yàn)證的文件名,即passwd文件
同樣打開passwd文件,將
# [users]
# harry = harryssecret
# sally = sallyssecret
這幾行的開頭#字符去掉,這是設(shè)置用戶,一行一個(gè),存儲(chǔ)格式為“用戶名 = 密碼”,如可插入一行:admin = admin888,即為系統(tǒng)添加一個(gè)用戶名為admin,密碼為admin888的用戶