凌峰创科服务平台

Linux SVN服务器如何搭建与配置?

在Linux系统中搭建SVN(Subversion)服务器是一种常见的需求,SVN作为版本控制系统,能够有效管理代码、文档等文件的变更历史,适合团队协作开发,以下将详细介绍在Linux环境下配置SVN服务器的完整步骤、核心配置及注意事项。

安装SVN服务

首先需要确保系统已安装SVN服务,以CentOS为例,可通过yum包管理器安装:

sudo yum install subversion -y

安装完成后,检查SVN版本确认安装成功:

svnserve --version

对于Ubuntu/Debian系统,可使用apt命令安装:

sudo apt update && sudo apt install subversion -y

创建版本库

SVN通过版本库(Repository)存储文件,需先创建一个目录作为版本库根路径,例如/var/svn/repos

sudo mkdir -p /var/svn/repos

使用svnadmin命令创建版本库,这里以创建myproject为例:

sudo svnadmin create /var/svn/repos/myproject

创建后,版本库目录会自动生成若干子目录和配置文件,包括conf(配置文件夹)、db(数据存储)、hooks(钩子脚本)等。

配置访问权限

进入版本库的conf目录,修改三个核心配置文件:

  1. svnserve.conf:SVN主配置文件,需启用匿名访问和权限验证:

    [general]
    anon-access = none          # 禁止匿名访问
    auth-access = write         # 允许认证用户写权限
    password-db = passwd        # 密码文件路径
    authz-db = authz           # 权限控制文件路径
    realm = MyProject Repository # 认证域名称
  2. passwd:用户密码文件,格式为用户名 = 密码

    [users]
    admin = 123456
    developer = abc123
  3. authz:权限控制文件,可按用户或用户组分配权限。

    [groups]
    admin_group = admin
    dev_group = developer
    [/]
    @admin_group = rw          # admin组成员对根目录有读写权限
    * = r                      # 其他用户只读
    [/myproject/trunk]
    @dev_group = rw            # dev组成员对trunk目录有读写权限

启动SVN服务

使用svnserve命令启动SVN服务,需指定监听端口(默认3690)、版本库路径及绑定IP:

sudo svnserve -d -r /var/svn/repos --listen-host 0.0.0.0

参数说明:

  • -d:后台守护进程模式运行
  • -r:指定版本库根路径,客户端通过此路径访问
  • --listen-host:绑定IP地址,0.0.0表示监听所有IP

防火墙与SELinux配置

为确保外部访问,需开放3690端口,以CentOS为例:

sudo firewall-cmd --permanent --add-port=3690/tcp
sudo firewall-cmd --reload

若启用SELinux,需调整上下文:

sudo semanage port -a -t svn_port_t -p tcp 3690
sudo chcon -R -t svnrpx_t /var/svn/repos

客户端访问测试

使用SVN客户端(如TortoiseSVN或命令行)测试访问,例如检出项目:

svn checkout svn://服务器IP/myproject

输入配置文件中设置的用户名和密码,若成功则说明服务器搭建完成。

常见问题与优化

  1. 服务开机自启:通过systemd管理服务,创建/etc/systemd/system/svnserve.service如下:

    [Unit]
    Description=SVN Server
    After=network.target
    [Service]
    Type=forking
    ExecStart=/usr/bin/svnserve -d -r /var/svn/repos
    User=svn
    Group=svn
    [Install]
    WantedBy=multi-user.target

    启用并启动服务:

    sudo systemctl enable --now svnserve
  2. 性能优化:对于大型版本库,可调整svnserve.conf中的max-connections参数限制并发连接数,或通过svnlook命令定期清理未使用的版本数据。

相关问答FAQs

Q1: 如何修改SVN服务默认端口?
A: 启动svnserve时通过--listen-port参数指定新端口,例如sudo svnserve -d -r /var/svn/repos --listen-port 8080,同时需在防火墙开放对应端口。

Q2: SVN服务无法连接,如何排查?
A: 首先检查服务状态(systemctl status svnserve),确认端口是否监听(netstat -tuln | grep 3690),再检查防火墙和SELinux设置,最后验证版本库配置文件(svnserve.confpasswdauthz)语法是否正确。

分享:
扫描分享到社交APP
上一篇
下一篇