在 CentOS 7 上部署 Subversion (SVN) 版本控制服務器,涵蓋倉庫創建、服務配置、用戶權限管理、自啟動設置及 HTTP 訪問集成。
yum install -y subversion
mkdir -p /mnt/svn-repos
svnadmin create /mnt/svn-repos/project1
# 創建系統服務配置
cat > /etc/sysconfig/svnserve <<'EOF'
OPTIONS="-r /mnt/svn-repos --log-file /var/log/svnserve.log"
EOF
# 啟用並啟動服務
systemctl enable svnserve
systemctl start svnserve
# 驗證
systemctl status svnserve
ss -ntlp | grep 3690
編輯倉庫配置目錄 /mnt/svn-repos/project1/conf/ 下三個核心文件:
[general]
anon-access = none # 禁止匿名訪問
auth-access = write # 認證用戶可寫
password-db = passwd # 用戶文件
authz-db = authz # 權限文件
realm = /mnt/svn-repos/project1
[users]
dev1 = password123
dev2 = password456
admin = admin789
[groups]
developers = dev1, dev2
admins = admin
[/]
@admins = rw
* =
[project1:/trunk]
@developers = rw
@admins = rw
[project1:/branches]
@developers = rw
@admins = rw
[project1:/tags]
@developers = r
@admins = rw
# 防火牆開放 3690 端口
firewall-cmd --permanent --add-port=3690/tcp
firewall-cmd --reload
# SELinux 設置正確上下文
chcon -R -t var_t /mnt/svn-repos
setsebool -P httpd_unified 1 # 若配合 Apache
# 檢出項目
svn checkout svn://server_ip/project1/trunk project1_trunk --username dev1
# 提交測試
cd project1_trunk
echo "test" > test.txt
svn add test.txt
svn commit -m "Initial commit"
安裝 mod_dav_svn,配置 /etc/httpd/conf.d/subversion.conf 實現 HTTPS 訪問、瀏覽器查看版本歷史等功能。
# 熱備份腳本(每日定時任務)
#!/bin/bash
DATE=$(date +%F)
svnadmin hotcopy /mnt/svn-repos/project1 /backup/svn/project1_$DATE
find /backup/svn -mtime +30 -delete
SVN 服務器核心在於 svnserve.conf、passwd、authz 三個文件的協同配置。採用「組+路徑」權限模型便於團隊管理,配合熱備份與監控,可構建穩定可靠的版本控制基礎設施。