そうだ、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してくれますよ。便利!


Profile picture

ぴーやま
プログラミングを嗜んでします。中華料理で出てくるたまごふわふわのコーンスープが好きです。