🐸

AWS EC2 / RDS でWordPressサーバーを立てる(備忘録)

2021/12/12に公開

こちらは、ゆるWeb勉強会@札幌 Advent Calendar 2021 の11日目の記事です。

最近AWSを使い始めいろいろためしためしでわかってきたので自分用のメモとして書きます。細かいところの説明を省いたりしていますが、元気があれば書いていきます、、、

Done is better than perfect....

ちなみにAWS RDSでWordPressをデプロイ といった公式ガイドもあるのですが、こちらPHPのバージョンが7.2だったり、ファイルパーミッション周りでてこずったりしたので記事を書いている次第です。

まだまだ使い始めなのでもっとこうすると良い!やここ間違ってるよ!などコメントいただけると大変うれしいです!

前提条件

名前 内容
リージョン 東京 (ap-north-east-1)
VPC 172.31.0.0 / 16 (Name: wordpress-vpc)
サブネット 172.31.0.0 / 20 (AZ: ap-northeast-1a - Name: sbn1)
172.31.16.0 / 20 (AZ: ap-northeast-1a - Name: sbn2 )
172.31.32.0 / 20 (AZ: ap-northeast-1b - Name: sbn3 )
EC2 インスタンスタイプ t2.micro
EC2 インスタンスイメージ Amazon Linux 2 AMI (HVM) - Kernel 5.10 (x86_64)
RDS インスタンスタイプ db.t2.micro
RDS MySQL
Webサーバー Apache
PHP 8.x (amznリポジトリから取得)

VPC / サブネットの設定

早速やっていきます。まずはネットワーク周りというか基盤のVPC・サブネットから。
ざっくり画像の通りです、IGWやNAT GW の設定は必要ですが、、、
注意点というか気を付けるべき点として以下のことがあげられます。

  • RDSとEC2インスタンスは同じAZ内に立ち上げること
  • RDSを一つのAZ上にあげる場合は、サブネットグループで2つ以上のAZに紐づけられているサブネットを2つ以上指定する必要あり
  • 外部からの接続用に踏み台サーバー(Name: basiton)を作成して、セキュリティグループでSSHのホワイトリストにマイIPを指定しています。

EC2 インスタンスの立ち上げ

  1. Amazon Linux 2 AMI (HVM) - Kernel 5.10 を選択
  2. インスタンスタイプは t2.micro を選択(プラグインを多く入れるのであれば t3a.medium くらいが体感適切 )
  3. インスタンスの詳細設定の内容を以下の通りに設定。
  • 自動割り当てパブリックIPはインスタンスを停止するたび変更されるので、変更されたくない場合は、Elastic IPを別途割り当て(基本追加料金なし)
名前 内容
ネットワーク wordpress-vpc
サブネット sbn-1
自動割り当てパブリックIP 有効
IAMロール AmazonS3ReadOnlyAccessが可能なIAMロールを選択
  1. ストレージは10~20GBくらいの間で設定。無料課金枠の場合は15GBくらいが適切
  2. タグの追加でNameタグを設定


6. セキュリティグループは基本は以下の3つを設定。今回は、SSHのホワイトリスト
は踏み台サーバー(Bastion)のセキュリティグループに紐づける。

7. 確認と作成から踏み台サーバーの公開鍵を選択して、インスタンスを作成

RDSインスタンスを立ち上げる

こちらの記事を参考にRDSインスタンスを立ち上げる

EC2 インスタンスのセットアップ

  1. 踏み台サーバーからSSHでアクセス
  2. 以下のコマンドを実行してyumパッケージをアップデート
# sudo yum update -y && sudo yum upgrade -y
  1. ApachePHPをインストール
// Apacheをインストール
# sudo yum install -y httpd
// PHPをインストール
# sudo amazon-linux-extras install -y php8.0
  1. WordPressをダウンロードして公開用のフォルダへ移動
# cd ~ // 一旦ホームディレクトリに移動
// 日本語最新版をダウンロード
# sudo wget https://ja.wordpress.org/latest-ja.tar.gz 
// ダウンロードした tar.gzを解凍
# tar -xzvf latest-ja.tar.gz
// wordpressフォルダの中身を/var/html/www直下に移動
# sudo cp -r wordpress/* /var/html/www/
  1. WordPressセットアップ
// /var/www/html に移動し、wp-config.phpを作成する
# cd /var/www/html
# sudo cp wp-config-sample.php wp-config.php
// wp-config.phpの中身を書き換える
# sudo vim wp-config.php

中身を以下の通りに書き換える

- define( 'DB_NAME', 'database_name_here' );
+ define( 'DB_NAME', '{データベースの名前}' );

- define( 'DB_USER', 'username_here' );
+ define( 'DB_USER', '{RDS MySQLのユーザー名}' );

- define( 'DB_PASSWORD', 'password_here' );
+ define( 'DB_PASSWORD', '{上記で選択したユーザーのパスワード}' );

- define( 'DB_HOST', 'localhost' );
+ define( 'DB_HOST', '{RDSインスタンスのホスト or アドレス}' );

define( 'DB_CHARSET', 'utf8' );

define( 'DB_COLLATE', '' );
  1. サーバーを起動
# sudo systemctl start httpd
  1. サーバーにアクセスして以上で終了です!

最後に

備忘録がてら書きましたが、不完全な部分も多いとおもうので学びながら改善していきたいと思います!

Discussion