teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2020/07/19 19:53

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -28,4 +28,19 @@
28
28
  プロセスをkillし直しましたが同じくエラーのままでした。
29
29
 
30
30
  これはおかしいです。killが失敗したか、違うプロセスをkillしたか何方かです。
31
- 3000を使おうとしているのが、unicorn と bundle exec rails s -e production -b 0.0.0.0 と2つ有りますから、要注意。
31
+ 3000を使おうとしているのが、unicorn と bundle exec rails s -e production -b 0.0.0.0 と2つ有りますから、要注意。
32
+
33
+
34
+ 追記2
35
+ pry >User.count で => 0 となるってことは production環境で RailsとMySQLは接続できています。
36
+ なのになぜ???
37
+ 気になるのは
38
+ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
39
+ もしかしたら developmentで起動していないか?
40
+ 実は私は 環境をパラメーターで渡すのは余り信用していないのです。
41
+ 次の2つ試してください
42
+ RAILS_ENV=production bundle exec unicorn_rails -c config/unicorn.rb -D
43
+ -E でなく -e(下記のように)で
44
+ bundle exec unicorn_rails -c config/unicorn.rb -e production -D
45
+
46
+ AWSでいつまでも3000で実行するわけでは無いでしょうから、nginxとかに切り替えたほうが早いかも

1

修正

2020/07/19 19:53

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -1,3 +1,31 @@
1
- config/uncorn.rb に
1
+ ~~config/uncorn.rb に
2
2
  listen
3
- という設定項目が有ると思います。そこが /tmp/mysql.sock になってませんか?
3
+ という設定項目が有ると思います。そこが /tmp/mysql.sock になってませんか?~~
4
+
5
+ すみません、勘違いしていました、unicorn - nginx 間の問題ではなく、Rails - Mysqlの問題ですね。
6
+ 質問の最初に書かれている「Can't connect to local MySQL server through socket '/tmp/mysql.sock'」は
7
+ > [ec2-user@ip アプリ名]$ rails db:create RAILS_ENV=production
8
+ [ec2-user@ip アプリ名]$ rails db:migrate RAILS_ENV=production
9
+
10
+ が成功していれば 「Rails - Mysqlの問題」は解決しています。
11
+ 成功していたならさらに
12
+ > // 再度エラーでひっかかっていた箇所を確認すると、同様のエラーのままでした。
13
+ Can't connect to local MySQL server through socket '/tmp/mysql.sock'
14
+
15
+ というのが不思議です。
16
+ Rails - Mysqlの問題
17
+ Rails - unicorn の問題
18
+ の切り分けがまだ不十分に感じます。
19
+ RAILS_ENV=production rails c
20
+ でproduction環境でconsoleに入って、定義済のモデル、例えばUserがあるなら
21
+ User.count
22
+ とした時に 0 とか 12 とか返ってくるか確認してください。
23
+ 帰ってきたら Rails - Mysqlの問題 はOKです。
24
+ RAILS_ENV=production は commandの引数で入れるとだめなcommandもあるので、念の為commandの前に置いて試してください。
25
+
26
+ なお、
27
+ > in `initialize': Address already in use - bind(2) for "0.0.0.0" port 3000 (Errno::EADDRINUSE)
28
+ プロセスをkillし直しましたが同じくエラーのままでした。
29
+
30
+ これはおかしいです。killが失敗したか、違うプロセスをkillしたか何方かです。
31
+ 3000を使おうとしているのが、unicorn と bundle exec rails s -e production -b 0.0.0.0 と2つ有りますから、要注意。