How to Install and Configure Subversion (SVN) Server on Ubuntu

| 0 Comments| | 23:59
Categories:

首先,確保已安裝的 packages 都是最新版本

sudo apt-get update

然後,安裝 3 個 packages: subversion, subversion-tools 和 libapache2

sudo apt-get install subversion subversion-tools libapache2-svn

這些就是要讓電腦當 subversion 伺服器所需要的 packages。

建立 subversion 檔案結構

建立目錄

sudo mkdir /home/svn

建立一個測試用的檔案庫 (repository)

sudo svnadmin create /home/svn/test

加點材料到檔案庫

mkdir ~/test
cd ~/test

mkdir trunk tags branches

然後,匯入這些新建的目錄到測試用的檔案庫

sudo svn import ~/test file:///home/svn/test -m 'Initial project directories'

都沒問題的話,要開始設定 apache 的部分了

設定 apache

更改 /home/svn 目錄的擁有者

sudo chown -R www-data:www-data /home/svn

啟動 apache 的 dav_svn 模組

sudo a2enmod dav_svn

修改 dav_svn 的設定檔

sudo nano /etc/apache2/mods-avaible/dav_svn.conf

到檔案的最底下,填上這幾行

<Location "/svn">
    DAV svn
    SVNParentPath /home/svn
</Location>

重新啟動 apache

sudo service apache2 restart

開啟瀏覽器連到這台電腦看看能否進入那個測試用的檔案庫(這時應該可以看到三個目錄,雖然它們是空的)
http://127.0.0.1/svn/test

保護 svn 檔案庫 (使用 MySQL)

進入 mysql 輸入模式

mysql -u root -p

建立資料庫 (及 3 個 tables)

mysql> create database my_subversion;
mysql> use my_subversion;

建立 user table, 有 3 個欄位 (username, password, 和 email)

mysql> CREATE TABLE IF NOT EXISTS user (
username VARCHAR(60) NOT NULL PRIMARY KEY,
password VARCHAR(64) NOT NULL,
email VARCHAR(100)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

建立 svngroup table, 有 2 個欄位 (groupname 和 note)

mysql> CREATE TABLE IF NOT EXISTS svngroup (
groupname VARCHAR(20) NOT NULL PRIMARY KEY,
note VARCHAR(256)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

建立 user_svngroup table, 有 2 個欄位 (username 和 groupname)

mysql> CREATE TABLE IF NOT EXISTS user_svngroup (
username VARCHAR(60) NOT NULL,
groupname VARCHAR(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

新增一個資料

新增一個 svn user

mysql> INSERT INTO user (username,password,email) VALUES ('username',md5('password'),'email@mail.com');

新增一個 svn group

mysql> INSERT INTO svngroup (groupname,note) VALUES ('groupname','this is a brief note of the group');

把 user 放進 group 裡

mysql> INSERT INTO user_svngroup (username,groupname) VALUES ('username','groupname');

ref:
Install & Configure SVN Server on Ubuntu 20.04 with Apache2
Settings up SVN server with MySQL authentication

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *