AWS初心者がWordPressをEC2&RDSで立ち上げる
AWS歴3日を達成したのでさくらサーバで公開していたポートフォリオサイトをAWSに移行しようと思います。移行するポートフォリオサイトはこちら。
事前準備
AWSアカウントを作成する。
AWSアカウント登録
上記のリンクからサクッと登録します。登録出来たらログインしましょう。
今回の実装内容
- VPCでポートフォリオサイト用のネットワークを作成する。
- EC2でWebサーバーを立てる。
- RDSでDBサーバーを立てる。
構成図書いたのが初めてなのでおかしな点があれば、ご指摘いただけるとありがたいです。
VPC構築
前チャプターで示した通りにVPCを構築します。
VPCを作成
右上のVPCを作成という箇所から作成できます。
今回は、名前を「portfolio-site」、IPアドレスを「10.0.0.0/16」でいきます。
パブリックサブネットを作成
次にWebサーバーを配置する用のサブネットを作成します。
左上のサブネットの作成という箇所から作成できます。
名前は「portfolio-public」、CIDRブロックは「10.0.1.0/24」でいきます。
パブリックサブネットをインターネットと接続する。
Amazon VPCでは特定のサブネットをインターネットに接続する場合にはインターネットゲートウェイを使います。
右上のインターネットゲートウェイの作成という箇所から作成します。
作成出来たら、作成したインターネットゲートウェイをVPCにアタッチします。
設定画面では最初に作成したVPCを選択してください。
最後にパブリックサブネットのデフォルトゲートウェイをインターネットゲートウェイに設定します。
ルートテーブルを作成します。
作成したルートテーブルをパブリックサブネットに関連付けます。
0.0.0.0/0の時にインターネットゲートウェイに転送されるようにします。
ルートの編集→ルートの追加→送信先を「0.0.0.0/0」にターゲットを作成したインターネットゲートウェイに設定すればOKです。
プライベートサブネットを作成
パブリックサブネットを作成したときと方法は同じです。
今回はCIDRブロックを「10.0.2.0/24」,「10.0.3.0/24」にそれぞれ設定します。
注意点としては二つを異なるアベイラビリティーゾーンに設定することです。
プライベートサブネットはインターネットには接続しないのでデフォルトのルートテーブルを用います。
EC2構築
前チャプターで作成したパブリックサブネットにWebサーバーを立てます。
手順としては、EC2インスタンス作成→sshで接続してPHP,Apacheをインストールします。
EC2インスタンスを作成する
右上のインスタンスを起動という箇所から作成します。
今回はAMIを「Amazon Linux 2」、インスタンスタイプを「t2.micro」とします。
インスタンスの詳細設定ではネットワーク、サブネットをそれぞれ作成したVPC、パブリックサブネットに設定します。
プライベートIPアドレスも設定するためにネットワークインターフェースのプライマリIPには「10.0.1.10」を設定します。
セキュリティグループの設定では名前を「portfolio-web-sg」とします。
最後まで進むとキーペアの設定になります。ここでは新しく作成します。
キーペアはsshでインスタンスにログインするときなどに必要になります。
EC2インスタンスのパブリックIPアドレスを固定する
EC2インスタンスが作成できましたが、このままだと起動のたびにパブリックIPアドレスが変わってしまうので固定化します。
右上のElastic IPアドレスの割り当てでElastic IPを確保します。設定はデフォルトのままでいきます。
次にEC2インスタンスと関連付けます。Elastic IPを選択した状態でアクションからElastic IP アドレスの関連付けを選びます。
先ほど作成したEC2インスタンスを選択し、関連付けます。
以上でパブリックIPアドレスが固定されました。
EC2インスタンスにApache、PHPをインストールする。
EC2インスタンスにApacheなどのソフトをインストールするためにはsshでサーバーにログインしてコマンドを打ちます。
-
SSH接続する
EC2インスタンスのパブリックIPアドレスを確認します。
今回は「54.150.74.192」なのでここにsshで入ります。
私はWindowsなのでTera Term使おうと思います。
こんな感じで。デフォルトで「ec2-user」というユーザーが用意されているのでそれを使いましょう。
秘密鍵はEC2インスタンスを作成するときにダウンロードしたものを選択してください。
SSHでログイン出来ました。 -
Apacheをインストールする
sudo yum install -y httpd
こんな感じのコマンドでインストール出来ます。管理者権限で実行するようにしましょう。
sudo systemctl start httpd
Apacheを起動します。
あとはEC2インスタンスでポート80番を開いてあげればOKです。
EC2インスタンスに関連づいているセキュリティグループにHTTPのルールを追加してあげます。
こんな感じ。ブラウザでEC2インスタンスのパブリックIPアドレスを開くと、、
Webサーバーとして機能していることが分かります。 -
PHP,関連ライブラリをインストールする。
Apacheと同様にコマンドでインストールしますが、一点注意点があります。
現在のWordPressはPHP5.6.20移行でしか動作しないので次のコマンドでアップデートしてあげます。
sudo amazon-linux-extras install php7.3
あとはApacheと同様にyumコマンドでインストールします。
sudo yum -y install php php-mbstring
以上でEC2構築は完了です。
RDS構築
プライベートサブネットにRDSを用いてDBサーバーを構築します。
サブネットグループを作成する
右上のサブネットグループの作成を押します。
設定は下のようにします。
二つ以上の異なるアベイラビリティゾーンが必要になるので、「10.0.2.0/24」「10.0.3.0/24」の二つを選んであげましょう。
データベースを作成する
右上のデータベースの作成を押します。
今回はDBエンジンとしてMariaDBを選択します。(MySQLとかでもOK)
残りの設定項目は下記のようにします。
VPC接続では今回使用するVPCを選択し、サブネットグループは先ほど作成したサブネットグループを選択します。
パブリックアクセスはなしにします。
セキュリティグループも新規作成で今回は「portfolio-db-sg」としてあげます。
アベイラビリティ-ゾーンはEC2インスタンスと同じにしてあげましょう。
インスタンス>ネットワーキングで確認できます。
追加設定ではデータベース名を指定します。
今回は「portfolio_site_db」とします。
データベースの作成が出来ました。右上の認証情報の表示からパスワードを確認しておきましょう。
EC2インスタンスからデータベースに接続できるようにする
データベースを作成しましたがこのままだとEC2インスタンスから接続が出来ません。
作成したDBに紐づくセキュリティグループを変更してあげましょう。
セキュリティグループのインバウンド設定を開きます。
(セキュリティグループがわからない場合はDBインスタンスの接続とセキュリティにあるリンクから飛びましょう。)
インバウンドルールを編集します。
下記の画像の用に設定します。ここでソースにはEC2インスタンスに紐づくセキュリティグループを指定します。
(デフォルトであったルールは削除しましょう)
以上でデータベースの構築が完了しました。
EC2インスタンスからmysqlコマンドでログインしてデータベースが存在することが確認できます。
(※EC2インスタンスにデフォルトでmysqlコマンドは入っていません。別途インストールする必要があります。)
WordPressをインストールする
ここまで来たら後はWordPressをインストールするだけです。
EC2にSSHでログインします。
- 適当なディレクトリで下記コマンドを実行します。
sudo wget https://wordpress.org/latest.tar.gz
- ダウンロードしたファイルを下記コマンドで展開します。
sudo tar xzvf latest.tar.gz
- 生成されたwordpressをApacheの取り扱えるディレクトリに移動します。
sudo mv wordpress/* /var/www/html/
- 最後にApacheユーザーに、/var/www/htmlディレクトリ書き込み権限を与える
sudo chown apache.apache -R /var/www/html sudo chmod +w -R /var/www/html
以上でWordPressのインストールが完了しました。
この先やること
- 既存WordPressサイトを移行
- お名前.comからAWSに独自ドメインを移行
- Route53でパブリックIPアドレスに独自ドメインを割り当てる
- SSL/TLSで暗号化通信を実現する。
メモ
RDS周りは初めて触ったので少し大変でした。