在Linux系统上搭建SVN(Subversion)服务器是管理代码版本控制的可靠方案,以下为详细操作流程,基于Ubuntu/CentOS等主流发行版(以Ubuntu为例),所有步骤需root权限执行:
安装必要组件
sudo apt install subversion libapache2-mod-svn apache2 -y
subversion
:SVN核心服务libapache2-mod-svn
:Apache的SVN模块apache2
:Web服务器(提供HTTP/HTTPS访问)
创建SVN仓库
- 建立仓库目录
sudo mkdir -p /var/www/svn sudo svnadmin create /var/www/svn/myrepo # 创建名为myrepo的仓库
- 设置权限
sudo chown -R www-data:www-data /var/www/svn # 授权Apache用户 sudo chmod -R 775 /var/www/svn
配置Apache集成
-
启用必要模块
sudo a2enmod dav dav_svn authz_svn sudo systemctl restart apache2
-
创建配置文件
编辑Apache虚拟主机配置:sudo nano /etc/apache2/sites-available/svn.conf ```按需修改路径和域名): ```apache <VirtualHost *:80> ServerName svn.yourdomain.com # 替换为实际域名或IP <Location /svn/myrepo> # 访问路径 DAV svn SVNPath /var/www/svn/myrepo # 仓库物理路径 # 认证配置 AuthType Basic AuthName "SVN Repository" AuthUserFile /etc/apache2/svn-auth-passwd # 密码文件路径 Require valid-user # 权限控制(可选) AuthzSVNAccessFile /etc/apache2/svn-authz # 权限文件路径 </Location> </VirtualHost>
-
启用站点并重载服务
sudo a2ensite svn.conf sudo systemctl reload apache2
设置用户认证与权限
- 创建用户密码文件
# 首次添加用户(后续添加去掉-c参数) sudo htpasswd -c /etc/apache2/svn-auth-passwd username1
- 配置权限文件
sudo nano /etc/apache2/svn-authz
示例权限规则(分组控制):
[groups] developers = user1,user2 admins = admin1
[myrepo:/] # 仓库根目录
@admins = rw # 管理员可读写
@developers = r # 开发组只读
- = # 其他用户无权限
[myrepo:/trunk/docs] # 特定目录
user3 = rw
---
### **五、防火墙与SELinux设置**
```bash
# 开放HTTP端口(默认80)
sudo ufw allow 80/tcp
# 若使用SELinux(CentOS/RHEL需执行)
sudo setsebool -P httpd_unified 1
客户端连接测试
-
浏览器访问
http://svn.yourdomain.com/svn/myrepo
输入用户名密码后应看到目录结构 -
命令行操作
svn checkout http://svn.yourdomain.com/svn/myrepo
高级安全加固(可选)
- 启用HTTPS:使用Let’s Encrypt免费SSL证书
- IP限制:在
<Location>
块中添加Require ip 192.168.1.0/24
- 日志审计:在Apache配置中添加
CustomLog /var/log/apache2/svn_access.log combined
常见问题排查
-
403 Forbidden
- 检查
/var/www/svn
目录权限 - 确认Apache用户(
www-data
)有读取权限
- 检查
-
认证失败
- 重启Apache:
sudo systemctl restart apache2
- 验证密码文件路径是否正确
- 重启Apache:
-
仓库无法识别
- 检查
SVNPath
是否指向有效仓库 - 确保
dav_svn
模块已启用:sudo a2enmod dav_svn
- 检查
通过以上步骤,您已部署了支持多用户权限管理的SVN服务,定期备份/var/www/svn
目录和Apache配置文件可确保数据安全,对于企业级需求,建议结合LDAP认证或使用svnserve
独立服务提升性能。
引用说明:本文参考Subversion官方文档(svnbook.red-bean.com)及Apache HTTP Server指南(httpd.apache.org),遵循Linux基金会安全实践标准。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6550.html