AWS Elastic Beanstalkをコマンドラインから作成してアップロードまで
AWS Elastic Beanstalkとは
Elastic Beanstalk(以下,EB)はHerokuや、phpfogのようなPaaSの一つ。
サーバーに関して知識が無くてもブラウザのGUIコンソールから
アクセスが増えたときはサーバーを増やして対応するなど設定次第で
自動でスケールアウト出来るから色々お手軽にサービスを提供できる。
EBにコマンドラインツールを使ってアップしてRailsでデプロイすることが書かれている
記事もあり、Railsでやってみたい方は以下の記事を参考にすると良いと思う。
AWS Elastic Beanstalk と Rails で Hello World してみる【11日目】
基本的に以下のURLを一通りやれば良いだけ
http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/command-reference-get-started.html
EBは以下のように色々な言語に対応しているが今回はPHPを選択した。
しかし最初はほとんどコマンドだけで言語とかあまり関係なく
ただサーバーを立ち上げたときデフォルトでPHPの環境が出来ているだけ
だと思うので直接サーバーをいじる事が出来ればあまり気にしなくて良いと思う。
(間違っていたらごめんなさい)
実行環境
Mac OSX 10.8
AWS Elastic Beanstalk Command Line Toolを使えるようにする
とりあえずさっきも書いたAWS Elastic Beanstalk Command Line Toolからzip形式であるAWS Elastic Beanstalk Command Line Toolをダウンロードする。
ダウンロードしたzipファイルをとりあえず適当なところに置く。
自分は「~/.aws」というディレクトリを作ってそこにzipファイルを置いて
ターミナルから以下のようにして解凍
$ unzip <ダウンロードしたファイル.zip>
解凍したあとはEBをコマンドで使えるようにするために使う「eb」コマンドまでの
パスを環境変数に保存。
ちなみに
ここでは
$ export PATH=$PATH:<path to unzipped EB CLI package>/eb/linux/python2.7/
ここまでやれば「eb」コマンドが使えるようになっている。
デプロイ ~Hello, EB~を表示させる
とりあえず作業ディレクトリを作ってgitレポジトリを作る。
$ mkdir EB $ cd EB $ git init
ここで先ほどダウンロードして解凍したAWS DevToolsの中に入っている
AWSDevTools-RepositorySetup.shを実行する。
これはgitにaws用に拡張をつけるもので最終的にgit aws.pushでEBにpushする。
参考URL
http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/GettingStarted.GetSetup-devtools.html
EBディレクトリ
$ sh <path to unzipped EB CLI package>/AWSDevTools/Linux/AWSDevTools-RepositorySetup.sh
次にEBの環境を作る。
$ eb init
上記を行うと以下の事が対話形式で聞かれるので
自分の環境にあったもの、構築するものを選択する。
聞かれる内容
- AWS Access Key ID
- AWS Secret Access Key
- Available service regions are(自分の使っているリージョン)
- AWS Elastic Beanstalk application name(特に名前を気にしなくてよいならそのままEnterして大丈夫, ディレクトリ名がデフォルトでつく)
- AWS Elastic Beanstalk environment name(特に名前を気にしなくてよいならそのままEnterして大丈夫, 「ディレクトリ名-env」がデフォルトでつく)
- Available solution stacks are:(今回は64bit Amazon Linux running PHP 5.3を選択)
上記の処理を終えたら以下のコマンドを実行するとEC2インスタンスが作成されたり
色々処理が始まりデプロイされる。
$ eb start
以下のコマンドで表示されるものの中にURLがあるので、
それをブラウザに入力するとページがデフォルトで用意されているページがブラウザに表示される。
$ eb status --verbose
index.phpでファイルを作る
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1>Hello, <?php echo 'EB'; ?></h1> </body> </html>
その後git add, git commit
ファイルを作ったら以下のようにしてEBにpushして
同じページをリロードするとさっきのファイルが表示される。
$ git aws.push