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