質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

解決済

1回答

5926閲覧

Unknown MySQL server host 'db' の解決

noah3223haon

総合スコア12

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2022/04/21 03:31

前提・実現したいこと

EC2にデプロイをしたのですが、ページが表示されず
The page you were looking for doesn't exist. と表示されていました。
unicorn.stderr.logを見たところ、
Unknown MySQL server host 'db' (-2) (ActiveRecord::ConnectionNotEstablished)
とあったのでこのエラーを解決することでデプロイしたものが表示されると考えています。

エラー文から察するにdatabase.ymlの記述に問題があると考えていますが解決方法がわかりません。

懸念点として、下記のサイトを参考に作業を進めているのですがDBをMariaDBではなくMySQLを使用しているため、もしそれが原因の場合はMariaDBを使用してくださいと回答をいただけると嬉しいです。
https://pikawaka.com/rails/ec2_deploy

発生している問題・エラーメッセージ

イメージ説明

unicorn.stderr.log

1I, [2022-04-21T00:17:16.470564 #5809] INFO -- : Refreshing Gem list 2I, [2022-04-21T00:17:17.358938 #5809] INFO -- : unlinking existing socket=/var/www/rails_portfolio/tmp/sockets/unicorn.sock 3I, [2022-04-21T00:17:17.359138 #5809] INFO -- : listening on addr=/var/www/rails_portfolio/tmp/sockets/unicorn.sock fd=9 4E, [2022-04-21T00:17:17.374145 #5809] ERROR -- : Unknown MySQL server host 'db' (-2) (ActiveRecord::ConnectionNotEstablished) 5/home/ec2-user/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activerecord-6.1.5/lib/active_record/connection_adapters/mysql2_adapter.rb:45:in `rescue in new_client'

該当のソースコード

database.yml

database.yml

1default: &default 2 adapter: mysql2 3 encoding: utf8mb4 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 username: root 6 password: 7 host: localhost 8 9development: 10 <<: *default 11 database: myapp_development 12 host: db 13 username: root 14 password: password 15 16test: 17 <<: *default 18 database: myapp_test 19 host: db 20 username: root 21 password: password 22 23production: 24 <<: *default 25 database: myapp_production 26 username: root 27 password: <%= ENV['DATABASE_PASSWORD'] %> 28 socket: /var/lib/mysql/mysql.sock

docker-compose.yml

docker

1version: '3' 2services: 3 db: 4 image: mysql:8.0 5 environment: 6 MYSQL_ROOT_PASSWORD: 7 MYSQL_DATABASE: root 8 MYSQL_ALLOW_EMPTY_PASSWORD: "yes" 9 ports: 10 - "3306:3306" 11 volumes: 12 - ./tmp/db:/var/lib/mysql 13 14 web: 15 build: . 16 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 17 volumes: 18 - .:/myapp 19 ports: 20 - "3000:3000" 21 depends_on: 22 - db

自分で調べたことや試したこと

調べたこと

  • Dockerの環境でページが表示されるのは確認済み
  • Docker内のMySQLにてmyapp_development, myapp_testを確認

mysql

1mysql> show databases; 2+--------------------+ 3| Database | 4+--------------------+ 5| information_schema | 6| myapp_development | 7| myapp_test | 8| mysql | 9| performance_schema | 10| root | 11| sys | 12+--------------------+ 137 rows in set (0.01 sec)
  • EC2内のMySQLにてmyapp_productionを確認

mysql

1mysql>show databases; 2+--------------------+ 3| Database | 4+--------------------+ 5| information_schema | 6| myapp_production | 7| mysql | 8| performance_schema | 9| sys | 10+--------------------+ 115 rows in set (0.00 sec)

試したこと

  • database.ymlのproductionにhost: dbを追加

database.yml

12production: 3 <<: *default 4 database: myapp_production 5 host: db #ここを追加 6 username: root 7 password: <%= ENV['DATABASE_PASSWORD'] %> 8 socket: /var/lib/mysql/mysql.sock

develop,testに記述してあったため記述不足かと思い追加したが、
master failed to start, check stderr log for detailsと表示され、デプロイ自体ができなくなったため削除。

使っているツールのバージョンなど補足情報

バージョン
macOS Monterey 12.3.1
mysql Ver 8.0.28
unicorn-5.4.1

補足

  • Gemfile
source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.7.5' gem 'rails', '~> 6.1.5' gem 'mysql2', '~>0.5.3' gem 'puma', '~> 5.0' gem 'sass-rails', '>= 6' gem 'webpacker', '~> 5.0' gem 'turbolinks', '~> 5' gem 'jbuilder', '~> 2.7' gem 'bootsnap', '>= 1.4.4', require: false group :development, :test do gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] end group :development do gem 'web-console', '>= 4.1.0' gem 'rack-mini-profiler', '~> 2.0' gem 'listen', '~> 3.3' gem 'spring' gem 'rspec-rails' end group :production do gem 'unicorn', '5.4.1' end group :test do gem 'capybara', '>= 3.26' gem 'selenium-webdriver', '>= 4.0.0.rc1' gem 'webdrivers' gem 'rspec-rails' end gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
  • MariaDBとMySQLの状況

MariaDB

1$ sudo systemctl status mariadb 2Unit mariadb.service could not be found.

MySQL

1sudo systemctl status mysqld 2● mysqld.service - MySQL Server 3 Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) 4 Active: active (running) since Wed 2022-04-20 23:09:18 UTC; 3h 30min ago 5 Docs: man:mysqld(8) 6 http://dev.mysql.com/doc/refman/en/using-systemd.html 7 Process: 2911 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) 8 Main PID: 2935 (mysqld) 9 Status: "Server is operational" 10 CGroup: /system.slice/mysqld.service 11 └─2935 /usr/sbin/mysqld 12Apr 20 23:09:15 ip-172-31-2-166.ap-northeast-1.compute.internal systemd[1]: Starting MySQL Server... 13Apr 20 23:09:18 ip-172-31-2-166.ap-northeast-1.compute.internal systemd[1]: Started MySQL Server.
  • このサイトを参考に作成したものをデプロイしようとしています。

docker-composeでRails 6×MySQLの開発環境を構築する方法
https://tmasuyama1114.com/docker-compose-rails6-mysql-development/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Unknown MySQL server host 'db' (-2) (ActiveRecord::ConnectionNotEstablished)

メッセージの通り、'db'というホスト名のMySQLサーバが不明と言われているので、適切なホスト名に変更しましょう。

すべて同一サーバで構成されているのなら、'localhost'でよいと思います。

投稿2022/04/21 05:23

yukky1201

総合スコア2751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noah3223haon

2022/04/22 03:07

回答していただきありがとうございます! 教えていただいたことを踏まえて自分で調べたことで解決しました!
yukky1201

2022/04/22 03:25

解決方法が私の回答とは違うのでしたら、その内容を記載頂きたいです 今後この質問にたどり着いた方の助けになるようにという観点です
noah3223haon

2022/04/27 04:19

返信に気づかずに申し訳ありません! docker-compose.ymlやdatabase.ymlを見直した後、dbの接続に関するエラーが出ました。 エラー文を調べ試したのですが解決せず、最終的にgit cloneの段階からやり直すことで解決しました。 やり直す途中、credentialやmaster.keyの設定で手間取ったのでもしかしたらやり直す前にその設定がうまく行っていなかった可能性があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問