本文运行的环境是64位CentOS7
直接安装Apache和Subversion
yum -y install httpd
yum -y install subverion
如果/usr/lib64/httpd/modules下面没有mod_dav_svn.so和mod_authz_svn.so需要进行安装
yum -y install mod_dav_svn
配置Apache:/etc/httpd/conf/httpd.conf
# 监听端口
Listen 80
其他配置请参考Apache相关说明
在/etc/httpd/conf.d下创建subversion.conf (注:名字不重要.conf),内容如下:
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNParentPath "/opt/svn/" # SVNPath /opt/svn/repos/ AuthType Basic AuthName "SVN Repo" AuthUserFile "/opt/svn/htpasswd" AuthzSVNAccessFile "/opt/svn/authz" Require valid-user </Location>
其中Location /svn 为访问路径,如果写成Location / 将覆盖Apache默认首页
SVNParentPath可以设置多个版本库的父目录,可以同时访问多个版本库。例如在/opt/svn下有两个版本库分别为dev和release那么就可以通过URL:<URL>/svn/dev和<URL>/svn/release分别访问
也可以单独设置SVNPath到具体的一个版本库,那<URL>/svn就访问指定的这个版本库
在/opt/svn下创建2个文件分别为:htpasswd和authz
其中authz可以从版本库中的conf目录下复制出来,具体的配置跟SVN原生配置相同就不再多做说明
单独说一下用户文件htpasswd,具体命令可以查询htpasswd命令的用法,这里只介绍几个用到的语句
htpasswd -c htpasswd user1
创建一个用户文件并添件用户user1
第一个htpasswd是命令,第二个是文件名,可以使用别的名字,当然配置文件里也要设置成对应的文件名
htpasswd htpasswd user2
添加用户user2
添加两个用户都需要在单独行输入密码两次进行确认,也可以一行命令执行
htpasswd -b htpasswd user3 123456
删除用户
htpasswd -D htpasswd user3
创建版本库
svnadmin create repos
创建了以后通过<URL>/svn/repos访问
这时候有可能出现db/txn-current-lock: Permission denied
执行
setsebool -P httpd_unified=1 chcon -R -t httpd_sys_content_rw_t /opt/svn/repos chown -R apache /opt/svn/repos
其中第一行只需要执行一次,第二行需要在每个版本库执行,具体代码的作用请查询SELinux
这时候重新访问有可能出现Could not open the requested SVN filesystem
执行
chmod -R 755 /opt/svn/repos
再访问就没有问题了
如果要批量创建版本库,写个小脚本处理
if [ "$1" = "" ]; then echo ‘please input repo name‘ else svnadmin create $1 chcon -R -t httpd_sys_content_rw_t $1 chmod -R 755 $1 chown -R apache $1 fi
本文出自 “MMX的沙罗双树园” 博客,请务必保留此出处http://ohmmx.blog.51cto.com/12884864/1924668
原文地址:http://ohmmx.blog.51cto.com/12884864/1924668