事象発生日:2018-02-06
記事公開日:2018-02-06
アクセス数:23407
Ubuntu ServerにSubversion Serverを建てる.
新規にリポジトリは作らず,データは旧サーバーから移行する.
今回特殊なのは,ディレクトリごとにアクセス制限を変えるために,mod_authz_svnを用いることである.
え? なんでいまさらGitじゃなくてSubversion??
まあ,個人的な意見ですが,SubversionはGitに負けたのではなく,GitHubという“サービス”に打ち負かされたんですよ.
そんなことはどうでもよくって,Subversionの方が中央集権的なので,こういう研究室での開発には向いてるかなぁ,とか思ったり.
Ubuntu Server 16.04.3 LTS
Apache2をインストールする.
$ sudo apt install apache2
Subversionをインストールする.
$ sudo apt install subversion subversion-tools libapache2-svn
$ sudo mkdir /var/svn/
ディレクトリごとにアクセスを制御するために以下のモジュールを編集.
$ 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認証のユーザー登録を行う.
-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.
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.
以下のようにダンプファイルを作成する.
このとき,リビジョン毎にダンプするため,ファイルサイズは大きくなることに注意.
$ sudo svnadmin dump /var/svn/${repository}/ > ./svn_data.dump * リビジョン 1 をダンプしました。 * リビジョン 2 をダンプしました。 * リビジョン 3 をダンプしました。 * リビジョン 4 をダンプしました。 ...
今回は3.9 GB程度だったので,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つずつコミットし始める.
しばらく待機.
リポジトリ内のファイルオーナーをroot
からApacheユーザーであるwww-data
に変更.
& sudo chown -R www-data:www-data /var/svn/${repository}
$ 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
の書き方は,まあ,雰囲気で.
同様に他のリポジトリも移行した.
dav_svn.authz
もその都度編集した.
TortoiseSVNでチェックアウト,コミットを確認する.
名前
Email (※公開されることはありません)
コメント