LoginSignup
0
0

More than 3 years have passed since last update.

Elastic Beanstalk で Railsアプリをデプロイする時にハマったとこ

Last updated at Posted at 2020-02-21

Elastic Beanstalk で Railsアプリをデプロイする時にハマったとこ

まとめ

Elastic Beanstalk へデプロイした経験から、ハマりやすいポイントをまとめました。
詳細については、以下の1回目2回目のところを参照してみてください。

  • セキュリティグループ
  • MySQL エンコード
  • .ebextension 設定
  • 各gemの対応

1回目

  • 文字コード(日本語の場合、utf8 へ変更必要)
  • セキュリティグループ (Mysql2::Error: Can't connect to MySQL server on '**********.*****.ap-northeast-1.rds.amazonaws.com' (4))
    • EC2 と RDS を同じVPC/サブネット上に置く方法
    • RDS のセキュリティグループに EC2 からのアクセスを許可する。
  • rails db:createをやってくれない?
    (Mysql2::Error: Unknown Databese'**********')

    • 下記コマンドにて、自分でMySQLに接続して、DB作成。
    • MySQL への接続(EC2上で(eb ssh))
      • mysql -h **************.***.ap-northeast-1.rds.amazonaws.com -P 3306 -u ** -p
    • DB作成
      • create database ***********;
    • utf8 へ変更されているかコマンドを実行して確認
  • initializers/carrierwave.rb 用に beanstalk へS3設定を追記

2回目

  • eb init
  • eb create
  • RDS 作成
  • ebに環境変数を格納
  • .ebextensionを記述

  • eb deploy

  • EC2 cd /var/app/ondeck/ 内で

    • bundle update --bundler
    • gem install bundler:2.0.2
  • local上の Ruby のversionを上げることでglobal環境のversionと合わせる

# install可能なversionを表示
$ rbenv install -l

# versionを指定してinstall
$ rbenv install 2.6.5

# インストールしたversionを使用可能な状態にする⇒shimsへの反映
$ rbenv rehash
$ rbenv local 2.6.5
$ rbenv global 2.6.5
  • bundler のバージョンがあっていない?

(参照:Gem::GemNotFoundExceptionと出てきたときの対処法 - Qiita)

$ gem install bundler -v '1.17.3'
$ bundle install
$ gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/' -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib
$ mysql -h *****RDSインスタンス*****.ap-northeast-1.rds.amazonaws.com -P 3306 -u **DB名** -p

→ 接続できた。
つまり、他の問題?

  • EC2内から直接、DB(-)を作成するコマンドを打ったところ、ハイフンは使えないということを言われる。
    → 環境設定の ***-
    *** を _** へ変更。

  • 再度、eb deployしたところ、同じエラーが出る。
    → わからないので、MySQLの中から _** を作成してしまって、再度 eb deploy

  • エラーコードが変わって、MySQLのエンコードが問題っぽい。
    [AWS][RDS][MySQL] 文字コードをutf8mb4にする - Qiita

【MySQL】Mysql2::Error: Incorrect string value 【エラー】 - Qiita

ALTER DATABASE データベース名 default character set utf8;
  • 下記エラーコードが出たので、crontabのコードを削除して、再度デプロイしてみる。
container_command 06-crontab in .ebextensions/02_setup_app.config

ようやくデプロイ完了!!

追記

後日発生したエラー

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0