SVN服务器怎么搭建?

我来帮你一步步搭建一个SVN(Subversion)服务器,SVN是一个集中式版本控制系统,适合团队协作管理代码或文档。

我将分WindowsLinux两种常见环境来讲解,你可以根据你的服务器系统选择相应的方法。

核心思路

无论哪种系统,搭建SVN服务器都离不开以下三步:

1、安装SVN服务端软件

2、创建版本库

3、配置用户权限并启动服务

方法一:Windows 环境下搭建(推荐使用 VisualSVN Server)

这是最简单、最直观的方法,自带图形界面管理,适合新手。

步骤1:下载并安装 VisualSVN Server

- 访问官网 [https://www.visualsvn.com/server/](https://www.visualsvn.com/server/)

- 下载VisualSVN Server (免费的基础版足够小团队使用)。

- 安装时,注意设置:

Location: 安装路径和版本库存放路径(建议放到非系统盘)。

Port: 默认使用443 (HTTPS) 或8443,HTTPS更安全。

Authentication: 选择VisualSVN Server Standard authentication(使用内置用户)。

步骤2:创建版本库(Repository)

- 打开安装好的 “VisualSVN Server Manager”。

- 右键点击Repositories ->Create New Repository...

- 输入版本库名称(例如MyProject)。

- 选择仓库类型(默认FSFS通常选择较新的VDFS)。

- 创建一个初始目录结构(可以选择Empty RepositorySingle-Level Structure)。

- 点击完成。

步骤3:创建用户并授权

- 点击左侧的Users -> 右键Create User...,为团队成员创建账号密码。

- 右键你刚创建的版本库MyProject ->Properties...

- 在Security 选项卡中,点击Add...,选择你创建的用户,并赋予Read/Write 权限。

- 点击确定。

步骤4:连接测试

- 在 VisualSVN Server Manager 中,右键你的版本库 ->Copy URL to Clipboard

- 打开浏览器或SVN客户端(如 TortoiseSVN),粘贴地址,输入刚才设置的用户名密码,应该就能访问了。

方法二:Linux 环境下搭建(Ubuntu/CentOS 命令行)

适合在云端服务器或对命令行熟悉的用户。

步骤1:安装 SVN 服务端

Ubuntu/Debian
sudo apt update
sudo apt install subversion apache2 libapache2-mod-svn -y
CentOS/RHEL
sudo yum install subversion httpd mod_dav_svn -y

步骤2:创建SVN仓库目录和仓库

创建一个总的存放目录
sudo mkdir -p /var/svn/repos
创建一个项目仓库(myproject)
sudo svnadmin create /var/svn/repos/myproject

步骤3:配置用户权限

首先给仓库设置访问权限文件,编辑配置文件:

sudo vim /var/svn/repos/myproject/conf/svnserve.conf

将以下配置项取消注释或添加(去掉前面的#):

[general]
anon-access = none         # 禁止匿名访问
auth-access = write        # 授权用户可写
password-db = passwd       # 指定密码文件
authz-db = authz           # 指定权限文件

然后设置用户名密码:

sudo vim /var/svn/repos/myproject/conf/passwd

[users] 部分添加账号:

[users]
user1 = password123
user2 = your_secure_pwd

接着设置目录访问权限:

sudo vim /var/svn/repos/myproject/conf/authz

添加以下内容,允许用户读写根目录:

[/]
user1 = rw
user2 = rw
*= r

步骤4:启动服务

方式A:svnserve 独立服务(简单,临时或内网)

启动SVN服务,监听默认端口3690
sudo svnserve -d -r /var/svn/repos
设置开机自启(方式较多,这里提供一个简单方法)
编辑 /etc/rc.local,添加上面那行命令

方式B:通过Apache HTTP服务器(更稳定、支持HTTPS)

配置Apache模块:

sudo vim /etc/apache2/mods-available/dav_svn.conf  # Ubuntu
或者
sudo vim /etc/httpd/conf.d/subversion.conf          # CentOS

在文件内添加一个虚拟目录配置:

<Location /svn>
  DAV svn
  SVNParentPath /var/svn/repos
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/svn-auth-users
  Require valid-user
</Location>

创建HTTP认证用户文件:

sudo htpasswd -c /etc/svn-auth-users admin      # 第一次创建,要加 -c
sudo htpasswd /etc/svn-auth-users user1         # 后续添加用户,不要加 -c

重启Apache:

sudo systemctl restart apache2  # Ubuntu
sudo systemctl restart httpd    # CentOS

步骤5:客户端访问

方式A:SVN协议svn://你的服务器IP/myproject

方式B:HTTP(S)协议http://你的服务器IP/svn/myproject

客户端使用(通用)

无论你用哪种服务器,客户端都推荐使用TortoiseSVN (Windows) 或 Mac/Linux 下的命令行svn 命令。

- 在桌面右键 ->SVN Checkout...

- 输入仓库地址:svn://your-server-ip/repo-namehttps://your-server-ip/svn/repo-name

- 输入你设置的用户名和密码。

重要提醒与安全建议

1、防火墙:如果使用 svnserve(端口3690),确保防火墙放行该端口,如果使用 Apache(默认443或80),也需放行对应端口。

2、数据备份:SVN仓库就是对应的文件夹(例如/var/svn/repos/myproject),直接打包该文件夹即可备份。

3、权限管理authz 文件可以实现更精细的控制,例如只让某人读某个子目录,具体语法参考SVN文档。

4、HTTPS加密:强烈建议在公网上使用Apache+HTTPS,并配置SSL证书,避免密码明文传输。

如果你告诉我具体的操作系统(Windows Server 2022 / Ubuntu 20.04 / CentOS 7),我可以提供更针对性的配置代码。

文章摘自:https://idc.huochengrm.cn/fwq/25001.html

评论