Linux搭建SVN服务器详细教程

在 Linux 系统上搭建 SVN(Subversion)服务器 是一个常见的版本控制需求,适用于团队协作和代码管理。以下是详细的搭建教程,包括安装、配置和使用。
1. 前置条件
- 服务器环境:
- 一台已安装 Linux 系统的服务器(如 CentOS、Ubuntu 或 Debian 等)。
- 拥有超级用户(
root)权限或sudo权限。
- 网络要求:
- 确保服务器可以连接到互联网(用于安装软件包)。
- 开放 SVN 使用的端口(默认端口为 3690)。
2. 安装 SVN
2.1 在 CentOS/RHEL 上安装
-
使用
yum安装 Subversion:bashsudo yum install -y subversion -
检查是否安装成功:
bashsvnserve --version正常输出会显示 Subversion 的版本号。
2.2 在 Ubuntu/Debian 上安装
-
使用
apt安装 Subversion:bashsudo apt update sudo apt install -y subversion -
检查是否安装成功:
bashsvnserve --version
3. 创建 SVN 仓库
-
创建存放 SVN 仓库的目录:
bashsudo mkdir -p /svn/repositories -
创建一个新的 SVN 仓库:
bashsudo svnadmin create /svn/repositories/myrepomyrepo是仓库的名称,可以根据需要替换。
-
设置仓库目录的权限:
bashsudo chown -R svn:svn /svn/repositories sudo chmod -R 770 /svn/repositories
4. 配置 SVN 仓库权限
仓库的配置文件位于 /svn/repositories/myrepo/conf/ 目录下:
4.1 配置用户和密码
编辑 passwd 文件,添加用户和密码:
bash
sudo nano /svn/repositories/myrepo/conf/passwd
添加类似以下内容:
plaintext
[users]
admin = adminpassword
user1 = user1password
user2 = user2password
4.2 配置用户访问权限
编辑 authz 文件,设置用户的访问权限:
bash
sudo nano /svn/repositories/myrepo/conf/authz
添加类似以下内容:
plaintext
[groups]
developers = admin, user1, user2
[/]
@developers = rw
* =
rw:读写权限。r:只读权限。*:表示所有其他用户。
4.3 配置 SVN 服务
编辑 svnserve.conf 文件,启用用户认证:
bash
sudo nano /svn/repositories/myrepo/conf/svnserve.conf
取消以下行的注释并设置为:
plaintext
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = My First SVN Repository
anon-access:匿名用户的权限,none表示不允许匿名访问。auth-access:认证用户的权限,write表示允许读写。password-db:指定用户密码文件。authz-db:指定权限控制文件。
5. 启动 SVN 服务
5.1 启动 SVN 服务
运行以下命令启动 SVN 服务:
bash
sudo svnserve -d -r /svn/repositories
-d:以守护进程方式运行。-r:指定 SVN 仓库的根目录。
5.2 检查 SVN 服务是否启动
使用以下命令检查是否启动成功:
bash
ps -ef | grep svnserve
5.3 设置开机自启
编辑 /etc/rc.d/rc.local 文件,添加启动命令:
bash
sudo echo "svnserve -d -r /svn/repositories" >> /etc/rc.d/rc.local
sudo chmod +x /etc/rc.d/rc.local
6. 测试 SVN 服务
6.1 本地测试
在服务器上测试 SVN 是否正常工作:
bash
svn list svn://localhost/myrepo
输入用户名和密码后,如果能看到仓库内容,说明服务正常。
6.2 远程测试
在客户端上,使用以下命令测试连接:
bash
svn list svn://<服务器IP>/myrepo
例如:
bash
svn list svn://192.168.1.100/myrepo
7. 配置防火墙
确保服务器开放 3690 端口,否则客户端无法访问。
7.1 在 CentOS 上开放端口
bash
sudo firewall-cmd --add-port=3690/tcp --permanent
sudo firewall-cmd --reload
7.2 在 Ubuntu/Debian 上开放端口
bash
sudo ufw allow 3690/tcp
sudo ufw reload
8. 常见问题及解决方法
8.1 问题:无法连接 SVN 仓库
- 原因:服务未启动或防火墙未开放端口。
- 解决方法:
- 确认服务已启动:
bash
ps -ef | grep svnserve - 确认防火墙端口已开放。
- 确认服务已启动:
8.2 问题:权限不足
- 原因:用户没有正确的权限。
- 解决方法:
- 检查
authz文件中的权限设置。 - 确保用户名和密码正确。
- 检查
8.3 问题:启动服务时提示地址被占用
- 原因:端口冲突。
- 解决方法:
- 检查端口占用:
bash
netstat -tulnp | grep 3690 - 杀掉冲突进程或修改 SVN 使用的端口。
- 检查端口占用:
9. 客户端使用 SVN
9.1 SVN 命令行客户端
-
安装客户端:
- Ubuntu/Debian:
bash
sudo apt install -y subversion - CentOS:
bash
sudo yum install -y subversion
- Ubuntu/Debian:
-
检出代码:
bashsvn checkout svn://<服务器IP>/myrepo -
提交代码:
bashsvn commit -m "提交说明"
10. 总结
-
安装和配置:
- 安装
subversion软件包。 - 创建 SVN 仓库并配置用户和权限。
- 安装
-
启动和测试:
- 启动 SVN 服务并测试连接。
- 确保防火墙端口
3690已开放。
-
客户端使用:
- 使用 SVN 客户端操作仓库(如检出代码、提交代码等)。
通过以上步骤,您可以在 Linux 服务器上成功搭建 SVN 服务器,并为团队提供高效的版本控制服务。

浙公网安备 33010602011771号