今回はアプリケーションサーバーであるunicornを起動した時に見たことないエラーに直面したので解決法を残します
[ec2-user@ip-172-31-23-189 アプリ名]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
master failed to start, check stderr log for det
master failed to start, check stderr log for det ??
見たことないエラー。ログを見にいくことに
自身のアプリケーションのディレクトリに移動
[ec2-user@ip-172-31-23-189~]$ cd /var/www/アプリケーション名
currentディレクトリに移動
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ cd current
logディレクトリに移動
[ec2-user@ip-172-31-23-189 current]$ cd log
logの中に入っているファイルの情報を表示
[ec2-user@ip-172-31-23-189 log]$ ls
production.log unicorn.stderr.log unicorn.stdout.log
今回はunicornの問題なので
tail -f unicorn.stderr.log(最新のログを10行分表示)
もしくは
cat log/unicorn.stderr.log(全てのログ表示)
僕の場合はtailの方の10行では確認しきれなかったので、catの方でもログを確認。すると
SQLに接続してみることに
$ mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
ソケットファイルがないですというエラー文。なのでソケットファイルを作ってあげます。
sudo touch /var/lib/mysql/mysql.sock
てことでもう一度接続
$ mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)
かっこの中の数字が2から13に変わっただけやん。/var/lib/mysql/mysql.sock というファイルを開く権限がないですてことらしいです。
てことでmysql.sockに権限を付与するコマンド
$ sudo chmod 777 /var/lib/mysql/mysql.sock
もう一度接続
$ mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
こんどは111に変わったけど、これは接続対象が起動していない or 存在しないということらしい
ステータスコマンドで状況を確認
$ sudo systemctl status mariadb
ここでactiveと表示されていれば接続されている。僕の場合表示されておらず、つまりMariaDBの再起動ができていなかったということがここで判明
$ sudo systemctl restart mariadb
active!これで無事、unicornを立ち上げることができました。
###今回はEC2のインスタンス再起動時にサーバーの再起動をしていないことが原因でした。
参照:https://saton2.hatenablog.com/entry/2018/10/16/200616