プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Amazon Elastic Block Store (EBS)上に、Subversionのリポジトリを置く

 週末プログラマに朗報 Amazon Elastic Block Store(EBS)で書きましたが、EBSは私のように週末プログラマにはかなり嬉しい存在です。基本、開発環境等はローカルの端末に入れているのですが、色々な端末を使うのでソースの管理はやはりSubversion等のソース管理サーバに置きたいです。また、自宅や外出先その他色々な所から使うのでHTTP経由で使いたいところなのですが、その為の公開サーバをどうしようかなというのが悩みの種でした。
 自宅サーバ設定して使っていたという時期もあったのですが、はっきり言って年中サーバが起動するのはうるさいです。レンタルサーバという手もあるのですが、SVNの為だけもなぁというのが正直な感想でした。AmazonのEC2で必要な時だけ起動するというのが有力解かなと思っていたのですが、バックアップされる対象の領域は非常に小さいです。となると、S3にバックアップ&リストアする仕組みを作るのが正解なんでしょうが、ちょっと面倒くさいと思っていました。
 そこにEBSが出て来たので、これだと思いました。MySQLやSubversionのデータ領域は全てEBSにおいて、EC2はエンジン部分などの実体を置くようにします。で、必要な時だけEC2を立ち上げてEBSをマウント。コマンドを登録しておけば、手間はほとんど掛かりません。


 ということで、Subversionの設定です。EBSの設定さえしてあれば、通常のインストールとなんら変わりありません。その辺りは、Amazon Elastic Block Store (EBS)を使ってみたをご参照ください。


以下、インストールのログです。


Subversionのインストール。

# yum list subversion
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * fedora: mirror.cogentco.com
 * updates: mirror.cogentco.com
Available Packages
subversion.i386                          1.4.4-7                fedora          
[root@domU-12-31-39-00-85-B7 mount_vol]# yum list svn       
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * fedora: mirror.cogentco.com
 * updates: mirror.cogentco.com
Error: No matching Packages to list
[root@domU-12-31-39-00-85-B7 mount_vol]# yum install subversion.i386
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * fedora: mirror.cogentco.com
 * updates: mirror.cogentco.com
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package subversion.i386 0:1.4.4-7 set to be updated
--> Processing Dependency: libapr-1.so.0 for package: subversion
--> Processing Dependency: libaprutil-1.so.0 for package: subversion
--> Processing Dependency: perl(URI) >= 1.17 for package: subversion
--> Processing Dependency: libneon.so.27 for package: subversion
--> Running transaction check
---> Package neon.i386 0:0.27.2-2 set to be updated
---> Package apr-util.i386 0:1.2.10-2.fc8 set to be updated
---> Package apr.i386 0:1.2.11-2 set to be updated
---> Package perl-URI.noarch 0:1.35-3.1 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size 
=============================================================================
Installing:
 subversion              i386       1.4.4-7          fedora            2.3 M
Installing for dependencies:
 apr                     i386       1.2.11-2         fedora            126 k
 apr-util                i386       1.2.10-2.fc8     fedora             74 k
 neon                    i386       0.27.2-2         fedora            109 k
 perl-URI                noarch     1.35-3.1         fedora            116 k

Transaction Summary
=============================================================================
Install      5 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 2.7 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): perl-URI-1.35-3.1. 100% |=========================| 116 kB    00:00     
(2/5): apr-1.2.11-2.i386. 100% |=========================| 126 kB    00:00     
(3/5): apr-util-1.2.10-2. 100% |=========================|  74 kB    00:00     
(4/5): subversion-1.4.4-7 100% |=========================| 2.3 MB    00:00     
(5/5): neon-0.27.2-2.i386 100% |=========================| 109 kB    00:00     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: apr                          ######################### [1/5] 
  Installing: apr-util                     ######################### [2/5] 
  Installing: neon                         ######################### [3/5] 
  Installing: perl-URI                     ######################### [4/5] 
  Installing: subversion                   ######################### [5/5] 

Installed: subversion.i386 0:1.4.4-7
Dependency Installed: apr.i386 0:1.2.11-2 apr-util.i386 0:1.2.10-2.fc8 neon.i386 0:0.27.2-2 perl-URI.noarch 0:1.35-3.1
Complete!
[root@domU-12-31-39-00-85-B7 mount_vol]# svn --version
svn, version 1.4.4 (r25188)
   compiled Sep  2 2007, 14:30:15

Copyright (C) 2000-2006 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme

Subversionと連携するために、Apacheもインストール。

# yum list httpd 
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * fedora: mirror.cogentco.com
 * updates: mirror.cogentco.com
Available Packages
httpd.i386                               2.2.9-1.fc8            updates         
[root@domU-12-31-39-00-85-B7 mount_vol]# yum install httpd.i386
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * fedora: mirror.cogentco.com
 * updates: mirror.cogentco.com
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package httpd.i386 0:2.2.9-1.fc8 set to be updated
--> Processing Dependency: httpd-tools = 2.2.9-1.fc8 for package: httpd
--> Running transaction check
---> Package httpd-tools.i386 0:2.2.9-1.fc8 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size 
=============================================================================
Installing:
 httpd                   i386       2.2.9-1.fc8      updates           969 k
Installing for dependencies:
 httpd-tools             i386       2.2.9-1.fc8      updates            68 k

Transaction Summary
=============================================================================
Install      2 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 1.0 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): httpd-tools-2.2.9- 100% |=========================|  68 kB    00:00     
(2/2): httpd-2.2.9-1.fc8. 100% |=========================| 969 kB    00:00     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: httpd-tools                  ######################### [1/2] 
  Installing: httpd                        ######################### [2/2] 

Installed: httpd.i386 0:2.2.9-1.fc8
Dependency Installed: httpd-tools.i386 0:2.2.9-1.fc8
Complete!
# /etc/init.d/httpd start
Starting httpd:                                            [  OK  ]
# /etc/init.d/httpd stop 
Stopping httpd:                                            [  OK  ]


さらにapacheとsubversionの連携用に、mod_dav_svnもインストール

# yum install mod_dav_svn
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * fedora: mirror.cogentco.com
 * updates: mirror.cogentco.com
fedora                    100% |=========================| 2.1 kB    00:00     
updates                   100% |=========================| 2.3 kB    00:00     
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package mod_dav_svn.i386 0:1.4.4-7 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size 
=============================================================================
Installing:
 mod_dav_svn             i386       1.4.4-7          fedora             71 k

Transaction Summary
=============================================================================
Install      1 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 71 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): mod_dav_svn-1.4.4- 100% |=========================|  71 kB    00:00     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: mod_dav_svn                  ######################### [1/1] 

Installed: mod_dav_svn.i386 0:1.4.4-7
Complete!

リポジトリの作成と、サンプルプロジェクト(keywords)のインポート

# svnadmin create /vol/svn --fs-type fsfs
# ll /vol/svn/
total 28
-rw-r--r-- 1 root root  229 Sep  7 02:04 README.txt
drwxr-xr-x 2 root root 4096 Sep  7 02:04 conf
drwxr-xr-x 2 root root 4096 Sep  7 02:04 dav
drwxr-sr-x 5 root root 4096 Sep  7 02:04 db
-r--r--r-- 1 root root    2 Sep  7 02:04 format
drwxr-xr-x 2 root root 4096 Sep  7 02:04 hooks
drwxr-xr-x 2 root root 4096 Sep  7 02:04 locks
# mkdir keywords
# cd keywords/
# mkdir branches
# mkdir tags
# mkdir trunk
# svn import keywords/ file:///vol/svn/keywords -m "first import."
Adding         keywords/trunk
Adding         keywords/branches
Adding         keywords/tags


一通りの設定が終われば、インスタンスをS3に保存します。これで次回からは、インスタンスを起動するだけで大丈夫です。方法は、以下のリンクの通りです。
Amazon EC2インスタンスの保存

長くなったので、Apache経由のSubversionのアクセスの設定はまた次回に書きます。