在 Linux 系统上搭建 SVN(Subversion)服务器 是一个常见的版本控制需求,适用于团队协作和代码管理。以下是详细的搭建教程,包括安装、配置和使用。
1. 前置条件
服务器环境:
一台已安装 Linux 系统的服务器(如 CentOS、Ubuntu 或 Debian 等)。
拥有超级用户(root)权限或 sudo 权限。
网络要求:
确保服务器可以连接到互联网(用于安装软件包)。
开放 SVN 使用的端口(默认端口为 3690)。
2. 安装 SVN
2.1 在 CentOS/RHEL 上安装
使用 yum 安装 Subversion:
bash
sudo yum install -y subversion
检查是否安装成功:
bash
svnserve --version
正常输出会显示 Subversion 的版本号。
2.2 在 Ubuntu/Debian 上安装
使用 apt 安装 Subversion:
bash
sudo apt update
sudo apt install -y subversion
检查是否安装成功:
bash
svnserve --version
3. 创建 SVN 仓库
创建存放 SVN 仓库的目录:
bash
sudo mkdir -p /svn/repositories
创建一个新的 SVN 仓库:
bash
sudo svnadmin create /svn/repositories/myrepo
myrepo 是仓库的名称,可以根据需要替换。
设置仓库目录的权限:
bash
sudo 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
检出代码:
bash
svn checkout svn://<服务器IP>/myrepo
提交代码:
bash
svn commit -m "提交说明"
10. 总结
安装和配置:
安装 subversion 软件包。
创建 SVN 仓库并配置用户和权限。
启动和测试:
启动 SVN 服务并测试连接。
确保防火墙端口 3690 已开放。
客户端使用:
使用 SVN 客户端操作仓库(如检出代码、提交代码等)。
通过以上步骤,您可以在 Linux 服务器上成功搭建 SVN 服务器,并为团队提供高效的版本控制服务。