在Linux系统上搭建SVN服务器的详细指南
准备工作
-
系统要求
- Linux发行版:Ubuntu/CentOS/Debian等(本文以Ubuntu 22.04为例)
- 用户权限:
sudo
权限账户 - 网络配置:开放3690端口(SVN默认端口)
-
安装必要工具
# 更新软件包列表 sudo apt update && sudo apt upgrade -y # 安装Subversion和Apache模块 sudo apt install subversion libapache2-mod-svn -y
创建SVN仓库
-
建立仓库目录
sudo mkdir -p /var/svn/repos # 推荐仓库存储路径 sudo svnadmin create /var/svn/repos/myrepo # 创建名为myrepo的仓库
-
设置目录权限
sudo chown -R www-data:www-data /var/svn/repos # Apache用户权限 sudo chmod -R 770 /var/svn/repos
配置Apache集成(支持HTTP/HTTPS访问)
-
启用Apache模块
sudo a2enmod dav_svn authz_svn # 启用SVN模块 sudo systemctl restart apache2
-
创建配置文件
新建配置文件/etc/apache2/mods-enabled/dav_svn.conf
:<Location /svn/myrepo> # 访问路径 http://your-ip/svn/myrepo DAV svn SVNPath /var/svn/repos/myrepo # 仓库物理路径 # 认证配置 AuthType Basic AuthName "SVN Repository" AuthUserFile /etc/apache2/svn-auth-users # 用户密码文件 Require valid-user # 权限控制(可选) AuthzSVNAccessFile /etc/apache2/svn-authz </Location>
-
创建用户和权限文件
# 创建用户(重复执行添加多个用户) sudo htpasswd -cm /etc/apache2/svn-auth-users user1 # 创建权限控制文件 sudo nano /etc/apache2/svn-authz
示例权限配置:
[groups] admins = user1 developers = user2 [myrepo:/] @admins = rw # 管理员可读写 @developers = r # 开发组只读
-
重启Apache生效
sudo systemctl restart apache2
防火墙配置
sudo ufw allow 80 sudo ufw allow 443 sudo ufw reload
客户端连接测试
-
浏览器访问
http://your-server-ip/svn/myrepo
输入用户名密码后应看到仓库内容
-
命令行操作
# 检出仓库 svn checkout http://your-server-ip/svn/myrepo --username user1 # 添加文件并提交 touch test.txt svn add test.txt svn commit -m "Initial commit"
高级配置(可选)
-
启用HTTPS
- 使用Let’s Encrypt获取免费SSL证书
- 修改Apache配置启用
https://
访问
-
自定义端口
# 在/etc/apache2/ports.conf添加 Listen 8080 # 自定义端口
-
自动同步钩子
在仓库的hooks
目录创建post-commit
脚本:#!/bin/sh /usr/bin/svn update /var/www/project --username auto --password yourpass
故障排查
-
权限问题
sudo tail -f /var/log/apache2/error.log # 查看Apache错误日志 sudo chown -R www-data:www-data /var/svn/repos # 重置权限
-
连接测试
telnet your-server-ip 80 # 测试端口连通性 svn ls http://localhost/svn/myrepo # 本地测试
-
SELinux问题(CentOS)
sudo setsebool -P httpd_unified 1 # 允许Apache统一访问
安全建议
- 定期备份仓库:
svnadmin dump /var/svn/repos/myrepo > backup.svn
- 使用HTTPS替代HTTP
- 限制IP访问:通过
.htaccess
设置白名单 - 定期更新系统:
sudo apt update && sudo apt upgrade
引用说明参考Subversion官方文档(svnbook.red-bean.com)和Apache HTTP Server文档(httpd.apache.org),结合Linux系统管理最佳实践整理而成,配置命令已在Ubuntu 22.04 LTS环境下验证通过。
通过以上步骤,您已成功搭建了安全可靠的SVN服务器,实际部署时请根据业务需求调整权限和存储路径,生产环境建议使用专业级服务器硬件并配置定期备份策略。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6553.html