CentOS服务器的挂载磁盘,请参考 从Windows迁移SVN数据到CentOS7(一)
从Window服务器迁移SVN数据到CentOS,请参考 从Windows迁移SVN数据到CentOS7(二)
SVN相比Git来说拥有更加细粒度的权限控制,话不多说,我们马上接下来的配置。
三、创建、授权用户
1.首先我们找到SVN版本库下对应的配置文件 ~/conf/svnserve.conf,
vi /svn/Project20181022/conf/svnserve.conf
说明:对于授权用户与未被授权用户的访问级别控制:read,write,none
我们修改对应位置如下(注意去掉#号,顶格缩进):
anon-access = none
auth-access = write
说明:password-db字段,为配置密码数据文件的保存位置,默认为相对路径,如果以/开头则为绝对路径,如果SSL开启的话,那么就不会验证该文件。
这里我们不使用默认生成的“passwd”,用自己新建的文件代替(配置SSL会用到),该文件在接下来会被创建。
password-db = /svn/svn_http_passwd
说明:authz-db字段,为用户数据文件的保存位置,默认为相对路径,如果以/开头则为绝对路径,如果未指定路径,则无访问控制。
这里我们依旧不使用默认生成的“authz”,用自己新建的文件代替(配置SSL会用到),该文件在接下来会被创建。
authz-db = /svn/svn_authz
说明:realm 字段,此选项指定存储库的身份验证域。 如果两个存储库具有相同的身份验证域,则它们应具有相同的密码数据库,反之亦然。 默认域是repository的uuid。
这里如果项目符合上述要求的的话,需要去掉“#”号,配置两个相同的身份验证域,使配置生效,否则无需更改。
2.配置SSL
① 修改(没有该文件则新增) vi /etc/httpd/conf.d/subversion.conf,修改配置如下(Tip为说明,配置时请去掉)
<Location /svn>
DAV svn
SVNParentPath /svn
SVNListParentPath on
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /svn/svn_http_passwd Tip:这是ssl的用户文件,等下创建
AuthzSVNAccessFile /svn/svn_authz Tip:这是鉴权文件,等下创建
Require valid-user
SSLRequireSSL
</Location>
② 创建httpd用户 -这里会创建上面提到的 /svn/svn_http_passwd 文件(执行后需要输入用户密码)
htpasswd -c /svn/svn_http_passwd turbo #创建apache用户和密码文件,已有文件则把-c去掉
以后加用户就直接使用下面代码段
htpasswd /svn/svn_http_passwd user123 #user123为你要添加的用户名
③ 增加svn用户权限文件 -这里会创建上面提到的 /svn/svn_authz 文件
vi /svn/svn_authz
[groups]
ROOT = master # 用户组,多个用户用逗号隔开
UNITY = turbo
SERVER = server #master,server用户此时并没有创建,只是拎出来做一下演示
[Project20181022:/] # 设置xxx库的权限
@ROOT = rw # ROOT组里的用户对根目录有读写权限
[Project20181022:/Unity]
@UNITY = rw
[Project20181022:/Server]
@SERVER = rw
④ 生成本地证书,配制https
cd /etc/pki/tls/private
openssl genrsa -out svn.key 1024 #生成私钥
openssl req -new -key svn.key -out svn.csr #生成证书
cd /etc/pki/tls/certs
openssl x509 -req -days 365 -in /etc/pki/tls/private/svn.csr -signkey /etc/pki/tls/private/svn.key -out svn.crt #签名
⑤ 修改ssl配置文件:
vi /etc/httpd/conf.d/ssl.conf #修改下面的配置项(就是刚才上面步骤创建的crt和key文件)
SSLCertificateFile /etc/pki/tls/certs/svn.crt
SSLCertificateKeyFile /etc/pki/tls/private/svn.key
⑥ 授予apache用户组 对/svn目录的 拥有者权限
chown -R apache:apache /svn/
⑦ 修改selinux权限,不然Apache只能访问www目录,其他地方的文件会访问失败:
chcon -R -t httpd_sys_rw_content_t /svn/
⑧ 打开防火墙端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
⑨ 启动服务
svnserve -d -r /svn
service httpd start
⑩ 加入开机启动项,如果之前不存在 rc.local,在创建该文件后需要执行: chmod +x /etc/rc.d/rc.local 赋予可执行权限
vi /etc/rc.d/rc.local #末尾增加以下配置
/usr/bin/svnserve -d -r /svn
/usr/sbin/service httpd start
好了,到这一步我们的SVN服务器就基本配置完成了,下一章节我们将验证小乌龟的连接和整理一些踩坑记录。
THE END