Ubuntu18.04 環境搭建——SVN

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  
* =

passwdauthz 既可以在各版本庫下單獨配置,也可以在工作目錄下統一配置,它們的位置在 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     # 重新加載配置文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章