前提
EC2 に Rails6 + Puma + Nginxでデプロイしてて
かつ EC2にSSH接続したターミナルで
rails s -e production
では問題なくサービスが表示されているのに
rails s -e production -d
ではエラー画面が表示されるだと?
ええ〜これじゃサービス起動させ続けるのにSSH接続しっぱなしじゃーん
という悩みを抱えたキミ向けだよ!
解決
Railsのルートフォルダにあるconfig/puma.rbに
config/puma.rb
daemonize
って追記するんだ!
これで
rails s -e production -d
では起動できないままだけど
rails s -e production
これでデーモン化されるので解決だよ!
これじゃローカルでもデーモン化されて不便だろって人は
config/puma.rb
if Rails.env == 'production'
daemonize
end
って書こうね!誰でも思いつく回避策だね!知ったげに書いてごめんね!
原因
完全に調べきったわけじゃないですが、私がネットサーファーになってgoogleの海を潜った結果、どうやら pumaで"rails s -d" でデーモン化すると puma.rbが読み込まれないみたいです。
rails s -e production -d で起動した際にNginxのエラーログにpuma.rbで設定しているsocketで接続できなかったよ!って記載されていますので、多分あってるんでないかなと思います。