週末プログラマに朗報 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のアクセスの設定はまた次回に書きます。