■
ec2onrails
http://ec2onrails.rubyforge.org/
今から作業に取りかかるので、片っ端にメモ作成します。
前提:
xenは結構使ったことがある。
railsアプリも結構作ったことがある。
監視とかバックアップとかそういう系統の設計の経験もある。
amazonEC2, S3をちょっと動かしたことがある。
capistranoもそこそこ使ったことがある。
amache(mod_proxy_balancer)+mongrelの構成も経験済み。
-
- -
まずは本家ページのインストールについての訳+自分コメントの作成から開始。
ec2onrailsはUbuntuです。
#いつも使ってるcentos5.xとはちょっと違う。
#centos5.x(64bit)だとrubyのバージョンが1.8.5なんだけど,ubuntuはどうなのかな?
→ruby1.8.6だよ。
railsは2.1もokだよ。
apache+mongrelの構成だよ。
OSは32bitも64bitもどちらもあるよ。
#いつも64bitでやってたけでど、EC2料金節約のため、当面は32bitのsmallインスタンスを使ます。
Postfixでメール送信できるよ。
#gmailのアレと連携させるつもり。
インストール
ローカルはmacbookです。
1. Install the gem
#エラーも出ずに完了。
$sudo gem install ec2onrails
2. Add the config files to your Rails app
実際にdeployするアプリを用意しないといけないので、仮アプリを作る。
#railsのディレクトリ、ファイルがだーっと作成された。
$rails bookshelf
#Capfileなどが作成された。
$cd bookshelf
$capify .
#この3つのファイルをec2onrailsのページから文中リンクされているものに置き換える。
$vi config/deploy.rb
$vi Capfile
$vi config/s3.yml
#アクセスキーなどを自分のものに置き換えるのはもうちょっとあとでやるつもり。
#Be sure to customize those files and read the comments. って書いてあるんだけども。
4. Start up one or more instances of the image.
#2の次が4になってるのは気にせずに進んでみる。
EC2インスタンスの起動はamazonページを見ろ!みたいな感じなのでリンクをたどる。
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$
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
たぶん、さっきのツールに含まれているんだろう。やってみ
Java_Homeが未定義とのことで、深堀りしてみる。
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/bin/javaにパスが通るようにってことなので、
$ $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)
これ!/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/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$
ちなみ
さて、
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-keypairmacbook:~ 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