Subversion 是基于 APR—Apache 可移植運行庫構建的。APR 提供了 Subversion
需要的全部與操作系統(tǒng)相關的操作接口,如磁盤訪問, 網(wǎng)絡訪問,內(nèi)存管理等。這使得 Subversion 能夠使用 Apache
作為其網(wǎng)絡服務器程序之一,Subversion 對 APR 的依賴并不 意
味著必須使用 Apache 作為它的網(wǎng)絡服務器程序。APR是一個獨立的程序庫,任何應用程序都可以使用它。相反,它意味著 Subversion
能夠在所有可運行 Apache 服務器的操作系統(tǒng)上運行,如 Windows, Linux, 各種 BSD, Mac OS X, Netware
等。
一、安裝
Subversion的安裝方式很多,本文采用最簡單的方式安裝。在 Subversion 的網(wǎng)站(http://subversion./ )上通常可以找到由志愿者提供下載的程序包。
http://www./subversion/os/downloads?type=centos
選擇CentOS即可下載制作好的二進制文件,采用如下命令即可安裝:
- Install Instructions:
- # chmod +x svninstall_centos5_wandisco.sh
- # ./svninstall_centos5_wandisco.sh
安裝的時候選擇安裝httpd,安裝之后有如下提示:
- Installation complete.
- You can find the subversion configuration file for apache HTTPD at /etc/httpd/conf.d/subversion.conf
- By default, the modules are commented out in subversion.conf.
- To enable the modules, please edit subversion.conf and remove the # infront of the LoadModule lines.
- You should then restart httpd (/etc/init.d/httpd restart)
Subversion的配置文件就在/etc/httpd/conf.d/subversion.conf,之后的配置工作也就圍繞他進行了。
二、賬號和權限文件配置
1. 創(chuàng)建賬號密碼文件
htpasswd –c /svn/passwd.conf test
輸入密碼,兩次確認
注意:第一次設置用戶密碼要加入 –c 這個參數(shù),以后就可以不用了
2. 創(chuàng)建資料庫
首先要創(chuàng)建一個資料庫(我使用單資料庫的方式),使用svnadmin增加資料庫
svnadmin create /svn/svnroot/icec
到icec下看是不是多了文件,多了就是說明創(chuàng)建成功
3.創(chuàng)建權限文件
在icec目錄的conf目錄下,找到authz文件,復制到/svn目錄下,重命名為authz.conf
vi authz.conf
- [groups] #組
- Admin = test #admin組成員
- [icec:/] #版本庫icec的權限
- @Admin = rw #admin組有讀寫的權限
- [telnet:/]
- @Admin = rw
- [/]
- * = r #svn父目錄所有人都與讀的權限
注意:最后的[/]這個要設置好了,這里面的權限設置可以讓你對icec和telnet的版本庫有相同的權限,一般不要也行,個人建議不要
三、Subversion配置subversion.conf
1、模塊加載
打開/etc/httpd/conf.d/subversion.conf,這個文件中的如下兩行取消注釋。
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
相應的so文件已經(jīng)自動copy到了apache/modules。這些工作就不用自己動手了。
2、版本庫配置
下面需要自己動手修改subversion.conf最后增加以下內(nèi)容
- 單個版本庫:
- <Location /svn> #svn在訪問的時候用到,http:
- DAV svn #不用修改
- SVNPath /svn/svnroot/icec #資料庫的絕對地址
- AuthType Basic
- AuthName "Subversion repository"
- AuthUserFile /svn/passwd.conf #賬號文件
- AuthzSVNAccessFile /svn/authz.cong #權限文件
- Require valid-user
- </Location>
- 多個版本庫:
- <Location /svn>
- DAV svn
- SVNListParentPath on #這個是多版本特有的
- SVNParentPath /svn/svnroot #多版本庫時的共同目錄,與但版本的不同
- AuthType Basic
- AuthName " Subversion repository "
- AuthUserFile /svn/passwd.conf
- AuthzSVNAccessFile /svn/authz.conf
- Require valid-user
- </Location>
3、注意事項
注意:
(1)單個版本庫就是SVNPath /svn/svnroot/icec跟./svnadmin create
/svn/svnroot/icec目錄要一樣,要不忙死你……【這個是對單個版本庫】,多個版本庫知道svn的主目錄,我這就是
SVNParentPath /svn/svnroot
(2)AuthzSVNAccessFile是權限控制文件,單個版本庫不需要,多個版本庫要設置不同版本庫的權限
(3)目錄svnroot目錄的權限設置成755
四、驗證安裝
打開瀏覽器,輸入地址為http://服務器ip/svn
出現(xiàn)登陸窗口,輸入用戶名跟密碼,
如果可以正常打開如上頁面則說明安裝配置正常,可以正常使用了,在頁面上可以看到由于目前資料庫中沒有內(nèi)容,因此看到的內(nèi)容為空。
五、導入數(shù)據(jù)到資料庫
Cd /usr/local/subversion/bin
./svn import /要導入的目錄 file:///svn/svnroot -m “說明文字”
重新打開瀏覽器,輸入地址http://服務器ip/svn,輸入用戶名密碼。
安裝配置就完成了。
六、可能遇到的問題
整個過程不會一帆風順的,這里介紹一些可能遇到的問題。
1、【這個問題是我創(chuàng)建單個版本庫時遇到的】安裝好了后,瀏覽器打開http://服務器ip/svn,登陸出現(xiàn)不了頁面,出現(xiàn):
<D:error>
<C:error/>
<m:human-readable errcode="2"> Could not open the requested SVN
filesystem </m:human-readable> </D:error>
解決:這是httpd.conf里的<Locate svn>中的SVNPath指向錯誤沒指到創(chuàng)建的資料庫
2、輸入賬號密碼提示不能認證,查看Apache的/etc/httpd/logs/error_log,有如下提示:
[Tue Oct 05 18:07:09 2010]
[error] [client 125.223.118.90] (13)Permission denied: Could not open
password file: /svn/svnroot/passwd
[Tue Oct 05 18:07:09 2010] [error]
[client 125.223.118.90] access to /svn failed, reason: verification of
user id 'test' not configured
從日志看,因為檢查過配置文件沒有拼錯,所以可以肯定是權限問題。從ls命令的結果可以看出,由于passwd的權限是沒有問題的。
后來看了一位朋友的帖子【Linux環(huán)境下搭建Apache+subversion+svnmanager】的啟發(fā),可能是SELinux引發(fā)的問題,
于是執(zhí)行命令:
chcon -R -h -t httpd_sys_content_t /svn/svnroot
后來還是不行。執(zhí)行以下命令后搞定
chcon -R -h -t httpd_sys_content_t /svn
總結教訓:還是linux不熟悉的原因造成的,我是linux的新手??磥淼脨貉alinux的基本知識。
3、組(group)設置
在TortoiseSVN中做Commit操作時可能遇到如下錯誤:
Can't open file '/svn/svnroot/telnet/db/txn-current-lock': Permission denied
可以將telnet的所屬組設置為apache
chgrp -R apache /svn/svnroot/telnet
4、文件夾創(chuàng)建刪除屬性
在TortoiseSVN中做Commit操作時可能遇到如下錯誤:
Can't open '/svn/svnroot/telnet/db/tempfile.tmp': Permission denied
Can't make directory '/svn/svnroot/telnet/dav/activities.d': Permission denied
設置telnet 群組的訪問方式為“創(chuàng)建和刪除文件”