本文聚焦 CentOS 7 系统,详细讲解 SVN 服务器的安装、配置、启动及权限管理,步骤更贴合 CentOS 7 特性,确保操作可落地。
一、环境准备(CentOS 7 专属)
1. 权限与基础环境
确保以 root 用户操作,先更新系统并关闭 / 放行防火墙(生产环境推荐放行端口):
更新 yum 源(可选,提升安装速度)
yum update -y
关闭防火墙(临时)
systemctl stop firewalld
禁止防火墙开机自启(永久)
systemctl disable firewalld
关闭 SELinux(临时)
setenforce 0
永久关闭 SELinux(需重启生效)
sed -i 's
2. 开放 SVN 端口(替代关闭防火墙,推荐)
若不关闭防火墙,需放行默认端口 3690:
临时开放 3690 端口
firewall-cmd --add-port=3690/tcp
永久开放 3690 端口
firewall-cmd --add-port=3690/tcp --permanent
重载防火墙规则
firewall-cmd --reload/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
二、安装 SVN 服务
CentOS 7 直接通过 yum 安装 subversion 包,命令如下:
安装 SVN 服务端
yum install subversion -y
验证安装是否成功
svnserve --version
输出包含 svnserve, version 字样即为安装成功。
三、创建 SVN 仓库
1. 创建仓库根目录(统一管理)
创建根目录
mkdir -p /var/svn/repos
设置目录权限(避免后续访问报错)
chmod -R 755 /var/svn/repos
2. 创建具体项目仓库(示例:project 仓库)
创建仓库
svnadmin create /var/svn/repos/project
查看仓库目录结构(验证创建)
ls /var/svn/repos/project
输出 conf db format hooks locks README.txt 即为创建成功,其中 conf 是核心配置目录。
四、核心配置(关键步骤)
CentOS 7 下 SVN 配置文件路径为 /var/svn/repos/project/conf/,包含 3 个核心文件,需严格按格式修改(注释行需删除 # 和空格,配置项顶格)。
1. 配置 svnserve.conf(全局配置)
vim /var/svn/repos/project/conf/svnserve.conf
修改内容如下(删除所有注释符 # 及空格,确保顶格): [general]
禁止匿名访问
anon-access = none
认证用户可写
auth-access = write
密码文件路径
password-db = passwd
权限控制文件路径
authz-db = authz
仓库标识(自定义,如项目名)
realm = project_repos
2. 配置 passwd(用户密码)
vim /var/svn/repos/project/conf/passwd
users
示例:添加管理员和普通用户
admin = Admin@123
user1 = User1@123
3. 配置 authz(权限控制)
vim /var/svn/repos/project/conf/authz
支持分组和路径级权限控制,示例配置:
定义用户组
groups
admin_group = admin
user_group = user1
仓库根目录权限
/
@admin_group = rw # 管理员组读写
@dev_group = r # 普通用户只读
* = # 其他用户禁止访问
子目录权限(示例:project 的 doc 目录)
project:/doc
user1 = rw # 普通用户可读写 doc 目录
admin = rw # 管理员可读写
五、启动 SVN 服务(CentOS 7 专属)
1. 启动服务
# 后台启动 SVN,指定仓库根目录(关键)
svnserve -d -r /var/svn/repos
# 验证服务是否启动
# 查看进程
ps -ef | grep svnserve
# 查看端口监听
netstat -tnlp | grep 3690
输出包含 svnserve -d -r /var/svn/repos 和 3690 端口监听即为启动成功。
2. 停止 / 重启服务
停止服务
pkill svnserve
重启服务
pkill svnserve && svnserve -d -r /var/svn/repos
六、设置开机自启(CentOS 7 systemd)
1. 创建系统服务文件
vim /usr/lib/systemd/system/svnserve.service
添加以下内容(适配 CentOS 7 systemd):
Unit
Description=SVN Server Daemon
After=network.target
Service
Type=forking
启动命令(指定仓库根目录)
ExecStart=/usr/bin/svnserve -d -r /var/svn/repos
停止命令
ExecStop=/usr/bin/pkill svnserve
故障自动重启
Restart=on-failure
RestartSec=5
Install
WantedBy=multi-user.target
2. 生效并设置开机自启
重新加载 systemd 配置
systemctl daemon-reload
设置开机自启
systemctl enable svnserve
启动服务
systemctl start svnserve
查看服务状态
systemctl status svnserve
输出 active (running) 即为开机自启配置成功。
七、客户端访问测试
1. 访问地址格式
svn://你的服务器IP/仓库名
示例:svn://192.168.1.100/project
2. Linux 客户端测试
检出仓库(输入用户名密码)
svn checkout svn://192.168.1.100/project /local/project --username admin
提交测试文件
cd /local/project
echo "CentOS 7 SVN Test" > test.txt
svn add test.txt
svn commit -m "add test file"
3. Windows 客户端(TortoiseSVN)
-
右键空白处 → 选择「SVN Checkout」
-
输入
svn://服务器IP/project,点击「OK」 -
输入配置的用户名(如 admin)和密码,即可检出仓库。
八、CentOS 7 常见问题排查
1. 服务启动失败
-
检查仓库路径权限:
chown -R root:root /var/svn/repos -
检查
svnserve.conf格式:配置项必须顶格,无多余空格 -
检查端口是否被占用:
netstat -tnlp | grep 3690,占用则换端口(如svnserve -d -r /var/svn/repos --listen-port 3691)
2.权限不足报错
-
检查
authz文件:路径和用户权限是否匹配(如[project:/]而非[/]) -
检查 SELinux:若未永久关闭,临时关闭
setenforce 0重试
3. 开机自启不生效
-
检查服务文件路径:CentOS 7 服务文件需放在
/usr/lib/systemd/system/ -
重新执行
systemctl daemon-reload && systemctl enable svnserve
总结
CentOS 7 搭建 SVN 核心是:安装包 → 建仓库 → 配权限 → 启服务 → 设自启。重点注意配置文件格式(顶格、无空格)、防火墙 / SELinux 放行,以及权限文件的路径匹配,即可快速搭建稳定的 SVN 服务器。