RHEL 環境下 Subversion 伺服器部署與配置

风轻雪棉發表於2024-10-18

RHEL 環境下 Subversion 伺服器部署與配置

1. 更新系統

首先確保系統軟體包是最新的:

sudo yum update -y

2. 安裝Apache和Subversion

2.1 安裝Apache HTTP伺服器和Subversion

使用以下命令安裝 Apache、Subversion 及其與 Apache 整合的模組:

sudo yum install -y httpd subversion mod_dav_svn

2.2 啟動並設定Apache自啟動

sudo systemctl start httpd
sudo systemctl enable httpd

3. 建立SVN倉庫

3.1 建立倉庫的父目錄

sudo mkdir -p /var/svn

3.2 建立倉庫

sudo svnadmin create /var/svn/myrepo

3.3 設定檔案許可權

sudo chown -R apache:apache /var/svn/myrepo
sudo chmod -R 755 /var/svn/myrepo

4. 配置Apache來支援SVN

4.1 編輯Apache配置檔案

/etc/httpd/conf.d/ 目錄下建立或編輯 subversion.conf 檔案:

sudo vi /etc/httpd/conf.d/subversion.conf

新增以下內容:

# 載入Subversion模組
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/svn-auth-users
Require valid-user
</Location>

4.2 建立使用者認證檔案

sudo htpasswd -cm /etc/svn-auth-users user1

4.3 配置防火牆

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

4.4 重啟Apache服務

sudo systemctl restart httpd

5. 測試SVN伺服器

5.1 透過Web瀏覽器測試

訪問 http://<your-server-ip>/svn/myrepo

5.2 使用SVN客戶端測試

svn checkout http://<your-server-ip>/svn/myrepo

6. 配置SVN訪問控制

編輯倉庫的 authz 檔案:

sudo vi /var/svn/myrepo/conf/authz

示例內容:

[groups]
developers = user1, user2

[/]
* = r
@developers = rw

7. 日誌和故障排查

7.1 檢查Apache日誌

sudo tail -f /var/log/httpd/error_log

7.2 檢查SVN倉庫日誌

sudo tail -f /var/svn/myrepo/logs/repository.log

8. 高階配置(可選)

8.1 配置SSL(啟用HTTPS)

subversion.conf 中更改以下內容:

<Location /svn>
DAV svn
SVNParentPath /var/svn
SSLRequireSSL
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/svn-auth-users
Require valid-user
</Location>

8.2 使用鉤子(Hooks)

SVN支援鉤子指令碼,可以在倉庫的 hooks 資料夾中找到相關模板。

8.3 備份和恢復SVN倉庫

備份:

svnadmin dump /var/svn/myrepo > /backup/myrepo-backup.dump

恢復:

svnadmin load /var/svn/myrepo < /backup/myrepo-backup.dump

相關文章