凌峰创科服务平台

Ubuntu如何搭建SVN服务器?

在Ubuntu系统中搭建SVN服务器是一个常见的需求,尤其适合团队协作开发时进行版本控制,SVN(Subversion)是一个开源的版本控制系统,它能够高效地管理文件和目录的变更,本文将详细介绍如何在Ubuntu系统上从安装配置到管理SVN服务器的完整过程,包括创建仓库、用户权限设置以及日常维护等内容。

Ubuntu如何搭建SVN服务器?-图1
(图片来源网络,侵删)

需要更新系统软件包列表并安装SVN服务器软件,在Ubuntu中,通常使用apt包管理器来完成这一操作,打开终端,执行以下命令:

sudo apt update
sudo apt install subversion

安装完成后,可以通过svnserve --version命令验证是否安装成功,需要创建一个用于存放SVN仓库的目录,例如/var/svn,并设置适当的权限:

sudo mkdir -p /var/svn
sudo chown -R www-data:www-data /var/svn
sudo chmod -R 775 /var/svn

这里将所有者设置为www-data(Apache默认用户),以便后续可能通过Web方式访问仓库,创建一个新的SVN仓库,例如myproject

sudo svnadmin create /var/svn/myproject

创建完成后,仓库目录下会生成若干配置文件,其中conf/svnserve.conf是SVN服务的主配置文件,需要修改其内容以启用匿名访问控制和权限验证,编辑该文件:

Ubuntu如何搭建SVN服务器?-图2
(图片来源网络,侵删)
sudo nano /var/svn/myproject/conf/svnserve.conf

在文件中找到[general]部分,确保以下配置项未被注释,并根据需要修改:

[general]
anon-access = none        # 禁止匿名访问
auth-access = write      # 允许认证用户读写
password-db = passwd      # 密码文件路径
authz-db = authz         # 权限控制文件路径
realm = MyProject        # 仓库认证领域名称

配置说明:anon-access设置为none表示禁止匿名用户访问,auth-access设置为write表示认证用户具有读写权限,配置用户密码文件passwd,该文件位于仓库的conf目录下,编辑passwd文件:

sudo nano /var/svn/myproject/conf/passwd

在文件中添加用户及其密码,格式为username = password

[users]
admin = admin123
developer = dev456
tester = test789

配置权限文件authz,用于精细控制用户或用户组的访问权限,编辑authz文件:

Ubuntu如何搭建SVN服务器?-图3
(图片来源网络,侵删)
sudo nano /var/svn/myproject/conf/authz

在文件中可以设置用户组、目录权限等。

[groups]
admin_group = admin
dev_group = developer, tester
[/]
@admin_group = rw
* = r
[/trunk]
@dev_group = rw
* = r
[/branches]
@dev_group = rw
* = r
[/tags]
@admin_group = rw
* = r

上述配置中,[groups]部分定义了两个用户组,[/]表示仓库根目录,@admin_group表示admin_group组的用户具有读写权限,表示其他用户只读权限,在/trunk/branchestags目录下,dev_group组的用户具有读写权限,配置完成后,启动SVN服务,SVN服务默认通过3690端口运行,可以使用以下命令启动:

sudo svnserve -d -r /var/svn

参数-d表示以守护进程方式运行,-r指定仓库根目录,如果希望服务开机自启动,可以创建一个systemd服务单元文件:

sudo nano /etc/systemd/system/svnserve.service
```如下:
```ini
[Unit]
Description=Subversion protocol daemon
After=network.target
[Service]
Type=forking
User=www-data
Group=www-data
ExecStart=/usr/bin/svnserve -d -r /var/svn
Restart=on-abort
[Install]
WantedBy=multi-user.target

保存后,启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable svnserve
sudo systemctl start svnserve

可以通过netstat -tuln | grep 3690命令检查3690端口是否监听正常,客户端可以使用以下命令访问SVN仓库:

svn checkout svn://localhost/myproject

输入用户名和密码即可检出仓库,如果需要通过HTTP/SVN访问,可以安装Apache和mod_dav_svn模块,配置虚拟主机,这里不再详述。

在日常维护中,定期备份SVN仓库非常重要,可以使用svnadmin hotcopy命令创建仓库的热备份:

sudo svnadmin hotcopy /var/svn/myproject /var/backups/svn/myproject-backup-$(date +%Y%m%d)

可以设置定时任务(如cron)定期执行备份脚本,如果仓库损坏,可以使用svnadmin verify检查仓库完整性,通过svnadmin recover尝试修复。

以下是相关问答FAQs:

问题1:如何修改SVN仓库的默认端口?
答:修改SVN服务启动参数中的端口,使用-p选项指定端口号,例如启动时使用sudo svnserve -d -r /var/svn -p 3691,此时服务将监听3691端口,客户端访问时需使用新端口,如svn://localhost:3691/myproject,如果使用systemd服务,需修改ExecStart行,添加-p 3691参数后重启服务。

问题2:SVN仓库如何迁移到另一台Ubuntu服务器?
答:迁移步骤如下:1. 在源服务器上停止SVN服务(sudo systemctl stop svnserve);2. 使用svnadmin dump命令导出仓库数据,如sudo svnadmin dump /var/svn/myproject > myproject.dump;3. 将导出的dump文件传输到目标服务器(如通过scp);4. 在目标服务器上创建新仓库(sudo svnadmin create /var/svn/myproject);5. 使用svnadmin load命令导入数据,如sudo svnadmin load /var/svn/myproject < myproject.dump;6. 修改目标服务器的SVN配置文件(如svnserve.confpasswdauthz)与源服务器一致;7. 启动目标服务器的SVN服务即可完成迁移。

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