| 2025-03-6
在 Ubuntu 系统搭建 SVN 服务器并设置自启动,可确保服务器重启后 SVN 服务能自动运行,保障版本控制系统的持续可用。以下将详细介绍搭建 SVN 服务器以及设置自启动的步骤。
1、 安装 Subversion:打开终端,通过 apt 包管理器更新软件源,执行命令sudo apt - get update。随后安装 Subversion 软件包,命令为sudo apt - get install subversion。这一步将从官方软件源下载并安装 Subversion 相关的所有必要文件和依赖项。
2、 创建版本库:选择一个合适的目录来存放版本库,如/srv/svn。使用以下命令创建目录并设置权限:
sudo mkdir -p /srv/svn
sudo chown -R www - data:www - data /srv/svn
sudo chmod -R 755 /srv/svn
mkdir -p确保目录及其父目录(如果不存在)被创建。chown命令将目录所有者和所属组设置为www - data,这在许多 Web 相关服务场景中较为常见,chmod设置目录权限为755,即所有者有读、写、执行权限,其他用户和组只有读和执行权限。
接着,使用svnadmin命令创建版本库,假设版本库名为myproject,执行sudo svnadmin create /srv/svn/myproject。这将在指定目录下创建一个标准结构的 SVN 版本库,包含conf、db等重要目录,conf目录用于存放配置文件,db目录存储版本数据。
3、 配置版本库访问权限:进入版本库的conf目录,即cd /srv/svn/myproject/conf。编辑svnserve.conf文件,取消部分关键行的注释并根据需求修改:
anon - access = none
auth - access = write
password - db = passwd
authz - db = authz
realm = MyProjectRealm
anon - access = none禁止匿名用户访问,提高安全性;auth - access = write允许认证用户进行写操作;password - db = passwd指定密码文件为同目录下的passwd文件;authz - db = authz指定权限控制文件为authz;realm定义认证域,用于标识版本库。
4、 配置用户和权限:编辑passwd文件添加用户和密码,每行格式为 “用户名 = 密码”,例如:
user1 = Abc@123456
user2 = Xyz@789012
编辑authz文件设置用户和用户组的权限,示例如下:
[groups]
developers = user1, user2
[/]
@developers = rw
*** = r
上述配置创建了developers用户组,包含user1和user2,赋予该组在版本库根目录的读写权限,其他用户只有只读权限。
1、 创建 systemd 服务单元:在/etc/systemd/system/目录下创建svnserve.service文件,使用文本编辑器(如sudo nano /etc/systemd/system/svnserve.service)。输入以下内容:
[Unit]
Description = Subversion Server
After = network.target
[Service]
ExecStart = /usr/bin/svnserve -d -r /srv/svn
Restart = always
User = www - data
Group = www - data
[Install]
WantedBy = multi - user.target
[Unit]部分描述服务,Description为服务说明,After = network.target表示该服务在网络服务启动后启动。[Service]部分定义服务启动命令,ExecStart指定svnserve命令及参数,-d使其在后台运行,-r指定版本库根目录;Restart = always确保服务意外停止时自动重启;User和Group指定服务运行的用户和组。[Install]部分指定服务在系统启动时的运行级别,WantedBy = multi - user.target表示在多用户模式下启动。
2、 使配置生效并设置开机自启:保存并关闭svnserve.service文件后,执行以下命令使 systemd 重新加载配置文件:sudo systemctl daemon - reload。接着启动 SVN 服务,命令为sudo systemctl start svnserve。最后,设置开机自启,执行sudo systemctl enable svnserve。此时,SVN 服务器已搭建完成并设置为开机自启动。
1、 SVN 版本库备份策略:可使用svnadmin dump命令定期备份 SVN 版本库,将版本库数据导出为文件,如svnadmin dump /srv/svn/myproject > myproject_backup.dump。结合cron任务可实现自动定时备份,防止数据丢失。
2、 SVN 高级权限配置:authz文件支持更复杂的权限配置,如针对不同目录设置不同用户或用户组的权限,可使用类似[/subdirectory]的语法来指定目录,并为其配置权限。
3、 systemd 服务管理深入:systemd 除了管理服务自启动,还能查看服务状态(sudo systemctl status svnserve)、查看服务日志(sudo journalctl -u svnserve)等,有助于服务的运维和故障排查。