在Linux系统中启动SVN(Subversion)服务器通常涉及安装SVN软件、创建仓库、配置访问权限以及通过服务或命令启动svnserve进程,以下是详细步骤和注意事项,帮助您完成SVN服务器的部署与启动。

安装SVN软件
首先需要确保系统已安装SVN服务端软件,以常见的CentOS和Ubuntu系统为例,可通过以下命令安装:
- CentOS/RHEL系统:
sudo yum install subversion -y # 使用yum包管理器
- Ubuntu/Debian系统:
sudo apt update && sudo apt install subversion -y # 更新包列表后安装
安装完成后,可通过
svnserve --version命令验证是否安装成功,若显示版本信息则表示安装成功。
创建SVN仓库
SVN仓库用于存储版本控制的数据,建议在/var/svn目录下创建,执行以下命令:
sudo mkdir -p /var/svn # 创建仓库主目录 sudo svnadmin create /var/svn/project1 # 创建名为project1的仓库
创建后,仓库目录会包含conf、db、hooks、locks等子目录,其中conf目录下的配置文件是关键:

svnserve.conf:SVN服务主配置文件。passwd:用户密码文件。authz:权限控制文件。
配置SVN仓库
编辑svnserve.conf
进入仓库的conf目录,修改svnserve.conf文件:
sudo vim /var/svn/project1/conf/svnserve.conf
确保以下配置项未被注释且值正确:
[general] anon-access = none # 禁止匿名访问 auth-access = write # 允许认证用户读写 password-db = passwd # 密码文件路径 authz-db = authz # 权限文件路径 realm = My SVN Repository # 认证领域名称(自定义)
注意:配置文件中的行首不能有空格,且两侧需有空格。
创建用户账号
编辑passwd文件,添加用户及其密码:
sudo vim /var/svn/project1/conf/passwd
格式为用户名 = 密码,
[users] user1 = password1 user2 = password2
设置访问权限
编辑authz文件,配置用户或用户组的访问权限:
sudo vim /var/svn/project1/conf/authz
示例配置:
[groups] admin = user1 developers = user2 [/] # 根目录权限 @admin = rw # admin组读写权限 * = r # 其他用户只读 [/project1/trunk] developers = rw # developers组对trunk目录有读写权限
启动SVN服务器
通过命令行启动
使用svnserve命令直接启动,需指定监听端口(默认3690)、仓库路径及配置文件目录:
sudo svnserve -d -r /var/svn --listen-port 3690
参数说明:
-d:以守护进程模式运行。-r:指定仓库根目录,访问时需使用svn://IP地址/仓库名。--listen-port:自定义端口(可选,默认3690)。
通过系统服务启动(推荐)
为方便管理,可将SVN服务添加为系统服务,创建服务文件:
sudo vim /etc/systemd/system/svnserve.service ```如下: ```ini [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
创建svn用户并设置权限:
sudo useradd -r -s /bin/false svn sudo chown -R svn:svn /var/svn
启动并设置开机自启:
sudo systemctl daemon-reload sudo systemctl start svnserve sudo systemctl enable svnserve
检查服务状态:
sudo systemctl status svnserve
防火墙与SELinux配置
防火墙设置
若系统启用了防火墙,需开放SVN端口(3690):
sudo firewall-cmd --permanent --add-port=3690/tcp sudo firewall-cmd --reload
SELinux配置(CentOS系统)
若SELinux为 enforcing 模式,需调整策略:
sudo setsebool -P httpd_can_network_connect_db on # 允许网络连接 sudo semanage port -a -t svn_port_t -p tcp 3690 # 添加端口到SELinux策略
客户端测试
使用SVN客户端连接服务器,验证配置是否正确:
svn co svn://服务器IP地址/project1
输入用户名和密码后,若成功检出仓库内容,则表示服务器启动成功。
常见问题排查
- 连接被拒绝:检查防火墙是否开放端口,
svnserve进程是否运行(ps aux | grep svnserve)。 - 权限错误:确认
authz文件中的路径格式是否正确(如[/]表示根目录),用户是否属于对应组。
相关问答FAQs
问题1:如何修改SVN服务器的默认端口?
解答:通过svnserve命令的--listen-port参数指定端口,例如svnserve -d -r /var/svn --listen-port 8080,若通过系统服务启动,需修改svnserve.service文件中的ExecStart命令,添加--listen-port 8080,并重启服务(sudo systemctl restart svnserve),同时确保防火墙开放新端口。
问题2:如何为多个SVN仓库配置独立权限?
解答:在svnserve.conf中,将authz-db指向统一的权限文件(如/var/svn/authz),然后在authz文件中按仓库路径分别配置。
[/project1] user1 = rw [/project2] user2 = r
访问时使用svn://IP/project1或svn://IP/project2,系统会根据路径匹配对应权限规则。
