凌峰创科服务平台

Subversion服务器怎么搭建?步骤有哪些?

Subversion (SVN) 简介

Subversion 是一个开源的版本控制系统,用于管理文件和目录的变更,它集中式管理,所有版本数据都存储在中央服务器上,开发者通过客户端连接到服务器,进行检出、提交、更新等操作。

Subversion服务器怎么搭建?步骤有哪些?-图1
(图片来源网络,侵删)

核心概念:

  • 仓库: 存储所有文件和版本历史记录的地方,一个服务器上可以有多个仓库。
  • 检出: 从仓库下载文件到本地工作副本。
  • 提交: 将本地工作副本的更改上传到仓库。
  • 更新: 从仓库获取最新的更改到本地工作副本。

在 Linux (CentOS 7/8) 上搭建 SVN 服务器

这是最常见和推荐的服务器环境,通常使用 httpd (Apache) 作为服务前端,可以通过 Web 浏览器访问和操作仓库。

第一步:安装 SVN 和 Apache

更新你的系统包列表,然后安装 subversionhttpd

# 1. 更新系统
sudo yum update -y
# 2. 安装 SVN 服务器和 Apache Web 服务器
sudo yum install -y subversion httpd

第二步:创建 SVN 仓库

我们选择在 /var/svn 目录下创建仓库,这是一个常见的实践。

Subversion服务器怎么搭建?步骤有哪些?-图2
(图片来源网络,侵删)
# 1. 创建仓库目录
sudo mkdir -p /var/svn
# 2. 创建一个新的仓库,例如名为 "myproject"
#    svnadmin create 命令会创建一个包含所有必要文件的仓库目录结构
sudo svnadmin create /var/svn/myproject
# 3. 设置仓库目录的所有权
#    让 Apache 进程 (apache 用户) 可以读写仓库
sudo chown -R apache:apache /var/svn/myproject

第三步:配置 Apache 访问 SVN

我们需要配置 Apache 来提供 SVN 服务的 Web 访问方式。

  1. 创建 Apache 配置文件

    在 Apache 的配置目录下为你的 SVN 仓库创建一个配置文件。

    sudo vi /etc/httpd/conf.d/svn.conf
  2. 添加以下内容到 svn.conf 文件中

    # 设置 SVN 仓库的根目录
    <Location /svn>
       # 指定 SVN 仓库的路径
       DAV svn
       # SVNParentPath 指向包含所有仓库的父目录
       SVNParentPath /var/svn
       # 认证类型,可以是 Basic(基础)或 Digest(,Digest 更安全
       AuthType Basic
       # 认证领域,提示用户输入凭据时显示
       AuthName "SVN Repository"
       # 指定用户密码文件
       AuthUserFile /etc/svn/passwd
       # 指定用户权限文件
       AuthzSVNAccessFile /etc/svn/authz
       # 控制访问权限,默认拒绝所有
       Require valid-user
    </Location>

第四步:创建用户和密码

Apache 的基本认证需要一个密码文件来存储用户名和加密后的密码。

  1. 创建密码文件并添加第一个用户

    我们使用 htpasswd 命令来管理密码文件。-c 参数表示创建新文件。

    # 创建用户 'admin',首次创建需要 -c
    sudo htpasswd -c /etc/svn/passwd admin

    系统会提示你为 admin 用户设置密码。

  2. 添加更多用户

    当添加第二个及以后的用户时,不要使用 -c 参数,否则会覆盖原有文件。

    sudo htpasswd /etc/svn/passwd user1
    sudo htpasswd /etc/svn/passwd user2

第五步:配置用户权限

现在创建一个权限文件来定义哪些用户可以访问哪些仓库,以及他们的权限(读 r,写 w)。

  1. 创建权限文件

    sudo vi /etc/svn/authz
  2. 添加以下权限规则

    # [groups] 定义用户组
    [groups]
    # 定义一个名为 'developers' 的组,包含 user1 和 user2
    developers = user1, user2
    # [/] 表示根目录下的所有仓库
    # @developers 表示 'developers' 组
    # rw 表示读写权限
    [/]
    * = r           # 所有人都有读权限
    @developers = rw # developers 组有读写权限
    admin = rw      # admin 用户有读写权限
    # [myproject:/] 特定 'myproject' 仓库的根目录
    # 你可以为不同仓库设置不同权限
    [myproject:/]
    @developers = rw
    admin = rw
    # [myproject:/branches] 特定路径的权限
    # [myproject:/tags]
    # [myproject:/trunk]

第六步:启动并设置开机自启

现在启动 Apache 服务并设置它开机自动启动。

# 启动 Apache
sudo systemctl start httpd
# 设置开机自启
sudo systemctl enable httpd
# 检查服务状态
sudo systemctl status httpd

第七步:配置防火墙

如果服务器开启了防火墙,需要开放 HTTP (80) 和 HTTPS (443) 端口。

# 永久开放 HTTP 端口
sudo firewall-cmd --permanent --add-service=http
# 重新加载防火墙配置
sudo firewall-cmd --reload

第八步:测试访问

  1. 通过命令行测试

    使用 svn 客户端命令行工具进行测试。

    # 检出仓库到本地
    # URL 格式为 http://<你的服务器IP>/svn/<仓库名>
    svn checkout http://192.168.1.100/svn/myproject

    系统会提示你输入用户名和密码,输入 admin 及其密码,如果成功,会在当前目录下创建一个 myproject 文件夹。

  2. 通过浏览器测试

    在浏览器中访问 http://<你的服务器IP>/svn/myproject。 如果配置正确,浏览器会弹出登录对话框,输入用户名和密码后,你应该能看到仓库的目录结构(branches, tags, trunk)。


在 Windows 上搭建 SVN 服务器

在 Windows 上,我们可以使用 svnserve,这是 SVN 自带的独立服务器进程,配置更简单,但不如 Apache 方式功能强大(如无法通过 Web 浏览器直接访问)。

第一步:下载并安装 SVN for Windows

  1. 访问 VisualSVN Server 官网SlikSVN 官网

    • VisualSVN Server: 强烈推荐给新手,它是一个集成的、易于安装和管理的 SVN 服务器包,自带图形化管理界面。
    • SlikSVN: 只包含命令行工具和 svnserve 服务,适合熟悉命令行的用户。
  2. 下载并运行安装程序,这里以 VisualSVN Server 为例,安装过程非常直观,一路 "Next" 即可,安装时会自动安装 Apache 服务,并配置好 HTTPS 访问。

第二步:使用 VisualSVN Server 创建仓库

  1. 安装完成后,开始菜单中找到 "VisualSVN Server Manager" 并打开。
  2. 在左侧的 "Repositories" 上右键,选择 "Create New Repository"。
  3. 输入仓库名称(如 myproject),选择布局(建议选择 "Standard layout"),然后点击 "OK"。
  4. 仓库创建成功后,它会自动启动。

第三步:配置用户和权限

VisualSVN Server 的图形界面非常友好。

  1. 在左侧的 "Users" 上右键,选择 "Create User...",创建用户(如 admin, user1, user2)。
  2. 在左侧的 "Groups" 上右键,可以创建用户组(如 developers),并将用户添加到组中。
  3. 右键点击你创建的仓库 (myproject),选择 "Properties"。
  4. 在 "Security" 选项卡中,你可以为用户或组分配权限:
    • Read: 只读权限。
    • Read/Write: 读写权限。
    • Deny: 拒绝访问。

第四步:访问 SVN 仓库

VisualSVN Server 默认使用 HTTPS,更安全。

  1. 通过命令行测试

    # 使用 `svn` 命令行工具
    # URL 格式为 https://<你的服务器IP>/<仓库名>
    svn checkout https://localhost/svn/myproject

    系统会提示你输入用户名和密码。

  2. 通过 TortoiseSVN (图形化客户端) 测试

    • 在任意文件夹空白处右键,选择 "SVN Checkout..."。
    • 在 URL of repository 中输入 https://localhost/svn/myproject
    • 在 "Checkout directory" 中选择一个本地路径。
    • 点击 "OK",会弹出登录框,输入用户名和密码。

安全建议

  1. 始终使用 HTTPS: 如果你使用 Apache,强烈建议配置 SSL/TLS 证书,将 HTTP 流量重定向到 HTTPS,以加密数据传输,防止密码泄露。
  2. 使用强密码: 为 SVN 用户设置复杂且不易猜测的密码。
  3. 最小权限原则: 只授予用户完成其工作所必需的最小权限,不要随意给所有用户 rw 权限。
  4. 定期备份: 仓库是项目的核心资产,必须定期备份,备份整个仓库目录即可。
  5. 考虑现代替代品: 对于新项目,可以考虑使用 Git,Git 是分布式版本控制系统,功能更强大,分支管理更灵活,是目前的主流选择,SVN 仍在一些特定领域(如需要精细权限控制的集中式环境)有应用。
分享:
扫描分享到社交APP
上一篇
下一篇