3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【AWS】本番環境でRailsを起動しようとした時のMysql5.7系に関するエラー

Last updated at Posted at 2019-08-08

同期がハマったエラーが自分もハマった事があったので復習しながら備忘録として

##やりたい事

  • EC2インスタンスからGithubへアクセスできるようにする
  • Githubからコードをクローンする
  • unicornをインストールし設定する
  • アセットをコンパイルする
  • Railsを起動する<=ここのエラーを解決する

##Rails起動でハマったエラー①

ターミナル
[ec2-user@ip-172-31-23-189 ~]$ rails db:create RAILS_ENV=production
[ec2-user@ip-172-31-23-189 ~]$ rails db:migrate RAILS_ENV=production
[ec2-user@ip-172-31-23-189 ~]$ unicorn_rails -c config/unicorn.rb -E production -D
[ec2-user@ip-172-31-23-189 ~]$ master failed to start, check stderr log for details
//unicorn起動できない
[ec2-user@ip-172-31-23-189 ~]$ less log/unicorn.stderr.log
//エラーログを確認する
Can't connect to local MySQL server through socket '/tmp/mysql.sock(2)'
//ソケット通信できませんと怒られる

###原因と解決方法
エラー文最後が(2)の場合はsocketファイルが無い。=>作りましょう!!

ターミナル
$ cd /tmp
$ ls
//my.sockが/tmp以下に無いはず
$ touch mysql.sock
//mysql.sockを/tmp以下に作成
$ sudo service mysqld restart
$ rake db:migrate
//ソケット接続できているのでmigrate完了できるはず
[ec2-user@ip-172-31-23-189 ~]$ unicorn_rails -c config/unicorn.rb -E production -D

##Rails起動でハマったエラー②
/tmp以下にmysql.sockを作成してもunicornが起動してくれない。
###原因と解決方法
unicornのプロセスがストップできていない=>ストップさせましょう!

ターミナル
[ec2-user@ip-172-31-23-189 ~]$ ps aux | grep unicorn
//unicorn関連のプロセスのみを抽出するgrepコマンド使いましょう
ec2-user 17877  0.4 18.1 588472 182840 ?       Sl   01:55   0:02 unicorn_rails master -c config/unicorn.rb -E production -D
ec2-user 17881  0.0 17.3 589088 175164 ?       Sl   01:55   0:00 unicorn_rails worker[0] -c config/unicorn.rb -E production -D
ec2-user 17911  0.0  0.2 110532  2180 pts/0    S+   02:05   0:00 grep --color=auto unicorn
//unicorn_rails masterがunicornのプロセス本体です。こいつをkillします
[ec2-user@ip-172-31-23-189 ~]$ kill -9 <確認したunicorn rails masterのPID>
//これでunicornのプロセスはkillされたのでもう一度unicornを起動します
[ec2-user@ip-172-31-23-189 ~]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
//これでちゃんとunicornが起動するはず

##Rails起動でハマったエラー③
①と②をやってもhttp://< Elastic IP >にアクセスできない
###原因と解決方法
ちゃんとmysqlやNginxが再起動できていない。=>もう一度mysqlとNginx(設定済みなら)を停止してunicornをkill→ec2サーバをシャットダウン→再起動します

ターミナル
$ sudo service mysqld stop
//mysqlストップさせる
$ sudo service nginx stop
//nginxストップさせる
$ sudo shutdown -r now
//ec2サーバをストップさせる。これでサーバ内がクリアになる
$ ssh -i 〜〜.pem ec2-user@〜〜
//ec2ログイン。1~2分待ってからログインします
$ sudo service mysqld start
//mysqlスタートさせる
$ sudo service nginx start
//nginxスタートさせる
$ kill -9 <確認したunicorn rails masterのPID>
//unicornもう一度killしておきましょ
$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
//これでunicornが起動

##まとめ
awsの自動デプロイができるまで手動でデプロイ設定している最中にmysql関連のエラー多発しました。私の経験ではmysqlをちゃんと停止=>スタートさせてからunicornをkillしてあげれば解決します。socket(mysql.sock)ファイル作れていてもサーバを再起動していなかったり、mysql再起動していなかったり、unicornをkillしていないとhttp://< Elastic IP >にアクセスできないと思うので、まずは再起動する事が一番です!!

例えるなら、
ブラウン管テレビを斜め45度チョップすれば砂嵐が直るみたいな感じです!(違うか)

終わり

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?