1)初始化repository
創(chuàng)建svn的項目庫父路徑,我把/svn/repos做為svn的項目庫父路徑。這個目錄是任意的,如果是多個項目庫則必須在同一個父路徑下
#mkdir /svn/repos
我們通過如下命令初始化一個svn項目庫zf
#svnadmin create /svn/repos/zf
重復(fù)上面的命令創(chuàng)建多個項目庫,如
#svnadmin create /svn/repos/chenproject
指定存儲方式來報建SVN庫:
#svnadmin create --fs-type fsfs /svn/repos/TelecomRepositorys
或
#svnadmin create --fs-type bdb /svn/repos/TelecomRepositorys
注:默認(rèn)是bdb(Berkeley DB)的存儲方式,不過一般人更喜歡fsfs的存儲庫方式
2)創(chuàng)建登陸的用戶,有兩種方式:以文件的形式,以數(shù)據(jù)庫的形式(mysql)
a)以文件的形式
在/svn目錄下創(chuàng)建登陸用戶文件.htpasswd以及2個用戶chen1,chen2
#htpasswd -c /svn/.htpasswd chen1
#htpasswd /svn/.htpasswd chen2
注:-c是第一次那建文件時要用。在后面添加用戶的時候,就不用-c選項.如果是自己安裝了apaceh,那么找到apache的bin目錄找到htpasswd
b)以數(shù)據(jù)庫的形式
#mysql -u root -p
#mysql>create database svn_auth;
mysql>user svn_auth
創(chuàng)建用戶svn
mysql>GRANT ALL PRIVILEGES ON *.* TO svn@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
創(chuàng)建表users
mysql> CREATE TABLE users (
-> user_name CHAR(30) NOT NULL,
-> user_passwd CHAR(20) NOT NULL,
-> PRIMARY KEY (user_name)
-> );
添加2個測試賬號
mysql> insert into users values('chen1', ENCRYPT('password'));
mysql> insert into user values('chen2', ENCRYPT('password'));
4.SVN訪問控制
在/svn目錄下創(chuàng)建訪問控制文件文件svnaccess,名字任意,不過在以后的配置過程中你必須使用正確的名字,文件內(nèi)容為
[groups]
# harryharry_and_sally = harry,sally
[/]
*=rw
注:意思是對所有的項目,所有人都有讀寫(rw)的權(quán)限,當(dāng)然我們還可以對某個項目單獨進(jìn)行限制,設(shè)置如下
[groups]
# harryharry_and_sally = harry,sally
[zf:/]
chen1=r
*=rw
意思是對于項目庫zf,用戶chen1只有讀權(quán)限,其他人有讀寫權(quán)限
5.Apache和SVN集成
編輯apache的配置文件/etc/httpd/conf/httpd.conf文件或者/etc/httpd/conf.d/subversion.conf文件
如果你使用登陸文件認(rèn)證的方式,添加如下內(nèi)容
<Location /svn>
DAV svn
SVNParentPath /svn/repos
AuthzSVNAccessFile /svn/svnaccess
AuthType Basic
AuthName "SVN Repositorys"
AuthUserFile /svn/.htpasswd
Require valid-user
</Location>
如果是用上面的方式,可能會出現(xiàn)提示authzSVNAccessFile有問題,要確保httpd.conf或是subversion.conf中有添加以下模塊
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
如果你使用數(shù)據(jù)庫認(rèn)證的方式,添加如下內(nèi)容
<Location /svn>
DAV svn
SVNParentPath /svn/repos
AuthzSVNAccessFile /svn/svnaccess
AuthName "SVN Repositorys"
AuthType Basic
AuthMYSQLEnable on
AuthMYSQLUser svn
AuthMySQLPassword password
AuthMYSQLDB svn_auth
AuthMYSQLUserTable users
AuthMYSQLNameField user_name
AuthMYSQLPasswordField user_passwd
Require valid-user
</Location>
注:我們可以看到/svn/svnaccess,/svn/.htpasswd是我們創(chuàng)建的文件,如果名字自定義的話,請在http.conf配置正確,同樣需要正確配置的還有數(shù)據(jù)庫用戶svn,數(shù)據(jù)庫svn_auth,表名users等等。
6.安全訪問設(shè)置[必須設(shè)置,否則svn無法訪問]
修改目錄的屬主和訪問權(quán)限
#chown apache.apache -R /svn
#chmod 755 -R /svn
注:如果有開啟selinux,那么會出現(xiàn)問題,解決方法:
.禁用SELinux(不推薦)
或者
在SELinux圖形管理界面中勾上Disable SELinux protection for httpd daemon這個選項,否則apache這個虛擬用戶無法訪問/svn目錄,當(dāng)然 你也可以用更好的方法設(shè)置apache的訪問權(quán)限.
7.重新啟動Apache服務(wù)器
#service httpd restart
或者
#/etc/init.d/httpd restart
7. 鍵入下面的url看是否能正確的訪問svn。
http://localhost/svn/zf
若頁面有東西,說明成功。