以下是在 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. 常见问题排查

  1. 权限不足

    • 确保 /var/svn/repos 目录的属主为 apache(HTTP 模式)或当前用户。
    • 检查 authzpasswd 文件格式是否正确。
  2. 无法连接服务

    • 检查防火墙是否开放端口(80/HTTP 或 3690/SVN)。
    • 查看 SELinux 状态:getenforce,临时禁用:setenforce 0
  3. 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 服务,并通过权限控制实现企业级代码管理。

posted on 2025-04-12 16:38  LeeHang  阅读(116)  评论(0)    收藏  举报