SVN的安裝和配置
技術準備
檢查軟件包your_package是否安裝
#rpm -qa | grep your_package
安裝your_package軟件包
#rpm -ivh your_package
或者
#rpm -Uvh your_package
步驟1、檢查并安裝SVN以及相關軟件包
請確認下面軟件包有沒有安裝,如果沒有安裝,請到rhel5/centos5光盤找到這些軟件包并安裝
openssl-0.9.8b-8.3.el5
openssl-devel-0.9.8b-8.3.el5
mod_ssl-2.2.3-6.el5
mod_auth_mysql-3.0.0-3.1
mysql-server-5.0.22-2.1
mysql-5.0.22-2.1
mysql-devel-5.0.22-2.1
subversion-1.4.2-2.el5
mod_dav_svn-1.4.2-2.el5
如果安裝正常的話,應該在/etc/httpd/modules目錄下能找到這些模塊
mod_authz_svn.so
mod_dav_svn.so
mod_auth_mysql.so
步驟2、初始化repository
創建svn的項目庫父路徑,我把/svn/repos做為svn的項目庫父路徑。這個目錄是任意的,如果是多個項目庫則必須在同一個父路徑下
#mkdir /svn/repos
我們通過如下命令初始化一個svn項目庫TelecomRepositorys
#svnadmin create /svn/repos/TelecomRepositorys
重復上面的命令創建多個項目庫,如
#svnadmin create /svn/repos/OtherRepositorys
或者你指定SVN庫的存儲方式
#svnadmin create –fs-type fsfs /svn/repos/TelecomRepositorys
或者
#svnadmin create –fs-type bdb /svn/repos/TelecomRepositorys
默認是bdb(Berkeley DB)的存儲方式,不過一般人更喜歡fsfs的存儲庫方式
步驟3、創建登陸用戶文件[如果用數據庫認證的話,此步可忽略]
在/svn目錄下創建登陸用戶文件.htpasswd以及2個用戶test1,test2
#htpasswd -c /svn/.htpasswd test1
#htpasswd /svn/.htpasswd test2
步驟4:創建認證數據庫[如果用登陸用戶文件認證的話,此步可忽略]
登陸mysql
#mysql -u root -p
創建數據庫svn_auth
mysql>create database svn_auth;
mysql>user svn_auth;
創建用戶svn
mysql>GRANT ALL PRIVILEGES ON *.* TO svn@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
創建表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(’test1′, ENCRYPT(’password’));
mysql> insert into user values(’test2′, ENCRYPT(’password’));
mysql>commit;
步驟5、SVN訪問控制
在/svn目錄下創建訪問控制文件文件svnaccess,名字任意,不過在以后的配置過程中你必須使用正確的名字,文件內容為
[groups]
# harryharry_and_sally = harry,sally
[/]
*=rw
我們可以看到最后2行才是有效的,意思是對所有的項目,所有人都有讀寫(rw)的權限,當然我們還可以對某個項目單獨進行限制,設置如下
[groups]
# harryharry_and_sally = harry,sally
[TelecomRepositorys:/]
test1=r
*=rw
意思是對于項目庫TelecomRepositorys,用戶test1只有讀權限,其他人有讀寫權限
步驟6、Apache和SVN集成
編輯apache的配置文件/etc/httpd/conf/httpd.conf文件或者/etc/httpd/conf.d/subversion.conf文件
如果你使用登陸文件認證的方式(步驟3),添加如下內容
<Location /svn>
DAV svn
SVNParentPath /svn/repos
AuthzSVNAccessFile /svn/svnaccess
AuthType Basic
AuthName “SVN Repositorys”
AuthUserFile /svn/.htpasswd
Require valid-user
</Location>
如果你使用數據庫認證的方式(步驟4),添加如下內容
<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是我們創建的文件,如果名字自定義的話,請在http.conf配置正確,同樣需要正確配置的還有數據庫用戶svn,數據庫svn_auth,表名users等等。
步驟7、安全訪問設置[必須設置,否則svn無法訪問]
修改目錄的屬主和訪問權限
#chown apache.apache -R /svn
#chmod 755 -R /svn
修改SELinux的設置
禁用SELinux(強烈不推薦)或者在SELinux圖形管理界面中勾上Disable SELinux protection for httpd
daemon這個選項,否則apache這個虛擬用戶無法訪問/svn目錄,當然你也可以用更好的方法設置apache的訪問權限.
步驟8、重新啟動Apache服務器
執行如下命令
#service httpd restart
或者
#/etc/init.d/httpd restart
鍵入下面的url看是否能正確的訪問svn。
http://localhost/svn/TelecomRepositorys
原文:http://blog.cnlaoke.com/2009/08/03/44/