凌峰创科服务平台

Ubuntu如何搭建SVN服务器?

在Ubuntu系统中搭建SVN(Subversion)服务器是一个常见的需求,适用于团队协作开发中的版本控制管理,SVN是一款开源的版本控制系统,通过中央服务器集中管理代码文件,支持多人协作、版本回溯和历史记录查询等功能,以下将详细介绍在Ubuntu上搭建SVN服务器的完整步骤,包括环境准备、安装配置、仓库创建、用户权限管理以及服务启动与测试等环节。

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

环境准备

在开始搭建之前,确保Ubuntu系统已更新至最新的软件包列表,并具备基本的网络配置,推荐使用Ubuntu 20.04或22.04 LTS版本,以获得更好的稳定性和支持,通过以下命令更新系统:

sudo apt update
sudo apt upgrade -y

确保系统已安装apache2(如果通过HTTP方式访问)或svnserve(通过SVN协议访问),本文将分别介绍两种方式的配置过程。

安装SVN服务

Ubuntu官方软件源中包含SVN相关组件,可通过apt直接安装,执行以下命令安装Subversion服务器端工具:

sudo apt install subversion -y

安装完成后,验证SVN版本:

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

若显示版本信息,则表示安装成功,若需通过HTTP协议访问(例如结合Apache实现Web界面),还需安装libapache2-mod-svnapache2

sudo apt install apache2 libapache2-mod-svn -y

创建SVN仓库

SVN仓库是存储代码文件的目录,建议创建在/var/svn路径下,首先创建该目录并设置权限:

sudo mkdir -p /var/svn
sudo chown -R www-data:www-data /var/svn  # 若使用Apache,需授权给www-data用户
sudo chmod -R 775 /var/svn

使用svnadmin创建新仓库,例如命名为project1

sudo svnadmin create /var/svn/project1

创建完成后,仓库目录下会生成多个文件和文件夹,包括conf(配置目录)、db(数据存储)、hooks(钩子脚本)等。

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

配置仓库访问权限

进入仓库的conf目录,修改三个核心配置文件:svnserve.conf(SVN服务配置)、passwd(用户密码)和authz(权限控制)。

配置svnserve.conf

sudo nano /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 nano /var/svn/project1/conf/passwd

格式为username = password

[users]
user1 = password1
user2 = password2

配置权限控制

编辑authz文件,定义用户或用户组的访问权限:

sudo nano /var/svn/project1/conf/authz

示例配置如下:

[groups]
admin = user1
developers = user1,user2
[/]
@admin = rw
* = r
[/project1/trunk]
@developers = rw

上述配置表示:admin组用户对整个仓库有读写权限,其他用户只读;developers组对trunk目录有读写权限。

启动SVN服务

SVN服务可通过两种方式启动:独立服务(svnserve)或集成Apache服务。

使用svnserve独立服务

编辑svnserve配置文件,指定仓库根目录和数据目录:

sudo nano /etc/default/svnserve
SVNserve_ARGS="--root /var/svn -r /var/svn"

启动服务并设置开机自启:

sudo systemctl start svnserve
sudo systemctl enable svnserve

检查服务状态:

sudo systemctl status svnserve

集成Apache服务(可选)

若通过HTTP访问,需启用Apache的SVN模块并配置虚拟主机,首先启用模块:

sudo a2enmod dav_svn
sudo a2enmod authz_svn

创建Apache配置文件:

sudo nano /etc/apache2/sites-available/svn.conf
<Location /svn>
    DAV svn
    SVNParentPath /var/svn
    AuthType Basic
    AuthName "SVN Repository"
    AuthUserFile /etc/svn/passwd
    AuthzSVNAccessFile /etc/svn/authz
    Require valid-user
</Location>

创建密码文件并添加用户(需先安装apache2-utils):

sudo htpasswd -c /etc/svn/passwd user1

启用配置并重启Apache:

sudo a2ensite svn.conf
sudo systemctl restart apache2

测试SVN仓库

使用SVN客户端测试连接,若通过svnserve访问,命令为:

svn co svn://localhost/project1

输入配置的用户名和密码,若成功检出文件,则表示搭建成功,若通过HTTP访问,则使用:

svn co http://localhost/svn/project1

常见问题与维护

  1. 权限问题:确保仓库目录权限正确,尤其是db目录需可写。
  2. 防火墙配置:若远程访问,需开放SVN默认端口(3690)或HTTP端口(80)。
  3. 仓库备份:定期通过svnadmin hotcopy备份仓库数据。

相关问答FAQs

Q1: 如何修改SVN仓库的默认端口?
A1: 修改/etc/default/svnserve文件中的SVNserve_ARGS参数,添加--listen-port 新端口号,然后重启服务。SVNserve_ARGS="--root /var/svn -r /var/svn --listen-port 3691",客户端连接时需指定新端口,如svn://localhost:3691/project1

Q2: SVN仓库如何实现增量备份?
A2: 使用svnadmin dump命令导出仓库数据,并通过管道压缩实现增量备份。svnadmin dump /var/svn/project1 | gzip > project1_backup_$(date +%Y%m%d).gz,恢复时需先创建空仓库,再使用svnadmin load导入备份文件。

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