凌峰创科服务平台

Linux下如何搭建SVN服务器?

在Linux系统中搭建SVN(Subversion)服务器是一个常见的需求,SVN作为版本控制系统,能够有效管理代码和文档的版本历史,以下是详细的搭建步骤和配置方法,包括环境准备、安装配置、权限管理及常见问题处理。

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

环境准备与安装

首先需要一台Linux服务器,推荐使用Ubuntu或CentOS系统,以Ubuntu为例,确保系统已更新至最新状态,执行以下命令更新软件包列表:

sudo apt update && sudo apt upgrade -y

安装SVN服务及相关依赖:

sudo apt install subversion libapache2-mod-svn libsvn-tools -y

安装完成后,检查SVN版本确认安装成功:

svnserve --version

创建仓库与配置

SVN仓库默认存储在/var/svn目录,首先创建该目录并设置权限:

Linux下如何搭建SVN服务器?-图2
(图片来源网络,侵删)
sudo mkdir -p /var/svn
sudo chown -R www-data:www-data /var/svn
sudo chmod -R 775 /var/svn

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

sudo svnadmin create /var/svn/project1

仓库创建后,进入仓库的conf目录修改配置文件,包括svnserve.confpasswdauthz

配置svnserve.conf

编辑/var/svn/project1/conf/svnserve.conf,取消以下注释并修改:

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

配置用户密码

编辑passwd文件添加用户,格式为username = password

[users]
user1 = password1
user2 = password2

配置权限文件

编辑authz文件设置用户或用户组的访问权限。

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

上述配置表示admin组用户对根目录有读写权限,其他用户只有读权限。

启动SVN服务

使用以下命令启动SVN服务:

sudo svnserve -d -r /var/svn

参数-d表示后台运行,-r指定仓库根目录,检查服务状态:

ps aux | grep svnserve

通过Apache访问(可选)

若需通过Web方式访问,需配置Apache,安装libapache2-mod-svn后,启用相关模块:

sudo a2enmod dav_svn
sudo a2enmod authz_svn

创建Apache配置文件/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>

创建密码文件并设置权限:

sudo htpasswd -c /etc/svn/passwd user1
sudo chown www-data:www-data /etc/svn/passwd
sudo chmod 640 /etc/svn/passwd

重启Apache服务:

sudo systemctl restart apache2

防火墙配置

若服务器启用了防火墙,需开放SVN默认端口3690:

sudo ufw allow 3690/tcp

常见问题处理

  1. 权限错误:确保仓库目录权限为775,用户属于www-data组。
  2. 服务无法启动:检查svnserve.conf配置是否正确,尤其是注释符和空格。

相关问答FAQs

Q1: 如何备份SVN仓库?
A1: 使用svnadmin hotcopy命令创建仓库热备份,

svnadmin hotcopy /var/svn/project1 /backup/svn/project1_backup

定期备份可结合cron任务实现自动化。

Q2: 如何迁移SVN仓库到另一台服务器?
A2: 在原服务器上使用svnadmin dump导出仓库数据,

svnadmin dump /var/svn/project1 > project1_dump.svn

将导出文件传输到新服务器,通过svnadmin load导入:

svnadmin load /var/svn/project1 < project1_dump.svn

完成后重启SVN服务即可。

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