CentOS安装SVN服务器

在CentOS7 64位机器上配置SVN服务器,并设置允许HTTPS连接,可以配置多个repos源,每个源都拥有自己的组和成员,用于权限控制。
安装相关软件:

Apache

1
yum -y install httpd httpd-devel

Subversion

1
yum -y install mod_dav_svn subversion

SSL

1
yum -y install mod_ssl  openssl

创建版本库

1
2
3
4
mkdir -p /data/svndata/svn
cd /data/svndata/svn
svnadmin create sxpt
chown -R apache:apache /data/svndata/

修改SVN配置 /etc/httpd/conf.d/subversion.conf

1
2
3
4
5
6
7
8
9
10
11
<Location /svn>  
DAV svn
SVNListParentPath on
SVNParentPath /data/svndata/svn
AuthType Basic
AuthName "Authorization"
AuthUserFile /data/svndata/passwd.conf
AuthzSVNAccessFile /data/svndata/svn/sxpt/conf/authz
Require valid-user
SSLRequireSSL
</Location>

用户文件passwd的内容只能通过htpasswd命令添加
如添加用户test

1
2
3
4
5
htpasswd -c /var/svn/passwd test      
```
//-c 表示新建一个文件,以后就不需要加了

用户权限控制文件authz:

[groups]
manager = matx
developer = test

[/]
matx = rw

[sxpt:/]
@manager = rw
@developer = rw

1
2
3
4

关闭防火墙,关闭Selinux

配置HTTPS访问:

cd /etc/pki/tls/private
openssl genrsa -out svn_server.key 1024
openssl req -new -key svn_server.key -out svn_server.csr
cd /etc/pki/tls/certs
openssl x509 -req -days 365 -in /etc/pki/tls/private/svn_server.csr -signkey /etc/pki/tls/private/svn_server.key -out svn_server.crt

1
2

修改SSL配置文件:/etc/httpd/conf.d/ssl.conf

SSLCertificateFile /etc/pki/tls/certs/svn_server.crt
SSLCertificateKeyFile /etc/pki/tls/private/svn_server.key

1
2

修改httpd配置:/etc/httpd/conf/httpd.conf

在最后面加上

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

1
2

重启httpd服务:

systemctl restart httpd.service

1
2

启动SVN服务:

svnserve -d -r /data/svndata

1
2
3
4
5
6
7

**问题**:SVN更新,查看没有问题,提交错误:svn commit failed, could not begin a transaction.
**原因**:原因是在SVN服务器上创建仓库时使用了root身份登录服务器, 导致文件没有足够的写权限, 需更改仓库的组权限,将仓库文件修改为正确的组权限。
**解决**:chwon -R apache:apache SVN_REPO_PATH

SVN备份:
查看crond服务是否为开机自启动

systemctl list-unit-files |grep crond

1
2

查看crond服务是否开启

systemctl status crond

1
2

crond增加备份SVN,每周日执行凌晨15份执行备份操作

crontab -e
5 1 * * 0 sh /backup/svn_backup/svn-backup-full.sh

1
2

备份脚本:

#!/bin/sh
SVN_HOME=/usr/bin/
SVN_ADMIN=$SVN_HOME/svnadmin
SVN_LOOK=$SVN_HOME/svnlook

SVN_REPOROOT=/data/svndata/svn/sxpt
SVN_BACKUP=/backup/svn_backup/

date=$(date ‘+%Y-%m-%d_%H:%M:%S’)

RAR_STORE=/backup/svn_backup/$date
if [ ! -d “$RAR_STORE” ];then
mkdir -p $RAR_STORE
fi

$SVN_ADMIN dump $SVN_REPOROOT > $RAR_STORE/sxpt.dump
```


CentOS安装SVN服务器
http://maitianxin.github.io/2022/03/16/linux/centos_svn/
作者
Matianxin
发布于
2022年3月16日
许可协议