一、準備工作
- CentOS 7 服務器:確保你有 root 或 sudo 權限,可以訪問該服務器。
- Windows 客戶端:你將需要在 Windows 上安裝 TortoiseSVN 客戶端來與 SVN 服務器交互。
- 防火墻:確保你的防火墻已開放 3690 端口,用于 SVN 通信。
二、在 CentOS 7 上安裝 SVN
- 更新系統軟件包:
在 CentOS 上首先確保系統軟件包是最新的:
sudo yum update -y
- 安裝 Subversion(SVN):
安裝 SVN 服務器所需的包:
sudo yum install subversion -y
- 確認安裝成功:
運行以下命令,驗證 SVN 是否安裝成功:
svn --version
輸出類似如下,表示安裝成功:
svn, version 1.7.14 (r1542130)
三、創建 SVN 倉庫
- 創建一個 SVN 倉庫目錄:
sudo mkdir -p /svn/repos
- 創建倉庫:
創建名為project
的 SVN 倉庫:
sudo svnadmin create /svn/repos/project
- 配置倉庫權限:
SVN 使用svnserve.conf
和passwd
文件進行權限管理。我們將配置這些文件來實現用戶認證和權限控制。 - 編輯 SVN 配置文件:
編輯svnserve.conf
配置文件,允許基于用戶名和密碼的訪問:
sudo nano /svn/repos/project/conf/svnserve.conf
在文件中,找到以下配置并修改:
[general]
anon-access = none # 禁止匿名訪問
auth-access = write # 允許授權用戶寫入
password-db = passwd # 使用密碼文件進行認證
- 配置用戶認證:
編輯passwd
文件,添加用戶和密碼:
sudo nano /svn/repos/project/conf/passwd
在文件中添加用戶信息,例如:
[users]
user1 = password1
user2 = password2
admin = adminpassword
其中:
- `user1` 和 `user2` 是普通用戶,`admin` 是管理員。
- `password1` 和 `password2` 是相應的用戶密碼。
四、啟動 SVN 服務
- 啟動 SVN 服務器:
使用svnserve
啟動 SVN 服務,指定根目錄為/svn/repos
:
sudo svnserve -d -r /svn/repos
- `-d` 表示后臺運行。
- `-r` 設置倉庫根目錄。
- 設置 SVN 服務開機自啟:
讓 SVN 服務在服務器重啟后自動啟動:
sudo systemctl enable svnserve
sudo systemctl start svnserve
- 開放防火墻端口:
如果防火墻啟用,你需要開放 3690 端口:
sudo firewall-cmd --permanent --zone=public --add-port=3690/tcp
sudo firewall-cmd --reload
五、配置 SVN 權限管理
- 配置授權文件:
authz
文件用于更精細的權限控制,定義不同用戶對不同目錄的訪問權限。編輯authz
文件:
sudo nano /svn/repos/project/conf/authz
示例配置:
[groups]
developers = user1, user2
admins = admin[/]
* = r # 所有用戶只能讀取[project:/]
@developers = rw # developers 組有讀寫權限
@admins = rw # admins 組有讀寫權限
這個配置的含義是:
- **所有用戶**對根目錄的訪問權限為只讀(`* = r`)。
- `developers` 組成員對 `project` 倉庫的根目錄(`/`)有讀寫權限。
- `admins` 組成員對 `project` 倉庫的所有目錄都有讀寫權限。
- 為用戶添加權限:
如果需要對不同用戶設置不同目錄的權限,可以修改authz
文件。例如:
[project:/docs]
@developers = rw # developers 組有權限修改 docs 目錄
@admins = rw # admins 組有權限修改 docs 目錄[project:/src]
@admins = rw # 只有 admins 組有權限修改 src 目錄
六、在 Windows 客戶端安裝 TortoiseSVN
- 下載并安裝 TortoiseSVN:
- 訪問 TortoiseSVN 官網,下載并安裝適合 Windows 版本的 TortoiseSVN 客戶端。
- 連接到 SVN 服務器:
安裝完成后,右鍵點擊任意文件夾,選擇 SVN Checkout…,在彈出的對話框中輸入 SVN 服務器的地址,格式如下:
svn://<服務器IP地址>/project
例如,如果 CentOS 服務器 IP 是 192.168.236.140
,則地址是:
svn://192.168.236.140/project
然后點擊 OK,輸入在 passwd
文件中配置的用戶名和密碼。
- 上傳和下載文件:
-
下載:通過右鍵點擊文件夾,選擇 SVN Checkout,將倉庫內容檢出到本地。
-
上傳:將文件放入本地檢出的目錄中,右鍵選擇
-
SVN Commit,提交文件到 SVN 倉庫。

-
如下,上傳成功:
七、進一步優化和管理
- 設置 SVN 為系統服務:
如果需要,創建一個 Systemd 服務,確保服務器重啟后 SVN 服務可以自動啟動。創建svnserve.service
文件:
sudo nano /etc/systemd/system/svnserve.service
配置文件內容:
[Unit]
Description=Subversion service
After=network.target[Service]
ExecStart=/usr/bin/svnserve -d -r /svn/repos
User=svn
Group=svn[Install]
WantedBy=multi-user.target
然后執行:
sudo systemctl daemon-reload
sudo systemctl enable svnserve
sudo systemctl start svnserve
- 管理和監控 SVN 倉庫:
- 查看日志:使用
svn log
查看倉庫的提交歷史。 - 備份倉庫:定期備份倉庫,使用
svnadmin dump
命令備份倉庫:
- 查看日志:使用
svnadmin dump /svn/repos/project > /path/to/backup/project.dump
八、總結
通過上述步驟,你已經在 CentOS 7 上成功安裝并配置了 SVN 服務器,并能夠進行權限管理。用戶可以使用 TortoiseSVN 從 Windows 客戶端上傳和下載文件。
SVN 的權限管理通過 passwd
文件控制用戶的訪問,通過 authz
文件來細化目錄級別的權限配置。這樣可以確保不同的用戶有不同的權限訪問不同的倉庫內容。