質問編集履歴
6
本文追記
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
進捗追加
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
本文修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -45,7 +45,7 @@
|
|
45
45
|
|
46
46
|
server {
|
47
47
|
listen 80;
|
48
|
-
server_name
|
48
|
+
server_name ***.***.***.***;
|
49
49
|
|
50
50
|
keepalive_timeout 0;
|
51
51
|
|
3
タイトルを修正
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
タイトルを修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
[Rails]ブラウザからEC2にアクセス
|
1
|
+
[Rails]ブラウザからEC2にアクセスしたときだけMySQLが"socket '/tmp/mysql.sock' (2)"になる
|
test
CHANGED
File without changes
|
1
本文表現の編集
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アドレスにアクセスすると
|