以下是在 CentOS 7 系统上部署 SVN(Subversion)服务的详细实战配置步骤,包含服务端配置、权限管理及客户端使用示例:
1. 环境准备
-
操作系统:CentOS 7.x
-
关闭防火墙或开放端口:
systemctl stop firewalld # 临时关闭防火墙 systemctl disable firewalld # 禁用防火墙开机启动或开放 SVN 服务端口(默认为 HTTP/80 或自定义端口):
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload -
关闭 SELinux(可选,生产环境建议配置策略):
setenforce 0 # 临时关闭 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久关闭
2. 安装 SVN 服务端
(1) 安装 Subversion 和 Apache(支持 HTTP 访问)
yum install -y subversion httpd mod_dav_svn
(2) 验证安装
svnserve --version # 查看 SVN 版本
3. 创建 SVN 仓库
(1) 创建仓库目录
mkdir -p /var/svn/repos # 仓库根目录
svnadmin create /var/svn/repos/myproject # 创建名为 myproject 的仓库
(2) 配置仓库权限
进入仓库的 conf 目录:
cd /var/svn/repos/myproject/conf
-
修改
svnserve.conf(主配置文件):[general] anon-access = none # 禁止匿名访问 auth-access = write # 认证用户可写 password-db = passwd # 指定密码文件 authz-db = authz # 指定权限控制文件 -
配置用户密码文件
passwd:[users] admin = admin123 # 用户名 = 密码 user1 = user123 -
配置权限文件
authz:[groups] dev = user1 # 定义用户组 admin = admin [/] # 根目录权限 @admin = rw # 管理员组有读写权限 * = # 其他用户无权限 [myproject:/trunk] # 项目子目录权限 @dev = rw
4. 配置 Apache 支持 HTTP 访问
(1) 创建 Apache 配置文件
vi /etc/httpd/conf.d/subversion.conf
添加以下内容:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn> # 访问路径为 http://IP/svn
DAV svn
SVNParentPath /var/svn/repos # 仓库父目录
SVNListParentPath On # 允许列出仓库列表
# 认证配置
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /var/svn/repos/conf/passwd_http # HTTP 认证密码文件
Require valid-user
</Location>
(2) 生成 HTTP 认证密码文件
htpasswd -cm /var/svn/repos/conf/passwd_http admin # 首次创建使用 -c 参数
htpasswd -m /var/svn/repos/conf/passwd_http user1
(3) 修改目录权限
chown -R apache:apache /var/svn/repos
chmod -R 755 /var/svn/repos
(4) 启动 Apache 服务
systemctl start httpd
systemctl enable httpd
5. 启动 SVN 服务(独立模式,可选)
如果不需要 HTTP 访问,可使用 svnserve 独立服务:
svnserve -d -r /var/svn/repos # 启动服务,监听默认端口 3690
客户端访问地址:svn://服务器IP/myproject
6. 客户端测试
(1) 命令行访问
svn checkout http://服务器IP/svn/myproject --username admin
# 或使用独立服务
svn checkout svn://服务器IP/myproject --username admin
(2) 提交文件
cd myproject
echo "Hello SVN" > test.txt
svn add test.txt
svn commit -m "Initial commit"
7. 常见问题排查
-
权限不足:
- 确保
/var/svn/repos目录的属主为apache(HTTP 模式)或当前用户。 - 检查
authz和passwd文件格式是否正确。
- 确保
-
无法连接服务:
- 检查防火墙是否开放端口(80/HTTP 或 3690/SVN)。
- 查看 SELinux 状态:
getenforce,临时禁用:setenforce 0。
-
Apache 报错:
- 查看日志:
tail -f /var/log/httpd/error_log
- 查看日志:
8. 扩展功能
- HTTPS 加密:使用 Let's Encrypt 配置 SSL 证书。
- 自动同步:通过
svnsync实现仓库镜像。 - 备份与恢复:定期打包仓库目录:
svnadmin dump /var/svn/repos/myproject > backup.dump
通过以上步骤,您可以在 CentOS 7 上快速搭建一个支持 HTTP/HTTPS 访问的 SVN 服务,并通过权限控制实现企业级代码管理。
浙公网安备 33010602011771号