Linux SVN服务器搭建是一个系统性的过程,涉及环境准备、软件安装、仓库创建、权限配置及服务启动等多个环节,以下将详细讲解整个搭建流程,确保用户能够顺利完成部署并投入使用。

进行环境准备,推荐使用CentOS 7或Ubuntu 20.04等稳定版本的Linux操作系统,确保系统已更新至最新状态,并配置好静态IP地址以保证服务的稳定性,安装必要的依赖包,如CentOS系统可通过yum install -y wget gcc gcc-c++ make命令,Ubuntu系统则使用apt update && apt install -y wget gcc g++ make,这些依赖包将用于后续SVN软件的编译安装或依赖支持。
安装SVN服务器软件,Subversion(SVN)本身是开源的,可通过系统自带仓库或官方源安装,以CentOS为例,执行yum install -y subversion即可完成安装;Ubuntu用户则使用apt install -y subversion,安装完成后,可通过svnserve --version命令验证是否成功,若显示版本信息则表明安装成功,为方便管理,建议创建一个独立的SVN服务用户,如执行useradd -s /sbin/nologin svn并设置密码passwd svn。
创建SVN仓库,选择一个合适的目录存放仓库,如/var/svn,执行mkdir -p /var/svn创建目录,并通过svnadmin create /var/svn/repo命令创建名为repo的仓库,创建完成后,进入仓库目录/var/svn/repo/conf,会看到三个核心配置文件:svnserve.conf(仓库主配置文件)、passwd(用户密码文件)和authz(权限控制文件),这些文件是SVN服务器权限管理的核心,需要仔细配置。
配置svnserve.conf文件时,需确保以下关键项被正确设置:[general]部分下的anon-access = none表示禁止匿名访问,auth-access = write表示认证用户可读写,password-db = passwd指定密码文件为passwd,authz-db = authz指定权限文件为authz,realm = My First Repository定义仓库名称,建议修改为有意义的名称,注意,配置项前的和空格需删除,否则配置不会生效。

配置passwd文件用于添加用户,格式为username = password,例如添加用户test并设置密码123456,则写入test = 123456,配置authz文件用于精细控制用户或用户组的权限,采用路径权限控制模式,在[groups]部分定义用户组admin = test,然后在[/]部分设置@admin = rw表示admin组对所有路径有读写权限,* = r表示其他用户只读权限,若需针对特定路径设置权限,可使用[/projectA]这样的路径段。
配置完成后,需修改仓库目录的属主和权限,确保SVN服务用户有读写权限,执行chown -R svn:svn /var/svn/repo和chmod -R 755 /var/svn/repo,然后启动SVN服务,使用命令svnserve -d -r /var/svn,其中-d表示以守护进程方式运行,-r指定仓库根目录,启动后可通过ps aux | grep svnserve检查进程是否运行,或使用netstat -tuln | grep 3690确认SVN默认端口3690是否监听。
为方便管理,可将SVN服务设置为开机自启,在CentOS系统中,创建服务文件/usr/lib/systemd/system/svnserve.service如下:
[Unit]
Description=Subversion protocol daemon
After=network.target
[Service]
Type=forking
User=svn
Group=svn
ExecStart=/usr/bin/svnserve -d -r /var/svn
Restart=on-failure
[Install]
WantedBy=multi-user.target
保存后执行systemctl daemon-reload、systemctl enable svnserve和systemctl start svnserve即可实现开机自启。

客户端访问测试时,使用 TortoiseSVN 或命令行工具,在命令行中执行svn co svn://服务器IP/repo,输入配置的用户名和密码,若能成功检出仓库内容,则表明服务器搭建成功,若需通过HTTP访问,可结合Apache或Nginx配置SVN模块,但本文主要讲解基于svnserve的独立访问方式。
建议定期备份仓库数据,可通过svnadmin dump /var/svn/repo > repo_backup.dump命令创建备份文件,并定期传输至安全存储位置,注意监控系统日志,及时发现异常访问或操作行为。
相关问答FAQs:
-
问题:SVN服务器启动时提示“权限拒绝”怎么办?
解答:通常是由于SVN服务用户对仓库目录无权限导致,检查仓库目录属主是否为svn用户,执行chown -R svn:svn /var/svn/repo修改属主,并确保目录权限为755,同时检查svnserve.conf配置文件是否有语法错误,确保配置项未被注释或存在多余空格。 -
问题:如何修改SVN服务器的默认端口?
解答:启动SVN服务时通过--listen-port参数指定新端口,例如svnserve -d -r /var/svn --listen-port 8080,若需永久修改,可在svnserve.service服务文件中添加Environment="SVNSERVE_LISTEN_PORT=8080",并在ExecStart命令中引用该环境变量,修改后重启服务即可生效。
