rhel5/centos5服务器架设笔记:SVN(subversion)的安装和配置

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 (转自老鸟rhel5/centos5服务器架设笔记:SVN(subversion)的安装和配置)

Comments