环境准备
-
系统要求
- Ubuntu 20.04/22.04 LTS(推荐)
sudo
权限账户- 终端访问权限
-
更新系统
sudo apt update && sudo apt upgrade -y
安装SVN核心组件
sudo apt install subversion libapache2-mod-svn -y
subversion
:SVN服务端libapache2-mod-svn
:Apache集成模块
创建版本仓库
-
建立仓库目录
sudo mkdir -p /var/www/svn sudo svnadmin create /var/www/svn/myrepo
myrepo
为仓库名(可自定义)
-
设置权限
sudo chown -R www-data:www-data /var/www/svn/myrepo sudo chmod -R 770 /var/www/svn/myrepo
配置Apache服务
-
启用必要模块
sudo a2enmod dav dav_svn authz_svn
-
创建配置文件
sudo nano /etc/apache2/sites-available/svn.conf
粘贴以下内容(按需修改路径和域名):
<VirtualHost *:80> ServerName svn.yourdomain.com # 替换为实际域名或IP <Location /svn> DAV svn SVNParentPath /var/www/svn # 指向仓库父目录 SVNListParentPath On # 认证配置 AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/svn-auth-passwd Require valid-user # 权限控制 AuthzSVNAccessFile /etc/apache2/svn-authz </Location> </VirtualHost>
-
启用站点并重启Apache
sudo a2ensite svn.conf sudo systemctl restart apache2
用户与权限管理
-
创建用户密码文件
sudo htpasswd -cm /etc/apache2/svn-auth-passwd user1 # 首次创建用-c sudo htpasswd -m /etc/apache2/svn-auth-passwd user2 # 追加用户
-
配置访问权限
sudo nano /etc/apache2/svn-authz
示例规则:
[groups] admins = user1 developers = user2 [myrepo:/] @admins = rw @developers = r * = # 禁止其他用户
防火墙放行(如启用UFW)
sudo ufw allow 80/tcp sudo ufw reload
客户端测试
-
浏览器访问
http://svn.yourdomain.com/svn/myrepo
输入用户名密码验证
-
命令行操作
svn checkout http://svn.yourdomain.com/svn/myrepo
高级安全配置(可选)
-
启用HTTPS
- 使用Let’s Encrypt免费证书:
sudo apt install certbot python3-certbot-apache sudo certbot --apache
- 使用Let’s Encrypt免费证书:
-
限制IP访问
在svn.conf
中添加:<RequireAny> Require ip 192.168.1.0/24 # 允许的IP段 Require host example.com # 允许的域名 </RequireAny>
故障排查
- 权限错误:检查
/var/www/svn
所属组是否为www-data
- 无法访问:确认Apache日志
tail -f /var/log/apache2/error.log
- 配置生效:每次修改后运行
sudo systemctl reload apache2
维护命令
操作 | 命令 |
---|---|
备份仓库 | svnadmin dump /var/www/svn/myrepo > myrepo.bak |
恢复仓库 | svnadmin load /new/repo < myrepo.bak |
查看服务状态 | systemctl status apache2 |
引用说明基于Subversion官方文档、Apache HTTP Server文档及Ubuntu 22.04 LTS最佳实践整理,安全配置参考NIST SP 800-123指南,操作前建议备份关键数据。
通过此方案搭建的SVN服务器具备企业级可靠性,支持细粒度权限控制与HTTPS加密传输,适用于中小团队代码管理,定期执行svnadmin verify
可保障仓库完整性。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4989.html