在Linux系统上搭建SVN服务器:从零开始的详细指南
Apache Subversion(简称SVN)是一个广泛使用的集中式版本控制系统,它帮助开发团队管理和追踪文件与目录的历史变更。虽然分布式版本控制系统如Git日益流行,但SVN在诸多企业级项目和特定工作流程中仍占据重要地位。本文将详细介绍在Linux操作系统(以Ubuntu/CentOS为例)上,如何一步步搭建一个稳定可靠的SVN服务器。
准备工作与核心组件安装
首先,确保你拥有一个安装了Linux的服务器或虚拟机,并具备管理员(root)权限。搭建SVN服务器通常需要两个核心组件:Subversion软件本身和用于网络访问的服务器模块(常用Apache HTTP Server)。打开终端,根据你的Linux发行版执行安装命令。对于基于Debian/Ubuntu的系统,使用sudo apt-get update && sudo apt-get install subversion apache2 libapache2-mod-svn。对于基于RHEL/CentOS的系统,则使用sudo yum install subversion httpd mod_dav_svn。安装完成后,可以通过svn --version命令验证Subversion是否安装成功。
创建版本库与初始配置
SVN的所有数据都存储在版本库中。我们首先需要选择一个合适的目录来存放所有版本库,例如/var/svn。使用命令sudo mkdir /var/svn创建该目录。接着,创建一个具体的项目版本库,例如名为“myproject”:sudo svnadmin create /var/svn/myproject。创建完成后,进入该版本库的conf目录(/var/svn/myproject/conf),这里有三个关键配置文件:svnserve.conf、passwd和authz。
首先配置svnserve.conf,取消以下几行的注释并修改:anon-access = none(禁止匿名访问)、auth-access = write(认证用户可写)、password-db = passwd(指定密码文件)、authz-db = authz(指定权限文件)。接着,在passwd文件中添加用户及其密码,格式如username = password。最后,在authz文件中配置详细的目录访问权限,可以按用户或用户组进行设置。

集成Apache HTTP Server以实现Web访问
仅使用svnserve服务可以实现基本功能,但集成Apache可以提供更强大的特性,如WebDAV协议支持、精细的Apache级别认证以及与现有Web服务的集成。我们需要配置Apache来提供SVN服务。创建一个Apache配置文件,例如/etc/apache2/mods-available/dav_svn.conf(Ubuntu)或/etc/httpd/conf.d/subversion.conf(CentOS)。
在该文件中添加类似以下配置:
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /var/svn/authz
Require valid-user
</Location>
这段配置意味着可以通过http://your-server-ip/svn/myproject这样的URL访问版本库。接下来,使用htpasswd命令创建Apache认证用户文件:sudo htpasswd -cm /etc/apache2/dav_svn.passwd username(首次创建用-c,后续添加用户不用-c)。确保authz权限文件也已正确配置。最后,重启Apache服务使配置生效:sudo systemctl restart apache2 或 sudo systemctl restart httpd。
防火墙设置、测试与基本使用
如果系统启用了防火墙,需要开放相应端口。对于Apache集成方案,通常需要开放80(HTTP)或443(HTTPS)端口。例如,在UFW中执行sudo ufw allow 80/tcp,或在firewalld中执行sudo firewall-cmd --permanent --add-service=http。现在,你可以进行测试了。在另一台机器上,使用SVN客户端尝试检出仓库:svn checkout http://your-server-ip/svn/myproject,根据提示输入用户名和密码。如果成功,你将看到一个空目录或初始化的仓库结构。
至此,一个功能完整的SVN服务器已经搭建完成。你可以开始导入项目、创建标准的trunk/branches/tags目录结构,并邀请团队成员共同协作。后续维护工作主要包括用户管理、权限调整、版本库的定期备份(使用svnadmin dump)以及关注Subversion和Apache的安全更新。这个基于Linux的SVN服务器将为你的项目提供一个坚实、可控的版本管理基础。

评论(3)
发表评论