そうだ、Elastic Beanstalkしよう
「エラスティックビーンズトーク」と読まれがちですが「イラスティックビーンスターク」です。
Railsで作成したアプリをebで稼働させたいので
Elastic BeanstalkでのRuby環境の設定を見ながらすすめます。
EB CLIのバージョンはEB CLI 3.3.2 (Python 2.7.1)でお送りしております。
まずはeb init
します。
リージョンが選べるのでお好きなリージョンを選びます。
% eb init
Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-southeast-1 : Asia Pacific (Singapore)
7) ap-southeast-2 : Asia Pacific (Sydney)
8) ap-northeast-1 : Asia Pacific (Tokyo)
9) sa-east-1 : South America (Sao Paulo)
(default is 3): 8
今回使いたいebをマネジメントコンソールから作成済みだったのでアプリケーションは1を選び、staging環境を作ります。
未作成時はCreate New Applicationを選べばOK!
Select an application to use
1) Hogehoge
2) [ Create new Application ]
(default is 2): 1
Select the default environment.
You can change this later by typing "eb use [environment_name]".
1) hogehoge-production-env
2) hogehoge-staging-env
(default is 1): 2
ステータスを確認してみます。
% eb status
Environment details for: hogehoge-staging-env
Application name: Hogehoge
Region: ap-northeast-1
Deployed Version: xxxxxxxxxxx
Environment ID: xxxxxxxxx
Platform: 64bit Amazon Linux 2015.09 v2.0.6 running Ruby 2.2 (Passenger Standalone)
Tier: WebServer-Standard
CNAME: hogehoge-staging-env.elasticbeanstalk.com
Updated: 2016-01-12 15:36:16.087000+00:00
Status: Ready
Health: Green
Alert: An update to this CLI is available.
ちゃんとできていますね。
Railsのアプリケーションを動かすにあたりrake db:seedしたかったので、Linux サーバーでのソフトウェアのカスタマイズを参考に.ebextentions/seed.configを作成
01-bundle_install:
container_commands:
01-bundle_install:
command: bundle install --path vendor/bundle
02-db_migrate:
command: bundle exec rake db:migrate
03-db_seed:
command: bundle exec rake db:seed
途中でDBのエラーがでたぞ
ERROR: [Instance: i-xxxxxx] Command failed on instance. Return code: 1 Output: (TRUNCATED)...eeds.rb:10:in `<top (required)>'
Mysql2::Error: Incorrect string value: '\xE5\x85..' for column 'name' at row 1
RDSのDB設定がlatin1になっている疑惑があるので
DBパラメーターグループを参考に
RDSのパラメーターグループを作ってcharsetをutf8にして、RDSのインスタンスを再起動
ログを見る
デプロイはできたものの、プログラム側でエラーが出ていらっしゃるなぁという時には当然ログを確認したくなるのが人の常ですね。
この記事でも書いたのですがeb logs
を使って確認しましょう。
こちらのオプションに「–all」をつけると.elasticbeanstalk/logs/以下にログをDLしてくれるし、「–zip」をつけると圧縮した状態でDLしてくれますよ。便利!