凌峰创科服务平台

Linux SVN服务器配置步骤有哪些?

在Linux系统中配置SVN(Subversion)服务器是企业级版本控制管理的常见需求,本文将详细介绍从环境准备到服务启动、权限管理及日常维护的全过程,帮助用户快速搭建稳定可靠的SVN服务。

Linux SVN服务器配置步骤有哪些?-图1
(图片来源网络,侵删)

环境准备与安装

首先需要确保系统已安装必要的编译工具和依赖库,以CentOS/RHEL系统为例,执行以下命令安装SVN及相关组件:

yum install -y subversion mod_dav_svn httpd  # 基于RPM的系统
# 或对于Debian/Ubuntu系统:
# apt-get install -y subversion libapache2-svn apache2

安装完成后验证版本:

svnserve --version

应显示类似"svnserve, version 1.14.1 (r1886600)"的输出。

创建版本库

  1. 创建仓库目录
    选择合适的位置存储版本库,例如/var/svn

    Linux SVN服务器配置步骤有哪些?-图2
    (图片来源网络,侵删)
    mkdir -p /var/svn
    svnadmin create /var/svn/project1
  2. 配置文件结构
    执行上述命令后,会生成以下关键目录和文件:

    /var/svn/project1/
    ├── conf/          # 配置文件目录
    │   ├── svnserve.conf  # 主配置文件
    │   ├── passwd        # 用户密码文件
    │   └── authz        # 权限控制文件
    ├── db/            # 版本数据存储
    ├── hooks/         # 钩子脚本目录
    └── format         # 仓库版本标识

核心配置详解

主配置文件(svnserve.conf)

编辑/var/svn/project1/conf/svnserve.conf,取消以下配置的注释并修改:

[general]
anon-access = none          # 禁止匿名访问
auth-access = write         # 允许认证用户读写
password-db = passwd        # 密码文件路径
authz-db = authz            # 权限文件路径
realm = My SVN Repository   # 仓库名称(建议与项目名一致)

注意:配置项必须顶格写,前面不能有空格。

用户密码配置(passwd)

编辑passwd文件添加用户:

Linux SVN服务器配置步骤有哪些?-图3
(图片来源网络,侵删)
[users]
user1 = password123
user2 = securePass456

每行格式为用户名 = 密码,密码明文存储。

权限控制(authz)

通过authz文件实现精细化的目录权限控制,示例配置如下:

[groups]
admin = user1
dev = user1,user2
[/]
@admin = rw
* = r
[/trunk]
@dev = rw
[/branches]
@dev = r

说明

  • [groups]定义用户组
  • 表示仓库根目录
  • rw表示读写,r表示只读,表示无权限
  • 表示所有用户

服务启动与访问

独立服务模式

使用svnserve以独立模式启动服务:

svnserve -d -r /var/svn  --listen-port 3690

参数说明:

  • -d:后台守护进程运行
  • -r:指定仓库根目录
  • --listen-port:自定义监听端口(默认3690)

Apache集成模式(可选)

若需要通过WebDAV访问,需配置Apache,编辑/etc/httpd/conf.d/subversion.conf

<Location /svn>
    DAV svn
    SVNParentPath /var/svn
    AuthType Basic
    AuthName "SVN Repository"
    AuthUserFile /etc/svn-users
    Require valid-user
</Location>

创建密码文件并重启Apache:

htpasswd -cm /etc/svn-users user1
systemctl restart httpd

常见操作与维护

  1. 仓库备份
    使用svnadmin hotcopy命令创建热备份:

    svnadmin hotcopy /var/svn/project1 /backup/svn/project1_$(date +%Y%m%d)
  2. 仓库升级
    当SVN版本升级时,需执行:

    svnadmin upgrade /var/svn/project1
  3. 日志管理
    svnserve.conf中添加日志配置:

    [general]
    log-file = /var/log/svn/svnserve.log

    确保日志目录存在且可写:

    mkdir -p /var/log/svn && touch /var/log/svn/svnserve.log
    chown -R apache:apache /var/log/svn  # 若使用Apache

防火墙与SELinux配置

  1. 开放端口

    firewall-cmd --permanent --add-port=3690/tcp
    firewall-cmd --reload
  2. SELinux设置
    若启用SELinux,需设置相应上下文:

    semanage port -a -t svn_port_t -p tcp 3690
    chcon -R -t svnserve_data_t /var/svn

相关问答FAQs

Q1: 如何修改已创建用户的密码?
A1: 直接编辑passwd文件,找到对应行修改密码值即可,例如将user1 = oldpass改为user1 = newpass,无需重启SVN服务(独立模式)或只需重启Apache(集成模式)。

Q2: SVN服务启动后客户端连接超时怎么办?
A2: 检查以下三点:

  1. 防火墙是否放行3690端口(netstat -tuln | grep 3690
  2. SELinux是否阻止访问(sestatus -b | grep svnserve
  3. 仓库权限是否正确(ls -ld /var/svn/project1应为755)
    若问题依旧,尝试用strace -e trace=network svn list svn://localhost调试网络连接。
分享:
扫描分享到社交APP
上一篇
下一篇