SVN服务器搭建及配置教程 – wiki基地

SVN 服务器搭建及配置教程

Subversion(SVN)是一个开源的版本控制系统,用于管理和跟踪文件和目录的更改。它允许团队协同工作,记录每个版本的修改历史,并轻松回滚到之前的版本。本文将详细介绍如何在 Linux 系统(以 CentOS 7 为例)上搭建和配置 SVN 服务器,包括使用 Apache 和独立服务器两种方式。

一、使用 Apache 搭建 SVN 服务器

这种方式允许通过 HTTP/HTTPS 协议访问 SVN 仓库,更方便用户访问和管理。

  1. 安装必要的软件包:

bash
sudo yum install httpd subversion mod_dav_svn mod_ssl

  1. 创建 SVN 仓库:

bash
sudo mkdir -p /var/www/svn
sudo svnadmin create /var/www/svn/myrepo

这里/var/www/svn/myrepo是你的仓库路径,可以根据需要修改。

  1. 配置 Apache:

编辑 Apache 的配置文件 /etc/httpd/conf/httpd.conf,添加以下内容:

apache
<Location /svn>
DAV svn
SVNPath /var/www/svn/myrepo
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>

  • <Location /svn> 指定了 SVN 仓库的访问路径,可以通过 http://your_server_ip/svn 访问。
  • DAV svn 启用 dav_svn 模块。
  • SVNPath 指定了 SVN 仓库的路径。
  • AuthType Basic 使用基本身份验证。
  • AuthName 设置身份验证对话框的标题。
  • AuthUserFile 指定用户认证文件的路径,我们将在下一步创建。
  • Require valid-user 要求用户进行身份验证。

  • 创建用户认证文件:

bash
sudo htpasswd -c /etc/svn-auth-file user1

这将创建一个名为 /etc/svn-auth-file 的文件,并添加用户 user1。系统会提示你输入密码。可以使用 -m 参数指定使用 MD5 加密密码。 可以添加更多用户:

bash
sudo htpasswd /etc/svn-auth-file user2
sudo htpasswd /etc/svn-auth-file user3

  1. 配置权限控制 (可选):

在仓库目录下,编辑 conf/svnserve.conf 文件,取消以下行的注释并修改:

anon-access = read
auth-access = write
password-db = passwd
authz-db = authz

然后编辑 conf/passwd 文件,添加用户和密码:

[users]
user1 = password1
user2 = password2

最后编辑 conf/authz 文件,配置更细粒度的访问权限:

“`
[groups]
developers = user1, user2

[/]
* = r
@developers = rw
“`

这将允许所有用户读取仓库,但只有 developers 组的用户可以写入。

  1. 重启 Apache 服务:

bash
sudo systemctl restart httpd

  1. 测试访问:

在浏览器中输入 http://your_server_ip/svn,应该会提示你输入用户名和密码。

二、使用独立服务器搭建 SVN 服务器

这种方式使用 svnserve 进程直接提供 SVN 服务,通常使用 svn:// 协议访问。

  1. 安装 Subversion:

bash
sudo yum install subversion

  1. 创建 SVN 仓库:

bash
sudo mkdir -p /var/www/svn
sudo svnadmin create /var/www/svn/myrepo

  1. 配置 SVN 服务器:

编辑仓库目录下的 conf/svnserve.conf 文件,取消以下行的注释并根据需要修改:

anon-access = read # 匿名用户可读,可设置为 none 禁止匿名访问
auth-access = write # 认证用户可写
password-db = passwd # 指定密码文件
authz-db = authz # 指定权限配置文件
realm = My Repository # 认证域的名称

  1. 配置用户和密码:

编辑 conf/passwd 文件,添加用户和密码:

[users]
user1 = password1
user2 = password2

  1. 配置访问权限 (可选):

编辑 conf/authz 文件,配置更细粒度的访问权限: (参考上面 Apache 配置中的权限控制部分)

  1. 启动 SVN 服务器:

bash
svnserve -d -r /var/www/svn

-d 参数表示以后台守护进程方式运行,-r 指定仓库的根目录。 可以使用 --listen-port 指定端口,例如 svnserve -d -r /var/www/svn --listen-port 3691

  1. 配置开机启动 (可选):

创建一个 systemd 服务文件:

bash
sudo vi /etc/systemd/system/svnserve.service

添加以下内容:

“`ini
[Unit]
Description=Subversion server
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/svnserve -d -r /var/www/svn
User=apache # 可以根据你的实际情况修改用户
Group=apache # 可以根据你的实际情况修改组

[Install]
WantedBy=multi-user.target
“`

然后执行以下命令:

bash
sudo systemctl enable svnserve
sudo systemctl start svnserve

  1. 测试访问:

使用 SVN 客户端(例如 TortoiseSVN)连接 svn://your_server_ip/myrepo 进行测试。

三、客户端访问

可以使用各种 SVN 客户端访问 SVN 服务器,例如:

  • TortoiseSVN (Windows): 一个图形化界面客户端,易于使用。
  • RabbitVCS (Linux): 一个 Linux 下的图形化客户端,类似 TortoiseSVN。
  • 命令行客户端: 所有操作系统都自带 svn 命令行客户端,功能强大且灵活。

四、备份与恢复

定期备份 SVN 仓库非常重要。可以使用 svnadmin dump 命令备份仓库:

bash
svnadmin dump /var/www/svn/myrepo > /backup/myrepo.dump

恢复仓库可以使用 svnadmin load 命令:

bash
svnadmin create /var/www/svn/myrepo_new
svnadmin load /var/www/svn/myrepo_new < /backup/myrepo.dump

五、安全性建议

  • 使用强密码保护 SVN 用户。
  • 限制对 SVN 仓库的访问权限,只允许授权用户访问。
  • 定期备份 SVN 仓库。
  • 如果使用 Apache,考虑使用 HTTPS 协议加密传输数据。

本教程详细介绍了在 Linux 系统上搭建和配置 SVN 服务器的两种方式,并提供了一些安全建议。希望能够帮助你顺利搭建自己的 SVN 服务器。 记住根据你的实际需求调整配置,并参考官方文档了解更多高级功能。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部