質問編集履歴

6

本文追記

2022/05/05 06:20

投稿

hajsu00
hajsu00

スコア151

test CHANGED
File without changes
test CHANGED
@@ -261,3 +261,30 @@
261
261
  ```
262
262
  それぞれの場合でEC2内で`mysql -u {ユーザー名} -p`でログインを試みたところ、表題と同じエラーが出ました。
263
263
  EC2内でもデータベースへの接続に失敗していたことになります。
264
+
265
+ ## EC2 => RDS(MySQL)は成功
266
+ EC2内からRDSにエンドポイントを指定してログインを試みたところ、成功しました。
267
+ ということは、Rails => RDSが失敗している?
268
+ ```bash
269
+ $ mysql -u <ユーザー名> -p -h <RDSのエンドポイント>
270
+ Enter password:
271
+ Welcome to the MariaDB monitor. Commands end with ; or \g.
272
+ Your MySQL connection id is 23
273
+ Server version: 8.0.28 Source distribution
274
+
275
+ Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
276
+
277
+ Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
278
+
279
+ MySQL [(none)]> SHOW DATABASES;
280
+ +-----------------------+
281
+ | Database |
282
+ +-----------------------+
283
+ | myapp_production |
284
+ | information_schema |
285
+ | mysql |
286
+ | performance_schema |
287
+ | sys |
288
+ +-----------------------+
289
+ 5 rows in set (0.00 sec)
290
+ ```

5

進捗追加

2022/05/05 03:46

投稿

hajsu00
hajsu00

スコア151

test CHANGED
File without changes
test CHANGED
@@ -201,9 +201,63 @@
201
201
  ```
202
202
  →エラー文は`Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)`で変化なし
203
203
 
204
- # 考えたこと
204
+ ## 考えたこと
205
205
  ec2内でのRails<=>MySQL通信には成功していること、ブラウザからhttpアクセスには成功している(Railsのエラー場面が表示されている)ことからnginx<=>pumaで問題が発生していると考えています。
206
206
  しかし、検索しても長時間解決に至りません。
207
207
 
208
208
  お手数お掛けしますが、ご助言いただけると幸いです。
209
209
  よろしくお願いします。
210
+
211
+ ## 追記(5/5)
212
+ 68user さんのコメントをもとに検証を進めました。
213
+ ### `puma.rb`を修正
214
+ そもそも`puma.rb`が間違いだらけでしたので、書き直しました。
215
+
216
+ まず、上記実行にあたりサーバー内のRails実行環境を改めて指定。
217
+ $ `export RAILS_ENV=production`
218
+
219
+ 次に、`puma.rb`を以下のように書き換える。
220
+ ```ruby
221
+ workers Integer(ENV['WEB_CONCURRENCY'] || 2)
222
+ max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
223
+ min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
224
+ threads min_threads_count, max_threads_count
225
+
226
+ preload_app!
227
+ rails_env = ENV.fetch("RAILS_ENV") { "development" }
228
+ environment rails_env
229
+ case rails_env
230
+ when "development"
231
+ port ENV.fetch("PORT") { 3000 }
232
+ when "production"
233
+ bind "unix:///var/www/hangartalk/src/tmp/sockets/puma.sock"
234
+ end
235
+
236
+ pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
237
+ plugin :tmp_restart
238
+
239
+ on_worker_boot do
240
+ # Worker specific setup for Rails 4.1+
241
+ # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
242
+ ActiveRecord::Base.establish_connection
243
+ end
244
+ ```
245
+
246
+ その結果、おそらくnginxへ接続できていない
247
+ ```
248
+ $ curl http://localhost | head
249
+ % Total % Received % Xferd Average Speed Time Time Time Current
250
+ Dload Upload Total Spent Left Speed
251
+ 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
252
+ ```
253
+
254
+ ### EC2内のRails<=>MySQLは失敗していた
255
+ `database.yml`の設定を以下の2通りで試しました。
256
+ ```yml
257
+ production:
258
+ ...
259
+ # socket: /tmp/mysql.sock
260
+ port: 3306
261
+ ```
262
+ それぞれの場合でEC2内で`mysql -u {ユーザー名} -p`でログインを試みたところ、表題と同じエラーが出ました。
263
+ EC2内でもデータベースへの接続に失敗していたことになります。

4

本文修正

2022/05/05 02:18

投稿

hajsu00
hajsu00

スコア151

test CHANGED
File without changes
test CHANGED
@@ -45,7 +45,7 @@
45
45
 
46
46
  server {
47
47
  listen 80;
48
- server_name 3.115.120.160;
48
+ server_name ***.***.***.***;
49
49
 
50
50
  keepalive_timeout 0;
51
51
 

3

タイトルを修正

2022/05/04 07:56

投稿

hajsu00
hajsu00

スコア151

test CHANGED
@@ -1 +1 @@
1
- [Rails]ブラウザからEC2にアクセスしたときだけMySQLが"socket '/tmp/mysql.sock' (2)"になる
1
+ [Rails]ブラウザからEC2にアクセスしたときだけMySQLが"...socket '/tmp/mysql.sock' (2)"エラーになるのを解決したい
test CHANGED
File without changes

2

タイトルを修正

2022/05/04 07:55

投稿

hajsu00
hajsu00

スコア151

test CHANGED
@@ -1 +1 @@
1
- [Rails]ブラウザからEC2にアクセスするとMySQLが"socket '/tmp/mysql.sock' (2)"になる
1
+ [Rails]ブラウザからEC2にアクセスしたきだけMySQLが"socket '/tmp/mysql.sock' (2)"になる
test CHANGED
File without changes

1

本文表現の編集

2022/05/04 05:58

投稿

hajsu00
hajsu00

スコア151

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,7 @@
1
1
  AWS初心者です。
2
- RailsアプリをEC2にデプロイしたいのですが、ブラウザでEC2のIPアドレスにアクセスするとMySQLへの接続エラーが発生します。
2
+ RailsアプリをEC2にデプロイしたいのですが、ブラウザでEC2のIPアドレスにアクセスするとMySQLへの接続エラーが発生して解決できずに困っています。
3
+
3
-
4
+ ご助言をいただけると幸いです。
4
5
 
5
6
  ## 起きている問題
6
7
  ・ブラウザからEC2のIPアドレスにアクセスすると