インストール

ローカルはmacbookです。

1. Install the gem


$sudo gem install ec2onrails
#エラーも出ずに完了。

2. Add the config files to your Rails app

実際にdeployするアプリを用意しないといけないので、仮アプリを作る。


$rails bookshelf
#railsディレクトリ、ファイルがだーっと作成された。

$cd bookshelf
$capify .
#Capfileなどが作成された。

$vi config/deploy.rb
$vi Capfile
$vi config/s3.yml
#この3つのファイルをec2onrailsのページから文中リンクされているものに置き換える。
#アクセスキーなどを自分のものに置き換えるのはもうちょっとあとでやるつもり。
#Be sure to customize those files and read the comments. って書いてあるんだけども。

4. Start up one or more instances of the image.
#2の次が4になってるのは気にせずに進んでみる。


macbook:~/apps/bookshelf code$ cap ec2onrails:ami_ids
* executing `ec2onrails:ami_ids'
32-bit server image for EC2 on Rails 0.9.9: ami-c9bc58a0
64-bit server image for EC2 on Rails 0.9.9: ami-cbbc58a2
macbook:~/apps/bookshelf code$
EC2インスタンスの起動はamazonページを見ろ!みたいな感じなのでリンクをたどる。
http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/running-an-instance.html

EC2用のコマンドラインツールを入れろ、という雰囲気なので、さらにリンクをたどる。
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=351&categoryID=88

ダウンロードして、解凍して、/usr/local/にコピーした。
そこへのパスを通したり。
http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/setting-up-your-tools.html#set-aes-home


macbook:/usr/local/ec2-api-tools/bin code$ export EC2_HOME=/usr/local/ec2-api-tools
macbook:/usr/local/ec2-api-tools/bin code$ export PATH=$PATH:$EC2_HOME/bin
このページの下にある

$ export EC2_PRIVATE_KEY=~/.ec2/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem
$ export EC2_CERT=~/.ec2/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem
これはまだやらないでおく。

ここに戻って、
http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/running-an-instance.html

Finding a Suitable AMI
これは先ほどの解決済み(cap ec2onrails:ami_ids)なのでさらに進む。

Generating a Keypair
たぶん、さっきのツールに含まれているんだろう。やってみ


macbook:/usr/local/ec2-api-tools/bin code$ ec2-add-keypair gsg-keypair
/usr/local/ec2-api-tools/bin/ec2-cmd: line 10: JAVA_HOME: JAVA_HOME is not set
Java_Homeが未定義とのことで、深堀りしてみる。

http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/prerequisites.html#java-runtime


$ $JAVA_HOME/bin/java -version
java version "1.5.0_09"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_09-b03)
Java HotSpot(TM) Client VM (build 1.5.0_09-b03, mixed mode, sharing)
つまり、$JAVA_HOME/bin/javaにパスが通るようにってことなので、

macbook:/usr/local/ec2-api-tools/bin code$ sudo find / -name java
Password:
/Developer/SDKs/MacOSX10.3.9.sdk/usr/lib/java
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/java
/opt/local/var/macports/sources/rsync.macports.org/release/ports/java
/opt/local/var/macports/sources/rsync.macports.org/release/ports/lang/jamvm/files/java
/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Commands/java
/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Home/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Commands/java
/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Home/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Resources/Documentation/Reference/doc/api/java
/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Resources/Documentation/Reference/doc/api/org/omg/stub/java
/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Resources/Documentation/Reference/doc/guide/plugin/dom/com/sun/java
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Commands/java
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java
/Users/code/Pictures/webdb37-refactoring-chapter6/webdb37/src/main/java
/Users/code/Pictures/webdb37-refactoring-chapter6/webdb37/src/test/java
/Users/susatadahiro/java
/usr/bin/java
/usr/lib/java
macbook:/usr/local/ec2-api-tools/bin code$
これ!/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java

ちなみ


macbook:/usr/local/ec2-api-tools/bin code$ ls -la /usr/bin/java
lrwxr-xr-x 1 root wheel 77 Dec 30 2007 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Commands/java
macbook:/usr/local/ec2-api-tools/bin code$
さて、

$export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home
再度、

macbook:/usr/local/ec2-api-tools/bin code$ ec2-add-keypair gsg-keypair
Required option '-K, --private-key' missing (-h for usage)
やはり、キーの設定をしておけということなので、さかのぼってみる。
http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/setting-up-your-tools.html#set-aes-home


amazon web serviceにログインしてAWS Access Identifiersページにいくと,certファイルがダウンロードできるようになっているので、それをダウンロードする。
private-keyはみあたらないので、あとで考える。

ひとまずcertファイルのパスを通す。


$ export EC2_CERT=~/.ec2/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem (これはサンプルです)
こんな感じで。
いや、これはダメだ。

新規にx.509のファイルを作る(create)すると、ペアとなるprivatekeyもダウンロードできる画面に遷移した。
http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/account.html

めでたいので、
http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/setting-up-your-tools.html#set-aes-home
こちらに従って


$ export EC2_PRIVATE_KEY=~/.ec2/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem
$ export EC2_CERT=~/.ec2/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem
こんな感じにパスを通す。

macbook:~/.ec2 code$ ec2-add-keypair gsg-keypair
Client.InvalidKeyPair.Duplicate: The keypair 'gsg-keypair' already exists.
さっき何度も失敗した残骸が残ってるらしいので、古いのを一度削除する。

macbook:~ code$ ec2-
ec2-add-group ec2-delete-keypair ec2-describe-keypairs ec2-reset-image-attribute
ec2-add-keypair ec2-deregister ec2-disassociate-address ec2-revoke
ec2-allocate-address ec2-describe-addresses ec2-fingerprint-key ec2-run-instances
ec2-associate-address ec2-describe-availability-zones ec2-get-console-output ec2-terminate-instances
ec2-authorize ec2-describe-group ec2-modify-image-attribute ec2-version
ec2-cmd ec2-describe-image-attribute ec2-reboot-instances
ec2-confirm-product-instance ec2-describe-images ec2-register
ec2-delete-group ec2-describe-instances ec2-release-address
macbook:~ code$ ec2-delete-keypair
Required parameter 'KEY' missing (-h for usage)
macbook:~ code$ ec2-delete-keypair gsg-keypair
KEYPAIR gsg-keypair

macbook:~ code$ ec2-add-keypair gsg-keypair
KEYPAIR gsg-keypair xx:xx:xx:(略

          • BEGIN RSA PRIVATE KEY-----

(略

でもって、BEGIN RSA PRIVATE 以下に出力された内容を

~/.ssh/id_rsa-gsg-keypair
ファイルとして保管する。

$ chmod 600 id_rsa-gsg-keypair ; ls -l id_rsa-gsg-keypair

  • rw------- 1 fred flintstones 1701 Jun 19 17:57 id_rsa-gsg-keypair

みたいに。。

遂にインスタンス起動。


macbook:~/.ssh code$ ec2-run-instances ami-c9bc58a0 -k gsg-keypair
RESERVATION r-xxxxxxxx 123445678 default
INSTANCE i-xxxxxxxx ami-c9bc58a0 pending gsg-keypair 0 m1.small 2008-MM-ddThh:mm:ss+0000 us-east-1b aki-xxxxxxxxx ari-xxxxxxxx
(適当に伏せ字にしてます)


ちょっと調べものしてから(5分くらい?)状況確認するとrunningになってたので、先に進む。


macbook:~/.ssh code$ ec2-describe-instances i-xxxxxxxxx
RESERVATION r-xxxxxx 12345678 default
INSTANCE i-xxxxxx ami-c9bc58a0 ec2-11-111-11-111.compute-1.amazonaws.com domU-11-11-11-11-11-11.compute-1.internal running gsg-keypair 0 m1.small 2008-MM-ddThh:mm:ss+00000 us-east-1b aki-xxxxxxx ari-xxxxxxxx

sshとhttpのポートを開ける


PROMPT> ec2-authorize default -p 22
PERMISSION default ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0
PROMPT> ec2-authorize default -p 80
PERMISSION default ALLOWS tcp 80 80 FROM CIDR 0.0.0.0/0
のつもりだったけど、もう開いてるって言われた

macbook:~/.ssh code$ ec2-authorize default -p 22
Client.InvalidPermission.Duplicate: The permission '0.0.0.0/0-1-22-22' has already been authorized on the specified group
macbook:~/.ssh code$ ec2-authorize default -p 80
Client.InvalidPermission.Duplicate: The permission '0.0.0.0/0-1-80-80' has already been authorized on the specified group
macbook:~/.ssh code$

それからsshでのログインが出来た。
こんな風なサンプルと同じやり方です。@以降のホスト名は、ec2-describe-instances i-xxxxxxxxxの時に表示されたものを使います。


PROMPT> ssh -i id_rsa-gsg-keypair root@ec2-72-44-33-55.z-2.compute-1.amazonaws.com
The authenticity of host 'ec2-72-44-33-55.z-2.compute-1.amazonaws.com (216.182.225.42)' can't be established.
RSA key fingerprint is 9d:0a:a9:51:32:38:11:83:a8:a7:1c:9c:1c:e6:58:b0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-72-44-33-55.z-2.compute-1.amazonaws.com' (RSA) to the list of known hosts.
Last login: Wed Jun 21 08:02:08 2006
root@my-instance #

ここまでで
http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/running-an-instance.html
の内容が終わりました。


あれ?ubuntのimageファイルじゃないんだっけ?しばらく頭の片隅においておく


Linux version 2.6.21.7-2.fc8xen (mockbuild@xenbuilder1.fedora.redhat.com) (gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)) #1 SMP Fri F
eb 15 12:39:36 EST 2008