在Linux服务器上安装和配置Subversion(SVN)版本控制系统,是企业开发环境中常见的部署任务,SVN用于集中管理代码、文档等文件,支持版本回溯、分支合并等核心功能,以下以CentOS 7系统为例,详细讲解SVN的安装、配置、仓库创建及权限管理全过程,同时包含服务启动、防火墙设置及常见问题处理。
安装SVN服务
首先需要通过yum包管理器安装SVN服务,在终端执行以下命令更新系统软件包列表并安装subversion:
sudo yum update y sudo yum install subversion y
安装完成后,可通过svnserve version命令验证是否成功,若显示版本信息则表明安装成功,默认情况下,SVN服务会被安装在/usr/bin/svnserve路径下,相关配置文件模板位于/usr/share/doc/subversion<version>/目录中。
创建SVN仓库
SVN仓库是存储版本数据的目录,建议创建在/var/svn路径下,首先创建仓库目录:
sudo mkdir p /var/svn
使用svnadmin命令创建新仓库,例如创建名为project_repo的仓库:
sudo svnadmin create /var/svn/project_repo
创建完成后,仓库目录会自动生成以下关键文件和文件夹:
conf/:存放配置文件的目录db/:存储版本数据hooks/:存放钩子脚本locks/:用于锁定机制format:仓库版本号文件
配置仓库权限
进入仓库配置目录/var/svn/project_repo/conf/,修改三个核心配置文件:
-
svnserve.conf:主配置文件,定义仓库基本行为
sudo vim svnserve.conf
在文件中添加或修改以下内容:
[general] anonaccess = none # 禁止匿名访问 authaccess = write # 允许认证用户读写 passworddb = passwd # 密码文件路径 authzdb = authz # 权限控制文件路径 realm = My SVN Repository # 仓库认证领域
-
passwd:用户密码文件
sudo vim passwd
在文件中添加用户及密码,格式为
用户名 = 密码,[users] user1 = password123 user2 = mypassword
-
authz:权限控制文件
sudo vim authz
配置示例:
[groups] admin = user1 developers = user1, user2 [/] @admin = rw # admin组用户读写权限 * = r # 其他用户只读权限 [/project_repo/trunk] @developers = rw # developers组对trunk有读写权限
启动SVN服务
SVN服务可通过svnserve命令启动,建议使用d(守护进程模式)和r(指定仓库根目录)参数:
sudo svnserve d r /var/svn
启动后可通过ps aux | grep svnserve检查进程是否运行,默认SVN服务监听3690端口,可通过netstat tuln | grep 3690验证。
配置防火墙与SELinux
为确保外部可访问SVN服务,需开放3690端口:
sudo firewallcmd permanent addport=3690/tcp sudo firewallcmd reload
若启用SELinux,需执行以下命令设置SVN相关策略:
sudo setsebool P httpd_can_network_connect_db 1 sudo semanage port a t svn_port_t p tcp 3690
SVN客户端访问测试
使用svn checkout命令测试仓库连接,格式为svn://服务器IP/仓库名:
svn checkout svn://192.168.1.100/project_repo
根据提示输入配置文件中的用户名和密码,若成功检出文件则表示部署完成。
常见配置优化
- 多仓库配置:通过
r参数指定父目录,可同时管理多个仓库,如svnserve d r /var/svn。 - 服务自启动:通过systemctl设置开机自启:
sudo systemctl enable svnserve
- 日志配置:在
svnserve.conf中添加logfile = /var/log/svnserve.log启用日志记录。
相关问答FAQs
问题1:如何修改SVN仓库的默认访问端口?
答:启动SVN服务时使用listenport参数指定新端口,例如svnserve d r /var/svn listenport 8080,同时需在防火墙开放新端口,并确保客户端连接时使用新端口号(如svn://IP:8080/仓库名)。
问题2:SVN服务启动失败提示“权限被拒绝”如何解决?
答:通常因SVN进程无仓库目录权限导致,执行以下命令修复:
sudo chown R apache:apache /var/svn/project_repo # 若使用Apache运行 sudo chown R root:root /var/svn/project_repo # 若以root运行svnserve sudo chmod R 755 /var/svn/project_repo
同时检查SELinux状态,可通过getsebool a | grep svn查看相关策略,必要时使用setsebool调整。
