SVN 服务器搭建及配置教程
Subversion(SVN)是一个开源的版本控制系统,用于管理和跟踪文件和目录的更改。它允许团队协同工作,记录每个版本的修改历史,并轻松回滚到之前的版本。本文将详细介绍如何在 Linux 系统(以 CentOS 7 为例)上搭建和配置 SVN 服务器,包括使用 Apache 和独立服务器两种方式。
一、使用 Apache 搭建 SVN 服务器
这种方式允许通过 HTTP/HTTPS 协议访问 SVN 仓库,更方便用户访问和管理。
- 安装必要的软件包:
bash
sudo yum install httpd subversion mod_dav_svn mod_ssl
- 创建 SVN 仓库:
bash
sudo mkdir -p /var/www/svn
sudo svnadmin create /var/www/svn/myrepo
这里/var/www/svn/myrepo
是你的仓库路径,可以根据需要修改。
- 配置 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
- 配置权限控制 (可选):
在仓库目录下,编辑 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 组的用户可以写入。
- 重启 Apache 服务:
bash
sudo systemctl restart httpd
- 测试访问:
在浏览器中输入 http://your_server_ip/svn
,应该会提示你输入用户名和密码。
二、使用独立服务器搭建 SVN 服务器
这种方式使用 svnserve
进程直接提供 SVN 服务,通常使用 svn://
协议访问。
- 安装 Subversion:
bash
sudo yum install subversion
- 创建 SVN 仓库:
bash
sudo mkdir -p /var/www/svn
sudo svnadmin create /var/www/svn/myrepo
- 配置 SVN 服务器:
编辑仓库目录下的 conf/svnserve.conf
文件,取消以下行的注释并根据需要修改:
anon-access = read # 匿名用户可读,可设置为 none 禁止匿名访问
auth-access = write # 认证用户可写
password-db = passwd # 指定密码文件
authz-db = authz # 指定权限配置文件
realm = My Repository # 认证域的名称
- 配置用户和密码:
编辑 conf/passwd
文件,添加用户和密码:
[users]
user1 = password1
user2 = password2
- 配置访问权限 (可选):
编辑 conf/authz
文件,配置更细粒度的访问权限: (参考上面 Apache 配置中的权限控制部分)
- 启动 SVN 服务器:
bash
svnserve -d -r /var/www/svn
-d
参数表示以后台守护进程方式运行,-r
指定仓库的根目录。 可以使用 --listen-port
指定端口,例如 svnserve -d -r /var/www/svn --listen-port 3691
- 配置开机启动 (可选):
创建一个 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
- 测试访问:
使用 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 服务器。 记住根据你的实际需求调整配置,并参考官方文档了解更多高级功能。