您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Linux系统的SVN服务器安装配置指南
## 1. SVN简介与应用场景
### 1.1 什么是SVN
Apache Subversion(简称SVN)是一个开源的版本控制系统,采用集中式架构管理文件版本。与Git不同,SVN通过中央仓库统一管理代码,适合需要严格权限控制的团队协作场景。
### 1.2 SVN核心特点
- **原子提交**:保证提交操作要么完整执行,要么完全不执行
- **版本化目录**:跟踪整个目录树的变更历史
- **轻量级分支**:分支操作仅存储差异而非完整副本
- **文件锁定**:防止二进制文件的合并冲突
### 1.3 典型应用场景
- 企业内部代码管理(尤其Java/.NET项目)
- 文档版本控制(合同、设计稿等)
- 中小团队协作开发
- 需要细粒度权限控制的场景
## 2. 环境准备
### 2.1 系统要求
- **操作系统**:CentOS 7+/Ubuntu 18.04+
- **内存**:至少1GB(建议2GB+)
- **磁盘空间**:根据项目规模而定(建议预留10GB+)
### 2.2 安装前检查
```bash
# 检查系统版本
cat /etc/redhat-release # CentOS
lsb_release -a # Ubuntu
# 检查SELinux状态
getenforce
# 开放3690默认端口
sudo firewall-cmd --permanent --add-port=3690/tcp
sudo firewall-cmd --reload
# 或使用iptables(旧版系统)
sudo iptables -A INPUT -p tcp --dport 3690 -j ACCEPT
service iptables save
# CentOS/RHEL
sudo yum install -y subversion
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y subversion
svnserve --version
# 应显示类似:svnserve, version 1.14.1
wget https://downloads.apache.org/subversion/subversion-1.14.2.tar.gz
tar xzf subversion-1.14.2.tar.gz
cd subversion-1.14.2
./configure --prefix=/usr/local/svn
make && make install
sudo mkdir -p /var/svn/repositories
sudo chown -R apache:apache /var/svn # 根据实际运行用户调整
sudo svnadmin create /var/svn/repositories/myrepo
myrepo/
├── conf/ # 配置文件目录
│ ├── authz # 权限控制文件
│ ├── passwd # 密码文件
│ └── svnserve.conf # 服务配置
├── db/ # 版本数据库
├── hooks/ # 钩子脚本目录
└── locks/ # 锁文件
[general]
anon-access = none # 禁止匿名访问
auth-access = write # 认证用户可写
password-db = passwd # 指定密码文件
authz-db = authz # 启用权限控制
realm = My First Repository # 仓库领域名称
编辑passwd
文件:
[users]
admin = admin123
developer1 = dev123
tester = test456
编辑authz
文件:
[groups]
admins = admin
devs = developer1
testers = tester
[myrepo:/]
@admins = rw
@devs = rw
@testers = r
* =
svnserve -d -r /var/svn/repositories
创建/etc/systemd/system/svnserve.service
:
[Unit]
Description=Subversion Daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/svnserve -d -r /var/svn/repositories
User=apache
Group=apache
Restart=on-failure
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload
sudo systemctl start svnserve
sudo systemctl enable svnserve
netstat -tulnp | grep 3690
# 应显示:tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN
修改启动参数:
svnserve -d -r /var/svn/repositories
此时可通过以下URL访问: - svn://your-ip/myrepo - svn://your-ip/otherrepo
修改svnserve.conf
:
[general]
log-file = /var/log/svnserve.log
log-level = info
# 生成SSL证书
openssl req -newkey rsa:2048 -nodes -keyout server.key \
-x509 -days 365 -out server.crt
# 修改启动命令
svnserve -d -r /var/svn --tunnel-user=svnuser \
--tunnel-host=your-domain.com --use-ssl
svn checkout svn://localhost/myrepo --username admin
使用TortoiseSVN:
1. 右键选择”SVN Checkout”
2. 输入URL:svn://your-server-ip/myrepo
3. 输入用户名密码
# 完整备份
svnadmin dump /var/svn/repositories/myrepo > myrepo.dump
# 增量备份
svnadmin dump /var/svn/repositories/myrepo -r 100:200 --incremental > myrepo_r100-200.dump
svnadmin create /var/svn/repositories/newrepo
svnadmin load /var/svn/repositories/newrepo < myrepo.dump
# 清理锁文件
svn cleanup /var/svn/repositories/myrepo
# 查看仓库状态
svnadmin verify /var/svn/repositories/myrepo
# 客户端通过SSH连接
svn checkout svn+ssh://user@server/var/svn/repositories/myrepo
# 压缩仓库
svnadmin pack /var/svn/repositories/myrepo
# 检查磁盘使用
svnadmin list-unused-dblogs /var/svn/repositories/myrepo
代码 | 说明 | 解决方案 |
---|---|---|
E175002 | 连接拒绝 | 检查服务是否运行 |
E215004 | 认证失败 | 验证passwd文件格式 |
E200009 | 权限不足 | 检查authz配置 |
# 查看错误日志
tail -f /var/log/svnserve.log
# 启用调试模式
svnserve -d -r /var/svn --foreground --log-file=/tmp/svn.debug
修改svnserve.conf
:
[tunables]
memory-cache-size = 256
# 使用压缩传输
svnserve -d -r /var/svn --compression
# 服务管理
systemctl status svnserve
# 用户管理
htpasswd -b /var/svn/repositories/myrepo/conf/passwd newuser password
# 仓库管理
svnlook info /var/svn/repositories/myrepo
”`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。