在CentOS6.3 64位机器上配置SVN服务器,并设置只允许HTTPS连接,可以配置多个repos源,每个源都拥有自己的组和成员,用于权限控制。
安装相关软件
- Apache - yum install httpd httpd-devel 
- Subversion 
yum install mod_dav_svn subversion
- SSL 
yum install mod_ssl openssl
创建版本库
- #mkdir /var/svn 
- #cd /var/svn 
- #svnadmin create myapp 
- #chown -R apache.apache myapp 
- #chcon -R -t httpd_sys_content_t myapp //selinux相关 
相似的,我添加了另一个版本库myapp2
修改配置文件/etc/httpd/conf.d/subversion.conf,添加如下内容
- <Location /repos> 
- DAV svn 
- SVNParentPath /var/svn 
- AuthType Basic 
- AuthName "Authorization Realm" 
- AuthUserFile /var/svn/passwd //用户文件 
- AuthzSVNAccessFile /var/svn/authz //用户权限控制文件 
- Require valid-user 
- </Location> 
此处需要注意添加/var/svn/passwd文件的相关权限,否则可能出想权限错误。相关日志文件为/var/log/httpd/error_log 遇到问题要查看错误日志。
用户文件passwd的内容只能通过htpasswd命令添加
如添加用户leon
- #htpasswd -c /var/svn/passwd leon //-c 表示新建一个文件,以后就不需要加了 
相似的我添加了其他用户hailong,gao,wang
用户权限控制文件authz
- [groups] 
- myapp = leon,hailong //myapp项目有两个成员leon和hailong 
- myapp2 = wang, gao 
- [myapp:/] 
- @myapp = rw //myapp组拥有myapp项目的读写权限,其他人无权限 
- [myapp2:/] 
- @myapp2 = rw 
这样就做到权限控制。
可能遇到的问题
1.权限问题
通过查看错误日志,添加相关权限。重点注意SeLinux引起的权限问题,可以暂时关闭SeLinux,方法:setenforce 0,SeLinux的管理方法参考CSDN网站http://blog.csdn.net/haiong0707/article/details/8137633
2.防火墙问题
关闭防火墙或者打开相关端口
通过上面的配置,SVN服务器通过HTTP访问基本就没有问题了,接着配置HTTPS访问
- #cd /etc/pki/tls/private 
- #openssl genrsa -out my.key 1024 
- #openssl req -new -key my.key -out my.csr 
- #cd /etc/pki/tls/certs 
- #openssl x509 -req -days 365 -in /etc/pki/tls/private/my.csr -signkey /etc/pki/tls/private/my.key -out my.crt 
以上步骤必须在相关文件夹下产生所需的文件,保证输入命令正确,保证产生文件所在文件夹正确,否则后面将可能发生错误
修改/etc/httpd/conf.d/ssl.conf文件
- SSLCertificateFile /etc/pki/tls/certs/my.crt 
- SSLCertificateKeyFile /etc/pki/tls/private/my.key 
修改/etc/httpd/conf/httpd.conf文件
- <Directory /> 
- Options FollowSymLinks 
- AllowOverride None 
- SSLRequireSSL //添加此行 
- </Directory> 
重启httpd
- #service httpd restart 
如此SVN就只可以通过HTTPS访问了,并且能够对多个项目分配人员和权限。
可能遇到的问题
1.SVN开启HTTPS加密后,所有的WEB访问都变成HTTPS,例如,localhost将无法访问,需要访问https://localhost,这个应该是可以在https.conf文件中配置区分的,暂时不做处理,故建议此服务器不再当作WEB服务器。
----------------------------------------------------------------------------------------------------------------
localhost需要https的解决方法
不在httpd.conf添加 SSLRequireSSL ,添加到subversion.conf
- <Location /repos> 
- DAV svn 
- SVNParentPath /var/svn 
- AuthType Basic 
- AuthName "Authorization Realm" 
- AuthUserFile /var/svn/passwd //用户文件 
- AuthzSVNAccessFile /var/svn/authz //用户权限控制文件 
- Require valid-user 
- SSLRequireSSL //需要https加密访问 
- </Location> 
这样,只有/repos目录需要https加密访问,不影响httpd做web服务器
转载自:http://blog.csdn.net/haiong0707/article/details/8259235
来源: <Linux 下svn恢复到某一版本 - Kingc's Time的日志 - 网易博客>