ある日の本番環境エラー

エラー文

「Your local changes to the following files would be overwritten by merge:
        Gemfile.lock」

 

「Gemfile.lockがマージによって上書きされています」

 

「マージする前に変更をコミットするか、隠してください」

 

https://qiita.com/15grmr/items/433ee3b47828aaad32a8

 

Gemfile.lockファイルは削除しても大丈夫・・・

 

ということで削除。

 

次に

メソッド周りで怒られた為修正。

(デプロイ前にRubocop周りで修正してました。

表記を変えたところエラーがでてしまい戻したところエラーは出ず。

奥深そうな為別で考えます)

 

次に

Could not find timeout-0.3.0 in any of the sources
Run `bundle install` to install missing gems.

 

gem周りで怒られました

デプロイ前にテストコード書こうかな?という事で

こちらのgemを追加しておりました

# gem 'net-smtp'
# gem "net-pop"
# gem "net-imap"

 

一旦これらもコメントアウトしました

 

さて、これらを行い再度rails sをおこなったところ

・・・やはりエラー(502)

 

502エラーは「サーバー側の問題」

 

sudo tail -f /var/log/nginx/error.log

こちら、nginxでのエラーログを見れるコマンドということで試したところ

 

2022/10/06 03:24:55 [error]

17647#17647: *11 connect() to unix:///home/ec2-user/style/tmp/sockets/puma.sock failed (111: Connection refused) while connecting to upstream,

client: 172.31.41.109, server: stylecms.net,

request: "GET / HTTP/1.1", upstream: "http://unix:///home/ec2-user/style/tmp/sockets/puma.sock:/", host: "172.31.0.19"

 

(111: Connection refused) 

接続拒否・・・

 

sudo tail -f log/production.log

こちら本番環境のログをみれるコマンド

 

 

seedで作成したデータが作られている

 

 

ps aux | grep puma

ec2-user 17756  0.0  0.1 119424   988 pts/0    S+   03:34   0:00 grep --color=auto puma

 

これはkillしないほうがいいのかな・・・

 

手詰まりました・・

 

 

 

別日。一旦整理してみることに。

 

まずは追加しようとしていた

# gem 'net-smtp'
# gem "net-pop"
# gem "net-imap"

 

まず追加を行った経緯として、

これらのGemは参考にしたデプロイ手順にGemfileへ追加するよう書いてありました

 

今回、再度見返した際に現在のGemfileと照らしあわせ、

「あれ,ないな・・いれとこ」

という感じで追加しておりました。

 

これらのGemがなんなのかは一度おき

どうやら必須ではない様子?

→というよりこれらを追加すると

Gemに対してのエラーが出てしまい、エラー文を検索したところ

「設定が二重になってしまっている」のような参考記事が手に入りました。

 

もしかしたら別の手順でこれらを終えているのかも・・

少なくとも確実にない状態でデプロイ作業ができていた為

消すことにしました。

 

そうなると、一旦現状のエラーとしては

nginx 502エラー。

 

 

エラー解決に関し、自分は原因の切り分けが出来ていなかったです。

 

ここで改めて現状を整理しました。

①きっかけとなったGemfile、Gemfile.lockは無事か

(及びこれらのファイルはなんなのか)

②それ以外で出ているエラー

 

まずは①について。

改めてGemfileをもともとの状態に戻し、確認し本番環境へ持っていきました

特にエラーも出ず更新できています。

(差分も表示されました)

 

ファイルの確認も行ったところ

Gemfile、Gemfile.lock共にファイルの所在確認ができました!

 

ここで、私は一度Gemfile.lockを削除していたはず

(ここ、ちゃんと所在の確認までしておくべきでした・・)

 

qiita.com

 

とてもわかりやすい・・

 

bundlerについても確認しました。

www.sejuku.net

bundlerは「gemの依存関係とバージョンを管理」

・・・

「Aというgemに対し、Aを使うにはBというgemを使う必要がある、そのgemを使うにはCというgemを….
という形で依存関係のあるgemたちをbundlerを使うことで一括でインストールすることができる!」

(しっかりと依存関係を解決しインストールしてくれる、とのこと・・そうだったんだすごいね)

 

これまで自分はbundle installで全て行ってきましたが、

保存場所指定などもできるみたいです

 

bundlerの役割として他にも「gemのバージョン管理」をしてくれるそう

 

一旦bundlerはこのあたりで

次にGemfile

 

bundle installを受けてbundler はGemfileをみます

インストールされていないgemを見つけてインストール

 

そしてGemfile.lock

 

依存関係のあるgemを含め、Gemfileをもとに実際にインストールされた全てのgem一覧とバージョンが記載されたファイル

(bundlerの出力結果)

また、gemfile.lockは自動で更新される!

 

ここで改めて、

やはりgemfileが原因である可能性は一旦消しました。

 

 

さて、nginxでの502エラーに関して

ここでも切り分けをしたいと思います。

 

まずはnginxはリクエストを受け取っているのか。

 sudo tail -f /var/log/nginx/error.log

 

nginxのエラーログを確認してみました

unix:///home/ec2-user/style/tmp/sockets/puma.sock failed (111: Connection refused)

 

puma.sockが何かしらあるのかな・・

 

次にpumaに関しても確認。

cd log

tail -f puma-error.log

(こちらで実行結果のみ表示することができる)

 

リクエストに対して何も表示されませんでした

 

ということはそもそもpuma実行まで到達していない様子。

 

puma.sockに関する設定は puma.rbに書いている

ということで確認したところ・・・

 

なんと以前問題なく動作していた状態から書き変わっていました。

(ローカルでも変わっていることを確認)

 

bind “unix://#{Rails.root}/tmp/sockets/puma.sock”

bind Rails.root.join(‘path/to’

 

こちら修正を行い・・

動きました!!

 

なぜ書き変わってしまったのか原因追求できていませんが

一旦駆け足でまとめました。