环境准备与系统初始化
在配置Linux SVN服务器前,需确保系统环境满足基本要求,本文以CentOS 7为例,其他发行版可参照类似步骤,首先更新系统软件包并安装必要依赖:

sudo yum update -y sudo yum install -y subversion httpd-devel openssl-devel
安装完成后,检查SVN版本确认安装成功:
svnserve --version
创建SVN仓库与基础配置
SVN仓库用于存储版本控制数据,建议独立于系统目录创建,在/var/svn下创建主仓库:
sudo mkdir -p /var/svn sudo svnadmin create /var/svn/project_repo
仓库创建后,需修改目录权限,确保SVN服务可读写:
sudo chown -R apache:apache /var/svn sudo chmod -R 775 /var/svn
配置SVN服务与访问控制
SVN的核心配置文件位于仓库conf目录下,需依次编辑svnserve.conf、passwd和authz。
全局配置文件(svnserve.conf)
编辑/var/svn/project_repo/conf/svnserve.conf,取消注释并修改以下内容:
[general] anon-access = none # 禁止匿名访问 auth-access = write # 认证用户可写 password-db = passwd # 密码文件路径 authz-db = authz # 权限控制文件路径 realm = Project_Repo # 仓库命名空间
用户密码文件(passwd)
编辑passwd文件添加用户,格式为用户名 = 密码:
[users] admin = admin123 developer = dev456
权限控制文件(authz)
通过authz实现精细化权限管理,

[groups] admin_group = admin dev_group = developer [/] @admin_group = rw # 管理员组完全控制 * = r # 其他用户只读 [project_repo:/branches] @dev_group = rw # 开发组对分支有写权限
启动SVN服务与防火墙配置
启动SVN服务
使用svnserve以独立模式启动服务,默认端口3690:
svnserve -d -r /var/svn
检查服务状态:
ps aux | grep svnserve
防火墙与SELinux设置
开放SVN端口并允许HTTP访问(若通过Apache代理):
sudo firewall-cmd --permanent --add-port=3690/tcp sudo firewall-cmd --reload
若使用SELinux,需调整上下文:
sudo semanage port -a -t svn_port_t -p tcp 3690 sudo setsebool -P httpd_can_network_connect_db 1
客户端连接与仓库访问
SVN协议访问
客户端通过svn://协议连接,
svn checkout svn://服务器IP/project_repo --username admin
HTTPS协议访问(可选)
若需通过Apache提供HTTPS访问,需配置HTTPD虚拟主机并启用mod_dav_svn模块:
sudo yum install -y mod_dav_svn
编辑/etc/httpd/conf.d/subversion.conf:

<Location /svn>
DAV svn
SVNPath /var/svn/project_repo
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /etc/svn-auth-users
Require valid-user
</Location>
创建密码文件并重启HTTPD服务:
sudo htpasswd -c /etc/svn-auth-users admin sudo systemctl restart httpd
客户端通过https://服务器IP/svn访问仓库。
维护与常见问题处理
仓库备份
定期通过svnadmin hotcopy创建完整备份:
svnadmin hotcopy /var/svn/project_repo /backup/svn_backup_$(date +%Y%m%d)
权限问题排查
若出现权限拒绝错误,检查:
- 仓库目录权限是否为
775,属主为apache; authz文件路径是否正确,格式是否符合规范;- SELinux是否阻止访问(可通过
ausearch -ts today -m avc查看日志)。
服务启动失败
常见原因包括端口占用、配置文件语法错误,可通过以下命令排查:
sudo netstat -tuln | grep 3690 sudo svnserve -t -r /var/svn # 测试模式启动,查看详细错误
安全加固建议
- 禁用匿名访问:确保
anon-access = none,避免未授权访问; - 定期更新密码:通过脚本或定期提醒用户修改密码;
- 网络隔离:将SVN服务器部署在受信任的内网环境,通过VPN或防火墙限制访问IP;
- 日志审计:启用SVN操作日志,记录用户访问与修改行为,便于追溯。
通过以上步骤,可完成Linux环境下SVN服务器的安全、稳定配置,实际部署中,可根据团队规模与需求调整权限策略与访问方式,确保版本控制流程高效可控。




















