AWS を使用して Rails 6 + MySQL + Nginx という基本的なよくあるサーバーの構築方法をご紹介します。
1つの記事に書くには、長くなるので3部作でお送りいたします。
- ネットーワーク環境編
- データベース編 ← 今回はここ
- サーバー編
データベースサーバーは、Railsからのアクセスだけに制限してプライベートなものにするため
プライベートなサブネットにMySQLのデータベースサーバーを作成します。
データベースサーバーは、AWSのRDSを使用します。
プライベートなサブネットにデータベースを作成することで、同じVPC内からのみ通信できるようになり、セキュアなものにできます。
Step.1 プライベートなサブネットの作成
ネットワーク環境編で作成したサブネットと別で、もう2つサブネットの作成をします。
※2つ作成するのは、次の工程RDSのマルチ-AZによる仕様のためです。
各項目適当なもの入力
別のアベイラビリティーゾーンでもう1つ作成します。
作成したサブネットがプライベートになっているか確認してみます。
それと、ルートにインターネットゲートウェイがアタッチされていないことを確認しておきます。
アタッチされているとインターネットからの接続ができてしまうので、プライベートでは無くなってしまいます。逆に、アタッチしていないとインターネットからの接続ができないようになります。
されていないので、プライベートなサブネットであると確認がとれました。
※アタッチされているとこのようにインターネットゲートウェイがアタッチされていると表示されます。
Step2. データベース作成
データベースはAWSのRDSのMySQLを使用します。
※RDSはデータベースのCPU使用率・空きストレージなど可視化できる便利なサービスです。
RDSのダッシュボードからデータベースの作成していきます。
データベースの作成方法は標準作成、エンジンタイプはMySQLを選択します。
無料利用枠内で使用したいのでテンプレートは無料利用枠を選択しておきます。
データベースへの認証情報を設定します。
※認証情報は忘れないようにしてくださいね。
DBインスタンスサイズ・ストレージはデフォルトの設定のままでいきます。
データベースの接続設定をしていきます。
追加設定のログのエクスポートでログをCloudWatchで見れるよなりますので、チェックを入れおきましょう。
これで、データベースの作成をしましょう。
Step3. データベースのセキュリティ設定
今回作成したEC2インスタンスからの通信のみ通すような設定をしていきます。
先ほど、作成したセキュリティーグループのインバウンドルールを編集します。
EC2インスタンスのセキュリティーグループを選択することで、EC2インスタンスが許可した通信はデータベースサーバーへの通信もできるようにすることができます。
Step4. EC2からデータベースサーバーに接続
EC2インスタンスから、mysqlコマンドで接続できるか確認します。
まずは、mysqlをインストールしておきます。
$ sudo yum install -y mysql
以下のコマンドでデータベースに接続できます。
$ mysql -u root -p -h ’データベースのエンドポイント’
ユーザーとパスワードは、データベース作成したさいの認証情報になります。
エンドポイントは、RDSの概要から確認できます。
$ mysql -u root -p -h sample-rds.csrgnfmegbh3.ap-northeast-1.rds.amazonaws.com
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.20 Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
実行できればデータベース作成完了です。
お疲れ様でした。
コメント