# Linux系統怎么安裝SVN服務器
## 一、SVN簡介與安裝準備
Subversion(簡稱SVN)是一個開源的版本控制系統,廣泛應用于軟件開發中的代碼版本管理。與Git不同,SVN采用集中式版本控制模式,適合需要嚴格權限控制的企業環境。
### 1.1 系統環境要求
- **操作系統**:主流Linux發行版(Ubuntu/CentOS/Debian等)
- **內存**:至少512MB(建議1GB以上)
- **磁盤空間**:根據項目大小決定(建議預留10GB以上)
- **網絡**:需要開放3690端口(SVN默認端口)
### 1.2 安裝前檢查
```bash
# 檢查系統版本
lsb_release -a
cat /etc/redhat-release # CentOS/RHEL
# 檢查是否已安裝舊版本
svn --version
# 更新軟件包索引
sudo apt update
# 安裝SVN核心組件
sudo apt install subversion -y
# 安裝Apache模塊(可選)
sudo apt install libapache2-mod-svn -y
# 安裝EPEL倉庫(CentOS 7)
sudo yum install epel-release -y
# 安裝SVN服務
sudo yum install subversion -y
# 安裝Apache模塊
sudo yum install mod_dav_svn -y
svnserve --version
# 應顯示類似:svnserve, version 1.14.1
sudo mkdir -p /var/svn/repositories
sudo chown -R www-data:www-data /var/svn # Ubuntu
sudo chown -R apache:apache /var/svn # CentOS
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 SVN Repository # 倉庫領域名稱
[users]
admin = admin@123
developer1 = dev123456
tester1 = test654321
[groups]
admin = admin
dev_team = developer1,developer2
test_team = tester1
[myrepo:/]
@admin = rw
* =
[myrepo:/trunk]
@dev_team = rw
@test_team = r
[myrepo:/branches]
@dev_team = rw
svnserve -d -r /var/svn/repositories --listen-port 3690
# 創建服務文件
sudo tee /etc/systemd/system/svnserve.service <<EOF
[Unit]
Description=Subversion Daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/svnserve -d -r /var/svn/repositories
User=svnuser
Group=svnuser
[Install]
WantedBy=multi-user.target
EOF
# 啟動服務
sudo systemctl daemon-reload
sudo systemctl start svnserve
sudo systemctl enable svnserve
# Ubuntu
sudo ufw allow 3690/tcp
# CentOS
sudo firewall-cmd --permanent --add-port=3690/tcp
sudo firewall-cmd --reload
# Ubuntu
sudo a2enmod dav_svn
sudo systemctl restart apache2
# CentOS
sudo systemctl restart httpd
<Location /svn/myrepo>
DAV svn
SVNPath /var/svn/repositories/myrepo
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /etc/apache2/svn-auth-file
Require valid-user
</Location>
sudo htpasswd -cm /etc/apache2/svn-auth-file admin
sudo htpasswd -m /etc/apache2/svn-auth-file developer1
svn checkout svn://your-server-ip/myrepo --username admin
svn://your-server-ip/myrepo
# 查看服務狀態
sudo systemctl status svnserve
# 備份倉庫
svnadmin dump /var/svn/repositories/myrepo > myrepo_backup.svn
# 恢復倉庫
svnadmin load /var/svn/repositories/newrepo < myrepo_backup.svn
sudo tail -f /var/log/svnserve.log
# 修改svnserve.conf
[general]
memory-cache-size = 16
連接被拒絕:檢查防火墻和SELinux設置
sudo setsebool -P httpd_unified 1 # CentOS SELinux
認證失敗:檢查passwd文件權限
sudo chmod 600 /var/svn/repositories/myrepo/conf/passwd
權限不足:確認authz文件配置正確
svn checkout svn+ssh://user@server/path/to/repo
通過本文的詳細步驟,您應該已經成功在Linux系統上搭建了SVN服務器。SVN作為經典的版本控制系統,在企業環境中仍然有廣泛的應用場景。建議結合自動化腳本和監控工具,構建更完善的版本控制體系。
注意:生產環境建議使用HTTPS協議替代明文協議,可通過配置Apache/Nginx實現SSL加密傳輸。 “`
這篇文章共計約2000字,包含了從安裝到配置、維護的完整流程,采用Markdown格式編寫,可直接用于技術文檔發布。需要調整細節可根據實際環境修改路徑和參數。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。