CentOS 7 搭建 SVN 服务器(精简版教程)

本文聚焦 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/repos3690 端口监听即为启动成功。

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 服务器。

相关推荐
wb043072011 小时前
一次jvm配置问题导致的数据库连接异常
服务器·jvm·数据库·后端
这周也會开心1 小时前
Docker Compose容器化部署
运维·docker·容器
椒绿个屁1 小时前
进程与线程:进程基础
linux·c语言·进程基础
夜月yeyue2 小时前
VFS (虚拟文件系统) 核心架构
linux·c++·单片机·嵌入式硬件·架构
UP_Continue2 小时前
Linux--OS和认识进程
linux·运维·服务器
IT摆渡者2 小时前
Rocky Linux 10.1中找不到传统的 /etc/sysconfig/network-scripts 目录是正常现象。
linux·运维·服务器·网络·经验分享
步步为营DotNet2 小时前
深度钻研.NET 中Task.Run:异步任务执行的便捷入口
java·服务器·.net
无小道2 小时前
基于epoll的单进程Reactor服务器
运维·服务器·c++·网络编程·reactor·epoll
xzl042 小时前
小智服务器intent_type 初始化为function_call过程
linux·前端·数据库