LoginSignup
61

More than 1 year has passed since last update.

posted at

updated at

AWSで基本的なサーバー環境を構築してみました。

はじめに

AWSを使用してEC2とRDSを構築し、EC2のSSH接続とRDSへの接続確認まで行ってみました。その手順の流れを備忘録として残します。
※AWSコンソール画面のスククショは、2020年1月4日時点のものとなります。

構成図

EC2:RDS.png

前提条件

AWSアカウント及びIAMユーザーは作成済みであること。
Mac環境であること。(WindowsだとSSHの接続確認の操作が異なります)

VPCの作成

VPC作成①.png

CIDRブロックの数値は構成図で示している範囲とします。
VPC作成②.png

サブネットの作成

外部接続用のパブリックサブネットを1つとデータベース用のプライベートサブネット2つを作成します。

1.パブリックサブネット

サブネット作成①外部用.png

CIDRブロックの数値はこちらも例で挙げられている範囲とします。
サブネット作成②外部用.png

EC2インスタンス作成時に自動的にパブリックIPアドレスが付与されるよう設定しておきます。
サブネット作成③外部用.png

サブネット作成④外部用.png

2.プライベートサブネット(データベース用)

今回はシングルAZで構成します。ただし、RDSを利用するには、異るAZに属するサブネット2つを用意する必要があるので、DB用のサブネットを2つ作成し、この2つのサブネットは「1a」「1c」と異なったAZを指定します。
また、CIDRブロックの範囲は使用済みの数値は指定できないため範囲内の数値に変更します。(参考記事)
サブネット作成(DB用)①.png

サブネット作成(DB用)②.png

インターネットゲートウェイの作成

作成したVPC内のサーバがインターネットと接続するための出入口を設定します。
igw作成①.png

igw作成②.png

igw作成③.png

igw作成④.png

ルートテーブルの作成

デフォルトでは同じVPC内のものしかアクセスできないため、ルート編集で設定したゲートウェイに紐づいているアクセスの通信を可能にします。
ルートテーブル作成①.png

ルートテーブル作成②.png

ルートテーブル作成③.png

ルートテーブル作成④.png

ルートテーブル作成⑤.png

ルートテーブル作成⑥.png

セキュリティグループの作成

通信の許可設定をEC2用(SSH/HTTP/すべてのICMPIPv4)とRDS用(MYSQL/Aurora)をそれぞれ設定します。ちなみに、EC2のIPv4はpingコマンドで接続状況を確認するためのものです。

1.EC2用

セキュリティグループ(EC2用)①.png

セキュリティグループ(EC2用)②.png

セキュリティグループ(EC2用)③.png

セキュリティグループ(EC2用)④.png

2.RDS用

セキュリティグループ(RDS用)①.png

セキュリティグループ(RDS用)②.png

セキュリティグループ(RDS用)③.png

セキュリティグループ(RDS用)④.png

DBサブネットグループの作成

DBサブネットグループ作成①.png

任意の名前を入力し、作成したVPCと紐付けます。
DBサブネットグループ作成②.png

作成したサブネットが3つありますが、パブリックサブネット(10.0.0.0/24)は削除し、残り2つのプライベートサブネットのみを残して作成します。
DBサブネットグループ作成③.png

RDSの作成

RDS作成①.png

MySQLを選択します。
RDS作成②.png

テスト用のため今回は無料利用枠のみ有効化にチェックを入れています。
RDS作成③.png

任意の名称とパスワードを入力します。
RDS作成④.png

作成したVPC、サブネットグループが紐づけられていることを確認し、アベイラビリティゾーンはap-northeast-1aを選択します。
RDS作成⑤.png

VPCのセキュリティグループは、RDS用に作成したセキュリティグループを紐付けます。
RDS作成⑥.png

今回は初期MySQLデータベースは不要なのでデータベース名は空白にします。
RDS作成⑦.png

その他の設定については今回はデフォルトのままで作成します。
RDS作成⑧.png

EC2の作成

EC2作成①.png

テスト用なのでAMI及びインスタンスタイプは無料利用枠を選択しています。
EC2作成②.png
EC2作成③.png

ネットワーク及びサブネットには作成したVPC及びパブリックサブネットを紐付けます。パブリックIPの自動割り当てはサブネット作成時に設定しているので、自動的に有効になると思いますが、無効になっている場合は有効に変更します。
EC2作成④.png

デフォルトのまま次へ進みます。
EC2作成⑤.png

EC2の名称を設定します。
EC2作成⑥.png

既存のセキュリティグループを選択し、EC2用に作成したセキュリティグループを選択します。
EC2作成⑦.png

入力内容に誤りがないか確認し、EC2を起動します。
EC2作成⑧.png

新しいキーペアを作成しダウンロードすればEC2インスタンスの作成は完了です。
EC2作成⑨.png

EC2へのSSH接続の確認

EC2インスタンスの状態がrunningに変わったことを確認し、IPv4パブリックIPをコピーします。
SSH接続確認①.png

次にターミナル画面に切り替えて、ping + IPアドレスのコマンドを入力し、次の画面が表示されれば接続準備はOKです。接続を切るときはcontrol + cを入力します。

ターミナル.
$ ping 54.65.196.161
PING 54.65.196.161 (54.65.196.161): 56 data bytes
64 bytes from 54.65.196.161: icmp_seq=0 ttl=236 time=14.381 ms
64 bytes from 54.65.196.161: icmp_seq=1 ttl=236 time=15.311 ms
64 bytes from 54.65.196.161: icmp_seq=2 ttl=236 time=14.739 ms
64 bytes from 54.65.196.161: icmp_seq=3 ttl=236 time=13.951 ms

続いてSSHの接続確認を行います。先ほど作成したpemキーを.sshフォルダに移動させます。次のコマンドの手順で入力し、次の結果が表示されればEC2への接続が完了です。

ターミナル.
$ mv Downloads/aws-test.pem .ssh/      #pemキーを.sshフォルダに移動                          
$ sudo chmod 600 ~/.ssh/aws-test.pem    #指定している鍵の権限が広すぎるため変更
Password:〇〇〇〇〇〇〇〇                  #自身のPCのパスワード
$ ssh -i ~/.ssh/aws-test.pem ec2-user@54.65.196.161  #pemキーとパブリックIPを使用

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
8 package(s) needed for security, out of 17 available
Run "sudo yum update" to apply all updates. 

EC2からRDSへの接続確認

ターミナル.
$ sudo yum update -y         #EC2接続時に最初に実行
:
:
完了しました!
$ sudo yum install mysql -y  #MySQLのインストール
:
:
完了しました!

AWSのコンソール画面に戻り、作成したRDSのエンドポイントをコピーします。
RDS接続確認.png

ターミナル.
$ mysql -h aws-test.cl0w7wsj1gla.ap-northeast-1.rds.amazonaws.com -u admin -p  #RDSのエンドポイントとRDS作成時のマスターユーザ名(admin)を使用
Enter password:〇〇〇〇〇〇〇〇                  #RDS作成時のパスワード
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.7.22-log 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)]>     #exitで抜けます

ついでにデフォルトで入っているMariaDBを削除してMySQLのみに変更します。

ターミナル.
$ sudo yum remove mariadb-libs -y  #MariaDBの削除
:
:
完了しました!
$ sudo rm -rf /var/lib/mysql       #一度MySQLも削除
$ sudo yum install mysql -y        #再度MySQLのインストール
:
:
完了しました!
$ sudo yum install -y https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm
:
:
完了しました!
$ sudo yum install -y mysql-community-server
:
:
これらを試行できます: rpm -Va --nofiles --nodigest
$ sudo yum install -y mysql-devel
:
:
完了しました!
$ mysql -h aws-test.cl0w7wsj1gla.ap-northeast-1.rds.amazonaws.com -u admin -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 44
Server version: 5.7.22-log Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

以上で、今回の構成図が完成となります。

参考記事

https://yamagata.int21h.jp/tool/cidrcalc/
https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce
https://qiita.com/nave-m/items/68425f476b254a1a47b0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
61