MENU

溶けかけてるうさぎ HP BLOG TOP RECENT ARTICLES POPULAR ARTICLES ABOUT THIS BLOG

CATEGORY

大学 (85) 航空宇宙 (55) 写真 (25) 旅行 (14) 飯・酒 (11) コンピュータ (88) その他 (13)

TAG

ARCHIVE

2018 (92) 2017 (80) 2016 (0)

RECENT

【駅メモ】4年目に突入して,ようやく3000駅突破 【WebRTC】Raspberry Pi搭載ロボットをWebRTCで遠隔操作しようとして失敗した 【航空宇宙】航空宇宙アドベントカレンダー 始まります! 【Perl】YAPC::Tokyo 2019 のチケットを確保しました! 【カメラ】Canonから富士フイルムに乗り換えました

【Ubuntu】Subversion Serverの構築と旧サーバーからのデータ移行

2018-02-06

Ubuntu ServerにSubversion Serverを建てる.

 

新規にリポジトリは作らず,データは旧サーバーから移行する.

今回特殊なのは,ディレクトリごとにアクセス制限を変えるために,mod_authz_svnを用いることである.

0.はじめに

え? なんでいまさらGitじゃなくてSubversion??

 

まあ,個人的な意見ですが,SubversionはGitに負けたのではなく,GitHubという“サービス”に打ち負かされたんですよ.

 

そんなことはどうでもよくって,Subversionの方が中央集権的なので,こういう研究室での開発には向いてるかなぁ,とか思ったり.

1.環境

Ubuntu Server 16.04.3 LTS

 

Ubuntu Serverは「」で構築したものである.

2.Apacheのインストール

Apache2をインストールする.

$ sudo apt install apache2

3.Subversionのインストール

Subversionをインストールする.

$ sudo apt install subversion subversion-tools libapache2-svn

4.Subversionの設定1

Subversion用のディレクトリ作成

$ sudo mkdir /var/svn/

5.HTTPでアクセスできるようにする設定

Digest認証の設定

ディレクトリごとにアクセスを制御するために以下のモジュールを編集.

$ sudo nano /etc/apache2/mods-available/dav_svn.load

これでdav_svn.loadに以下の一行を追加する.

LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so # <-この行を追加

さらに,

$ sudo nano /etc/apache2/mods-enabled/dav_svn.conf

dav_svn.confに以下を追加.

<Location /svn>
    DAV svn
    SVNParentPath /var/svn
    SVNListParentPath On
    AuthType Digest
    AuthName "HOGE Subversion Repository"
    AuthUserFile /etc/apache2/dav_svn.htdigest
    AuthzSVNAccessFile /etc/apache2/dav_svn.authz
    Require valid-user
</Location>

Digest認証のユーザー登録

以下でDigest認証のユーザー登録を行う.

-cオプションは新規ファイル作成オプションなので,古いユーザーが消え去るので注意.

$ sudo htdigest -c /etc/apache2/dav_svn.htdigest "HOGE Subversion Repository" ${user}
Adding password for ${user} in realm HOGE Subversion Repository.
New password:
Re-type new password:

モジュールを有効にして,Apacheを再起動.

$ sudo a2enmod auth_digest
Considering dependency authn_core for auth_digest:
Module authn_core already enabled
Enabling module auth_digest.
To activate the new configuration, you need to run:
  service apache2 restart

$ sudo a2enmod dav dav_svn
Module dav already enabled
Considering dependency dav for dav_svn:
Module dav already enabled
Module dav_svn already enabled

$ sudo /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.

Digest認証の確認

http://${host}/svn/ にアクセスし,Digest認証画面が出てくればOK.

ポートシフトの設定

$ cd /etc/apache2/sites-available/
$ sudo cp 000-default.conf 000-default.conf.backup
$ sudo nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>

<VirtualHost *:${port}>

と変更したいポートに編集.

$ sudo nano /etc/apache2/ports.conf

Listen 80

Listen ${port}

と変更したいポートに編集.

 

最後にApacheを再起動.

$ sudo /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.

ポートシフトの確認

http://${host}:${port}/svn/ にアクセスし,Digest認証画面が出てくればOK.

6.旧サーバーからのデータ移行

旧サーバーでのデータ吸い出し

以下のようにダンプファイルを作成する.

このとき,リビジョン毎にダンプするため,ファイルサイズは大きくなることに注意.

$ sudo svnadmin dump /var/svn/${repository}/ > ./svn_data.dump
* リビジョン 1 をダンプしました。
* リビジョン 2 をダンプしました。
* リビジョン 3 をダンプしました。
* リビジョン 4 をダンプしました。
...

今回は3.9 GB程度だったので,USBメモリでコピーした.

新サーバーにUSBメモリをマウントし,データをコピー

USBメモリを挿す.

$ sudo ls -lha /dev/sd*
brw-rw---- 1 root disk 8,  0  2月  6 17:55 /dev/sda
brw-rw---- 1 root disk 8,  1  2月  6 17:55 /dev/sda1
brw-rw---- 1 root disk 8, 16  2月  6 17:55 /dev/sdb
brw-rw---- 1 root disk 8, 17  2月  6 17:55 /dev/sdb1
brw-rw---- 1 root disk 8, 32  2月  6 20:20 /dev/sdc
brw-rw---- 1 root disk 8, 33  2月  6 20:20 /dev/sdc1

sdcと認識されている.

 

マウント.

$ sudo mount /dev/sdc1 /mnt/

コピー.

$ sudo cp /mnt/svn_data.dump ~/

アンマウント.

$ sudo umount /mnt/

新サーバーにデータを展開

$ sudo svnadmin load /var/svn/${repository}/ < ~/svn_data.dump
svnadmin: E000002: Can't open file '/var/svn/${repository}/format': No such file or directory

あれ? あー,リポジトリ作っておかなきゃだめだったのか....

 

リポジトリを作成.

$ sudo svnadmin create /var/svn/${repository}

こんどこそ.

$ sudo svnadmin load /var/svn/${repository}/ < ~/svn_data.dump
... 略 ...

リポジトリを1つずつコミットし始める.

しばらく待機.

7.Subversionの設定2

HTTP経由で書き込み可能にする

リポジトリ内のファイルオーナーをrootからApacheユーザーであるwww-dataに変更.

& sudo chown -R www-data:www-data /var/svn/${repository}

mod_authz_svnに関連する認証ファイルの編集

$ cd /etc/apache2/
$ sudo touch dav_svn.authz
$ ls -lah
total 92K
drwxr-xr-x  8 root root 4.0K  2月  6 21:46 .
drwxr-xr-x 95 root root 4.0K  2月  6 18:56 ..
-rw-r--r--  1 root root 7.0K  3月 19  2016 apache2.conf
drwxr-xr-x  2 root root 4.0K  2月  6 18:46 conf-available
drwxr-xr-x  2 root root 4.0K  2月  6 18:46 conf-enabled
-rw-r--r--  1 root root    0  2月  6 21:46 dav_svn.authz
-rw-r--r--  1 root root   69  2月  6 19:33 dav_svn.htdigest
-rw-r--r--  1 root root 1.8K  3月 19  2016 envvars
-rw-r--r--  1 root root  31K  3月 19  2016 magic
drwxr-xr-x  2 root root  12K  2月  6 21:36 mods-available
drwxr-xr-x  2 root root 4.0K  2月  6 19:36 mods-enabled
-rw-r--r--  1 root root  323  2月  6 19:50 ports.conf
drwxr-xr-x  2 root root 4.0K  2月  6 19:47 sites-available
drwxr-xr-x  2 root root 4.0K  2月  6 18:46 sites-enabled

と適当に認証ファイルdav_svn.authzを作る.

$ sudo nano dav_svn.authz

dav_svn.authzを次のように編集する.

$ cat dav_svn.authz
[groups]
manager = ${user}

[${repository}:/]
@manager = rw

dav_svn.authzの書き方は,まあ,雰囲気で.

,とか見ながらノリで書ける.

8.他のリポジトリも移行

同様に他のリポジトリも移行した.

dav_svn.authzもその都度編集した.

9.Windowsからのアクセスの確認

TortoiseSVNでチェックアウト,コミットを確認する.

詳細は「」を参照.

10.関連記事

11.参考サイト

Subversion. Apache Subversion Documentation. Retrieved February 6, 2018, from https://subversion.apache.org/docs/
WisdomTrees. Linux-UbuntuでのSubversionのインストールと使い方. Retrieved February 6, 2018, from http://wisdomtrees.net/?p=271
Qiita. Ubuntu で Subversion. Retrieved February 6, 2018, from https://qiita.com/kojionilk/items/be012591c13931457ce3
tutorialspoint. How to Install Subversion Server on Ubuntu 16.04. Retrieved February 6, 2018, from https://www.tutorialspoint.com/articles/how-to-install-subversion-server-on-ubuntu-16-04
こぐれようじの日記. [Subversion] Apache WebDAV + svnでリポジトリ内のアクセスを制限する方法. Retrieved February 6, 2018, from http://d.hatena.ne.jp/ykog/20070108/p1?_ts=1358298995
プログラム日記. 「Subversion」ユーザごとにリポジトリに対する権限を設定する方法. Retrieved February 6, 2018, from http://a4dosanddos.hatenablog.com/entry/2013/07/12/003058
ごった煮 - tips about programming and building a server. [SVN]ディレクトリアクセス制限の設定. Retrieved February 6, 2018, from http://park1.wakwak.com/~ima/centos4_subversion0002.html
○×つくろーどっとコム. Subversion リポジトリごとにアクセス許可を設定する. Retrieved February 6, 2018, from http://marupeke296.com/IKDADV_SVN_Permission.html

コメントを投稿

名前

Email (※公開されることはありません)

コメント