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