Linux搭建SVN服務器詳細教程

在 Linux 系統(tǒng)上搭建 SVN(Subversion)服務器 是一個常見的版本控制需求,適用于團隊協(xié)作和代碼管理。以下是詳細的搭建教程,包括安裝、配置和使用。
1. 前置條件
- 服務器環(huán)境:
- 一臺已安裝 Linux 系統(tǒng)的服務器(如 CentOS、Ubuntu 或 Debian 等)。
- 擁有超級用戶(
root)權限或sudo權限。
- 網(wǎng)絡要求:
- 確保服務器可以連接到互聯(lián)網(wǎng)(用于安裝軟件包)。
- 開放 SVN 使用的端口(默認端口為 3690)。
2. 安裝 SVN
2.1 在 CentOS/RHEL 上安裝
-
使用
yum安裝 Subversion:bashsudo yum install -y subversion -
檢查是否安裝成功:
bashsvnserve --version正常輸出會顯示 Subversion 的版本號。
2.2 在 Ubuntu/Debian 上安裝
-
使用
apt安裝 Subversion:bashsudo apt update sudo apt install -y subversion -
檢查是否安裝成功:
bashsvnserve --version
3. 創(chuàng)建 SVN 倉庫
-
創(chuàng)建存放 SVN 倉庫的目錄:
bashsudo mkdir -p /svn/repositories -
創(chuàng)建一個新的 SVN 倉庫:
bashsudo svnadmin create /svn/repositories/myrepomyrepo是倉庫的名稱,可以根據(jù)需要替換。
-
設置倉庫目錄的權限:
bashsudo chown -R svn:svn /svn/repositories sudo chmod -R 770 /svn/repositories
4. 配置 SVN 倉庫權限
倉庫的配置文件位于 /svn/repositories/myrepo/conf/ 目錄下:
4.1 配置用戶和密碼
編輯 passwd 文件,添加用戶和密碼:
bash
sudo nano /svn/repositories/myrepo/conf/passwd
添加類似以下內(nèi)容:
plaintext
[users]
admin = adminpassword
user1 = user1password
user2 = user2password
4.2 配置用戶訪問權限
編輯 authz 文件,設置用戶的訪問權限:
bash
sudo nano /svn/repositories/myrepo/conf/authz
添加類似以下內(nèi)容:
plaintext
[groups]
developers = admin, user1, user2
[/]
@developers = rw
* =
rw:讀寫權限。r:只讀權限。*:表示所有其他用戶。
4.3 配置 SVN 服務
編輯 svnserve.conf 文件,啟用用戶認證:
bash
sudo nano /svn/repositories/myrepo/conf/svnserve.conf
取消以下行的注釋并設置為:
plaintext
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = My First SVN Repository
anon-access:匿名用戶的權限,none表示不允許匿名訪問。auth-access:認證用戶的權限,write表示允許讀寫。password-db:指定用戶密碼文件。authz-db:指定權限控制文件。
5. 啟動 SVN 服務
5.1 啟動 SVN 服務
運行以下命令啟動 SVN 服務:
bash
sudo svnserve -d -r /svn/repositories
-d:以守護進程方式運行。-r:指定 SVN 倉庫的根目錄。
5.2 檢查 SVN 服務是否啟動
使用以下命令檢查是否啟動成功:
bash
ps -ef | grep svnserve
5.3 設置開機自啟
編輯 /etc/rc.d/rc.local 文件,添加啟動命令:
bash
sudo echo "svnserve -d -r /svn/repositories" >> /etc/rc.d/rc.local
sudo chmod +x /etc/rc.d/rc.local
6. 測試 SVN 服務
6.1 本地測試
在服務器上測試 SVN 是否正常工作:
bash
svn list svn://localhost/myrepo
輸入用戶名和密碼后,如果能看到倉庫內(nèi)容,說明服務正常。
6.2 遠程測試
在客戶端上,使用以下命令測試連接:
bash
svn list svn://<服務器IP>/myrepo
例如:
bash
svn list svn://192.168.1.100/myrepo
7. 配置防火墻
確保服務器開放 3690 端口,否則客戶端無法訪問。
7.1 在 CentOS 上開放端口
bash
sudo firewall-cmd --add-port=3690/tcp --permanent
sudo firewall-cmd --reload
7.2 在 Ubuntu/Debian 上開放端口
bash
sudo ufw allow 3690/tcp
sudo ufw reload
8. 常見問題及解決方法
8.1 問題:無法連接 SVN 倉庫
- 原因:服務未啟動或防火墻未開放端口。
- 解決方法:
- 確認服務已啟動:
bash
ps -ef | grep svnserve - 確認防火墻端口已開放。
- 確認服務已啟動:
8.2 問題:權限不足
- 原因:用戶沒有正確的權限。
- 解決方法:
- 檢查
authz文件中的權限設置。 - 確保用戶名和密碼正確。
- 檢查
8.3 問題:啟動服務時提示地址被占用
- 原因:端口沖突。
- 解決方法:
- 檢查端口占用:
bash
netstat -tulnp | grep 3690 - 殺掉沖突進程或修改 SVN 使用的端口。
- 檢查端口占用:
9. 客戶端使用 SVN
9.1 SVN 命令行客戶端
-
安裝客戶端:
- Ubuntu/Debian:
bash
sudo apt install -y subversion - CentOS:
bash
sudo yum install -y subversion
- Ubuntu/Debian:
-
檢出代碼:
bashsvn checkout svn://<服務器IP>/myrepo -
提交代碼:
bashsvn commit -m "提交說明"
10. 總結
-
安裝和配置:
- 安裝
subversion軟件包。 - 創(chuàng)建 SVN 倉庫并配置用戶和權限。
- 安裝
-
啟動和測試:
- 啟動 SVN 服務并測試連接。
- 確保防火墻端口
3690已開放。
-
客戶端使用:
- 使用 SVN 客戶端操作倉庫(如檢出代碼、提交代碼等)。
通過以上步驟,您可以在 Linux 服務器上成功搭建 SVN 服務器,并為團隊提供高效的版本控制服務。

浙公網(wǎng)安備 33010602011771號