読者です 読者をやめる 読者になる 読者になる

オモンパカリスト

深層学習、計算論的神経科学に興味あります

master failed to start, check stderr log for details 〜自作Webサービスを意気揚々と本番アップデートしてみたら〜

ことのいきさつ

Webサービスを開発中。
勉強会をしようよ!アプリ。

Comicomu

ちなみに、GitHubGitHub - kazukousen/comicomu: Commit Community 「勉強会しようよ」
テストも書いてないし、まだまだ甘々な開発ですが、とりあえず本番デプロイまでしたかった。

URLがIPアドレスなのはEC2の無料枠インスタンスでとりあえずデプロイしたからです。

本番環境

デプロイ手順

  1. 開発環境(ローカルOS)からgit push origin feature/~
  2. Github:kazukousen/comicomu(上記)にプルリク、自分でmasterへマージ(いまのところCI試してない)
  3. EC2でgit clone(最初) or git pull origin master

今回のアップデート

記事(Post)に一対多でコメント(Comment)モデルをつくった。
そして各記事ページ内(posts#show)でコメント投稿欄とコメント表示をする。

意気揚々とデプロイ。

遭遇したエラー

pullしてきたので、unicorn_startしようとしたら

$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
master failed to start, check stderr log for details

ググるlog/unicorn.logをみる。

/home/guts/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/mysql2-0.4.3/lib/mysql2/client.rb:87:in `connect': Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (Mysql2::Error)

RailsからMySQLが繋げることに失敗している。
その辺変更した心当たりはなかったけど、ぼくは RailsアプリケーションのAWSによる公開|unicorn + nginx - Qiita この記事に沿って環境を整えているので、$ ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sockシンボリックリンクを貼り直す。

もう一回やると

unlinking existing socket=/var/www/rails/comicomu/tmp/sockets/.unicorn.sock

こんなことを言われる。
アプリのディレクトリ直下で$ rm ./tmp/sockets/.unicorn.sockしてこのファイルを削除する。

ここで、最後の500エラー。
log/unicorn.logは正常ぽく、log/production.logをみたら、、

[2016-04-18T23:38:15.479150 #27377]  INFO -- : Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.8ms)
F, [2016-04-18T23:38:15.480139 #27377] FATAL -- :
ActiveRecord::StatementInvalid (Mysql2::Error: Table 'comicomu_production.comments' doesn't exist: SHOW FULL FIELDS FROM `comments`):

mysqlcomicomu_productionにcommentsテーブルがないですよ!と言われた。

マイグレーションしてなかった。。

$ be rake db:migrate RAILS_ENV=production
== 20160404091204 CreateComments: migrating ===================================
-- create_table(:comments)
   -> 0.0061s
== 20160404091204 CreateComments: migrated (0.0072s) ==========================

== 20160410033854 AddPostIdToComments: migrating ==============================
-- add_reference(:comments, :post, {:index=>true, :foreign_key=>true})
   -> 0.0601s
== 20160410033854 AddPostIdToComments: migrated (0.0613s) =====================

無事500エラー回避、、