1. 安裝部署
sudo apt-get install subversion subversion-tools # 安裝軟件
sudo mkdir -p /home/svn # 創建工作目錄
sudo mkdir -p /home/svn/workspace # 創建版本庫
sudo svnadmin create /home/svn/workspace # 初始化版本庫
sudo svnserve -d -r /home/svn # 啓動服務
killall svnserve # 停止服務
默認情況下,SVN 使用原生協議連接版本庫,訪問地址爲 svn://ip:port/repo。
- 工作目錄:SVN 服務管理的基本單元,一個工作目錄下可以創建多個版本庫;
- 版本庫:SVN 版本管理的基本單元,通常對應一個項目。
2. 基礎配置
版本庫初始化時,自動在 ./conf
目錄下生成配置文件,主要有:svnserve.conf、zuthz 和 passwd。
svnserve.conf
用於存儲版本庫配置信息,需要修改的部分如下:
[general]
anon-access = none # 禁止匿名訪問
auth-access = write # 授權訪問權限
password-db = /home/svn/passwd # 用戶配置文件存放位置
authz-db = /home/svn/authz # 權限配置文件存放位置
passwd
用於存儲用戶名及口令信息,配置格式爲 用戶名 = 密碼
,例如:
moonspirit = moonspirit
guest = 123456
authz
用於存儲用戶組及權限信息,分爲 [groups]
和 [repo_name:/]
兩個配置段:
[groups]
配置用戶組信息,格式爲組名 = 用戶A,用戶B
;[repo_name:/]
配置目錄訪問權限,格式爲@組名 = r/w/rw
,例如:
[groups]
g_manager = moonspirit
g_guest = guest
[workspace:/]
@g_manager = rw
@g_guest = r
* =
passwd
和authz
既可以在各版本庫下單獨配置,也可以在工作目錄下統一配置,它們的位置在svnserve.conf
中指定。
3. 支持 http 訪問
通過 Apache 與 SVN 集成,支持通過 http 訪問版本庫,這樣做的好處有:
- 可以直接通過瀏覽器訪問版本庫,而不必藉助 Tortoise 等工具;
- 基於密文的訪問控制,而不是簡單的明文密碼。
3.1 前期準備
sudo apt-get install apache2-utils libapache2-mod-svn # 安裝 SVN 模塊
sudo chown -R www-data:www-data /home/svn/ # 授權 Apache 訪問工作目錄
3.2 配置虛擬主機
修改 /etc/apache2/mods-available/dav_svn.conf
,配置 apache-svn 模塊:
<Location /svn>
DAV svn
SVNParentPath /opt/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user
</Location>
修改 /etc/apache2/apache2.conf
,賦予 /home/svn
工作目錄訪問權限:
<Directory /home/svn>
AllowOverride None
Require all granted
</Directory>
3.3 配置用戶
sudo htpasswd -bc /etc/apache2/dav_svn.passwd username password # 創建密碼文件並新增用戶(覆蓋原文件)
sudo htpasswd -b /etc/apache2/dav_svn.passwd username password # 添加用戶
4. 開機自啓動
在 /etc/systemd/system/
目錄下創建服務單元文件,內容如下:
[Unit]
Description=Subversion Server
[Service]
Type=forking
ExecStart=/usr/bin/svnserve --daemon --root /software/svn
ExecStop=/usr/bin/killall svnserve
Restart=always
[Install]
WantedBy=default.target
systemctl
基本用法:
sudo systemctl daemon-reload # 加載新的服務單元
sudo systemctl status svn # 查看運行狀態
sudo systemctl start svn # 啓動服務
sudo systemctl stop svn # 停止服務
sudo systemctl restart svn # 重啓服務
sudo systemctl reload svn # 重新加載配置文件