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

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

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

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

Ruby on Rails

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

640閲覧

AWS EC2からRDSを使った、Railsアプリケーションの起動ができません。

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

Ruby on Rails

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2022/08/24 15:22

前提

GitHub上に展開されているRailsアプリケーションをEC2インスタンスとRDSを使用して、デプロイさせたいです。
必要な以下のパッケージをEC2インスタンスにインストールし、RDSとの接続を確認し、データベースを作成しました。
ですが、指定のポートで接続をしているにも関わらずエラーが発生してしまい上手にデプロイできません。

〇環境について
・仮想サーバー:EC2インスタンス
(Webアプリケーションサーバーを想定しています)
・DBサーバー:RDS ポート:3306
シングルAZ構成です。

(※各セキュリティグループはIPv4,6それぞれフルオープンにしています)

ruby:2.6.3
Rails:6.1.3.1
Node:v15.14.0
yarn:1.22.18

DB エンジン:MySQL

わからないなりに調べて進めていたのですが、今回のエラーについては解決の糸口が見えないため、相談させていただきました。
よろしくお願いします。

実現したいこと

本件のエラーを解決したうえで、RailsアプリケーションをEC2上で起動させたいです。

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

$rails s -b abc-hogehoge-tech-20220731.gdlffleafllflslfj.ap-northeast-1.rds.amazonaws.com

Cannot assign requested address - bind(2) for "abc-hogehoge-tech-20220731.gdlffleafllflslfj.ap-northeast-1.rds.amazonaws.com" port 3000 (Errno::EADDRNOTAVAIL)

試したこと

以下、ポートを指定して実行して挙動を確認してみました。
$rails s -b -p 3306 abc-hogehoge-tech-20220731.gdlffleafllflslfj.ap-northeast-1.rds.amazonaws.com

Cannot assign requested address - bind(2) for "abc-hogehoge-tech-20220731.gdlffleafllflslfj.ap-northeast-1.rds.amazonaws.com" port 3306 (Errno::EADDRNOTAVAIL)

操作ログ

■1<Railsアプリケーションの環境を準備する>
①gitのインストール
②rbenvのインストール
③ruby-buildのインストール
④次にrbenv の初期化スクリプトを .bash_profile へ追加するコマンドを入力。

・echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
・echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
・source ~/.bash_profile $ rbenv --version

⑤rbenv、Rubyのインストール
rbenv install 2.6.3
⇒エラー対応で以下の操作を実施。
・sudo yum install -y openssl-devel
・sudo yum install -y patch
・sudo yum install gcc
・sudo yum install readline-devel

⇒Installed ruby-2.6.3 to /home/ec2-user/.rbenv/versions/2.6.3⇒インストール成功

⑥Rubyのバージョン確認
⇒エラー対応で以下の操作を実施。
・rbenv local 2.6.3

⑦RubyGems(gemコマンド)自体のバージョンアップ

■2:Railsアプリケーションの入手
①GitHubから「git cone」でアプリケーションを入手。
②bundlerを使ってGemfileからgemをインストール。
⇒エラー対応で以下の操作を実施。
・sudo yum install mysql-devel
・sudo yum install -y gcc-c++

③Railsをインストール
<コマンド>gem install rails

■3:yarnのインストール
①nvmインストール
・source ~/.nvm/nvm.sh
・vi /home/ec2-user/.bash_profile
【参考】https://www.aska-ltd.jp/jp/blog/154

・nvm ls-remote
・nvm install 15.14.0

②使用するnvmの指定
・nvm use 15.14.0

③yarnのインストール
・npm install -g yarn

■4:database.ymlの編集

①以下のように編集

# MySQL. Versions 5.5.8 and up are supported. # # Install the MySQL driver # gem install mysql2 # # Ensure the MySQL gem is defined in your Gemfile # gem 'mysql2' # # And be sure to use new-style password hashing: # https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html # default: &default adapter: mysql encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: admin password: *********** port : 3306 host : abc-hogehoge-tech-20220731.gdlffleafllflslfj.ap-northeast-1.rds.amazonaws.com development: <<: *default database: raisetech_live8_sample_app_development # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: raisetech_live8_sample_app_test # As with config/credentials.yml, you never want to store sensitive information, # like your database password, in your source code. If your source code is # ever seen by anyone, they now have access to your database. # # Instead, provide the password or a full connection URL as an environment # variable when you boot the app. For example: # # DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" # # If the connection URL is provided in the special DATABASE_URL environment # variable, Rails will automatically merge its configuration values on top of # the values provided in this file. Alternatively, you can specify a connection # URL environment variable explicitly: # # production: # url: <%= ENV['MY_APP_DATABASE_URL'] %> # # Read https://guides.rubyonrails.org/configuring.html#configuring-a-database # for a full overview on how database connection configuration can be specified. # production: <<: *default database: raisetech_live8_sample_app_production

②データベースの作成
・bundle exec rails db:create
・bundle exec rails db:migrate

③本エラーにぶつかりました。

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

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

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

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

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

guest

回答1

0

起動するコマンドのオプション指定が間違っています。

-bで指定するのはバインディングアドレスで、RailsがどのIPアドレスからの接続を受け付けるかを指定するオプションです。DBのホスト名を指定したとしてもDB側からアクセスは来ないですし、そもそもホスト名での指定はできないからエラーになってるんじゃないですかね?
-pはRails serverを起動する時にRails serverが使用するポートを指定するオプションです

いずれもRDSは関係ありません。単純にオプション指定が間違ってるせいだと思います。
ポート指定は既に使われているポートと重複してなければエラーにならない(ただし、3306はMySQLが一般的に使用するポートなので指定すべきではない)ですが、ホスト名のほうがおかしいと思われます。

-bにどこかのIPアドレスを指定することでアクセス制限ができるでしょうけど、EC2なのでアクセスの制御はセキュリティグループに任せて-b 0.0.0.0でよいと思います(必要があればセキュリティグループの方でちゃんと絞ってください)

参考
rails sとrails server -b 0.0.0.0の違い
Railsドキュメント

投稿2022/08/24 17:09

yu_1985

総合スコア7440

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

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

退会済みユーザー

退会済みユーザー

2022/08/27 06:22

返信が遅れてしまい、失礼しました。 バインディングアドレスについて、ご教示いただきありがとうございます。 ご説明もあり、理解することができました。 教えていただいたことを踏まえて、「rails s -b 0.0.0.0」でデプロイしてアプリケーションに接続しようとしてみましたが、ページに到達しないと出てきてしまいます。 ~エラー文~ 申し訳ございません。このページに到達できませんhttp://0.0.0.0:3000/ の Web ページに問題が発生しているか、新しい Web アドレスに完全に移動された可能性があります。 ERR_ADDRESS_INVALID ~エラー文~ ネットワーク側に問題があるのかな、と考えながら見直しています。。。
yu_1985

2022/08/27 13:17

書いた通り、バインディングアドレスはどのIPアドレスからの接続を受け付けるかのパラメータでしかなく、バインディングアドレスに設定したIPにアクセスしたところで意味がありません(たまたま同じことはありますが) 0.0.0.0は任意のIPアドレスを意味します。 https://ja.m.wikipedia.org/wiki/0.0.0.0 つまり、0.0.0.0にアクセスしたところで何も返ってきません。 ちゃんとRailsを起動したホストにアクセスしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問