1. 安装httpd
安装httpd服务:
$ sudo yum install httpd检查httpd是否安装成功:
$ httpd -version Server version: Apache/2.4.6 (CentOS) Server built: Jul 18 2016 15:30:14
2. 安装svnserve
安装svnserve服务:
$ sudo yum install subversion检查svnserve是否安装成功:
$ svnserve --version svnserve, version 1.7.14 (r1542130) compiled Nov 20 2015, 19:25:09
3. 安装mod_dav_svn
mod_dav_svn是apache服务器访问svn的一个模块。通过yum安装:
$ sudo yum install mod_dav_svn安装成功后,会有mod_dav_svn.so和mod_authz_svn.so两个文件。
$ sudo find / -name mod_dav_svn.so /usr/lib64/httpd/modules/mod_dav_svn.so $ sudo find / -name mod_authz_svn.so /usr/lib64/httpd/modules/mod_authz_svn.so
4. 创建svn仓库
$ sudo mkdir /var/www/svn $ sudo svnadmin create /var/www/svn/repos $ ll /var/www/svn/ drwxr-xr-x. 6 root root 80 Nov 10 14:42 repos $ ll /var/www/svn/repos/ drwxr-xr-x. 2 root root 51 Nov 10 14:42 conf drwxr-sr-x. 6 root root 4096 Nov 10 14:42 db -r--r--r--. 1 root root 2 Nov 10 14:42 format drwxr-xr-x. 2 root root 4096 Nov 10 14:42 hooks drwxr-xr-x. 2 root root 39 Nov 10 14:42 locks -rw-r--r--. 1 root root 229 Nov 10 14:42 README.txt
5. 配置权限
修改svn仓库的用户组为apache:
$ sudo chown -R apache:apache /var/www/svn/repos/创建用户文件passwd:
$ sudo touch /var/www/svn/passwd #创建用户文件 ##### 创建密码文件并添加用户,第一次需要这样做 ###### htpasswd -c -m /var/www/svn/passwd liuzp ###### 后续添加用户只需执行htpasswd /var/www/svn/passwd <username>
$ sudo htpasswd /var/www/svn/passwd admin #创建用户admin $ sudo htpasswd /var/www/svn/passwd guest #创建用户guest $ cat /var/www/svn/passwd admin:$apr1$UCkPzZ2x$tnDk2rgZoiaURPzO2e57t0 guest:$apr1$vX1RIUq6$OKS1bqKZSptzsPDYUOJ5x.创建权限文件authz:
$ sudo cp /var/www/svn/repos/conf/authz /var/www/svn/authz $ cat /var/www/svn/authz [/] admin = rw guest = r
6. 配置httpd
$ sudo touch /etc/httpd/conf.d/subversion.conf $ cat /etc/httpd/conf.d/subversion.conf <Location /svn> DAV svn SVNListParentPath on SVNParentPath /var/www/svn AuthType Basic AuthName "Authorization SVN" AuthzSVNAccessFile /var/www/svn/authz AuthUserFile /var/www/svn/passwd Require valid-user </Location>
7. 启动httpd服务
$ sudo systemctl start httpd.service客户端使用http://192.168.12.59/svn/repos就可以访问刚才建立的svn仓库了。 如果返回403错误,可能是防火墙问题。增加防火墙规则:
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https $ sudo firewall-cmd --reload
8.常见错误及其解答
- The URI does not contain the name of a repository. [403, #190001]
解答:这是由于subversion.conf文件中SVNParentPath路径设置不正确引起的,SVNParentPath路径必须为svnadmin create生成数据仓库路劲的父目录,如上面建立数据仓库的命令为svnadmin create /storage/svn/aiezu,则SVNParentPath为/storage/svn。