😃

EC2とRDSでWordPressをインストールしてみる

2025/01/07に公開

はじめに

AWSでWordPressをインストールする方法は、LightsailやEC2を使う方法がありますが、今回はLinuxやAWSリソースの勉強を目的としているので、EC2+RDSの構成で作成していきます。
こんな感じに作っていきます。

  • サーバ
    • EC2
      • AMI:Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
      • インスタンスタイプ:t2.micro
  • ソフトウェア
    • Apache
    • WordPress
  • DB
    • MySQL
  • DNS
    • お名前.comで購入

VPCの作成

  • ap-northeast-1リージョンにVPCを作成する。
  • IPv4 CIDRは10.0.0.0/16で設定。

サブネットの作成

  • アベイラビリティゾーンap-northeast-1aに10.0.10.0/24でパブリックサブネットを作成する。
  • アベイラビリティゾーンap-northeast-1aに10.0.20.0/24プライベートサブネットを作成する。

ルーティングの設定

パブリックサブネットをインターネットと接続させる。

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

  • インターネットゲートウェイを作成し、上記で作成したVPCにアタッチする。

ルーティングテーブルの設定

  • ルートテーブルを上記で作成したVPCで新規作成する。
  • サブネットの関連付けからパブリックサブネットを関連づける。
  • ルートの編集から送信先を0.0.0.0/0、ターゲットをインターネットゲートウェイを指定する。

EC2の設定

下記の要件で設定する。

  • AMI:Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
  • インスタンスタイプ:t2.micro
  • キーペアを任意の場所に保存。

Apacheのインストール

  • 秘密鍵のパーミッション変更しておく。
$ chmod 600 鍵のディレクトリ
  • ssh接続をする。
$ ssh -i 鍵のディレクトリ ec2-user@パブリックIPアドレス
  • パッケージをアップデートしておく。
$ sudo yum update -y
  • Apacheのインストール。
$ sudo yum -y install httpd
  • Apacheを自動起動させる。
$ sudo systemctl enable httpd.service
  • Apacheを常時起動できているか確認。
$ sudo systemctl is-enabled httpd.service

セキュリティグループの設定

  • タイプHTTP、ソース任意の場所に設定し、httpでアクセスできるようにする。
  • パブリックIPアドレスを検索し、Apacheのデフォルトページが表示されればOK。

Elastic IPアドレスの設定

  • Elastic IPアドレスを確保し、EC2インスタンスに割り当てる。
    ※割り当てていないと有料になる。使わない場合、解放しておく。

ドメインの登録

ホストゾーンの作成

  • パブリックホストゾーンで購入したドメイン名を指定。
  • ドメインのネームサーバをRote53に変更する。
※ドメインのネームサーバを調べるコマンド
$ dig ドメイン名 NS +short
  • Rote53コンソールからホストゾーンのNSの値をお名前.comの管理画面で設定する。
    ※設定反映に24時間〜72時間ほどかかる。

レコードセットの作成

  • AレコードでElastic IPを設定する。
  • 設定したドメインでApacheのデフォルト画面が見えればOK。

RDSの設定

マルチAZでサブネットを作成

RDS作成の際、マルチAZでサブネットを作成しておかなければいけない。

  • 別のアベイラビリティゾーンにプライベートサブネットを作成する。

セキュリティグループの設定

EC2からのみRDSに接続できるように設定する。

  • タイプ:MYSQL/Aurora、ソース:EC2インスタンスのセキュリティグループを指定して作成。
    ソースにインスタンスのセキュリティグループを設定することでインスタンスをまとめて指定できる。

サブネットグループの設定

  • 作成した2つのプライベートサブネットを指定して作成。

パラメータグループの設定

  • mysql8.0を指定。
    編集からパラメータを変更できる。

オプショングループの設定

  • mysql8.0を指定。
    デフォルトのグループも追加されるが、追加したものを使用していく。

データベースの作成

  • MySQL8.0.40、開発テスト用、インスタンスクラス:db.t3.micro、ストレージタイプ:汎用SSDなどを設定。
    UTC時間は日本時間から-9時間の値。(日本時間:4:00の場合、19:00を指定)

EC2からRDSに接続

  • EC2にSSHでログインし、MySQLをインストールする。
$ sudo yum -y install mysql
  • 接続する。
$ mysql -h RDSのエンドポイント -u ユーザー名 -p

MySQLの設定

データベースとユーザーを追加する

  • MySQLに接続。
$ mysql -h RDSのエンドポイント -u ユーザー名 -p
  • データベースの作成。
$ CREATE DATABASE 作成したいDB名 DEFAULT CHARACER SET utf8 COLLATE utf8_general_ci;
  • データベースの作成ができたか確認する。
$ SHOW DATABASES;
  • ユーザーを作成する。
$ CREATE USER '作成したいユーザー名'@'%' IDENTIFIED BY '設定したいパスワード';
  • ユーザーに権限を付与する。
$ GRANT ALL ON ユーザー名.* TO 'ユーザー名'@'%';
  • 設定の反映。
$ FLASH PRIVILEGES;
  • 設定(ユーザーとその権限)の確認。
$ SELECT user , host FROM mysql.user;
  • 追加したユーザーでログインできるか確認。
$ mysql -h RDSのエンドポイント -u 作成したユーザー名 -p

WordPressをインストール

phpモジュールなどをインストール

  • php7.2をamazon-linux-extraからインストール。
$ sudo amazon-linux-extras install -y php7.2
  • php-mbstringをインストール。
$ sudo yum install -y php php-mbstring
  • ホームディレクトリに最新のWPファイルをダウンロード。
$ cd ~
$ wget https://ja.wordpress.org/latest-ja.tar.gz
  • tar.gzを解凍。
$ tar xzvf latest-ja.tar.gz
  • wordpressディレクトリ内のファイルを/var/www/html/にコピー。
$ cd wordpress
$ sudo cp -r * /var/www/html/
  • apacheからwordpressのファイルを参照できるように所有者を変更。
$ sudo chown apache:apache /var/www/html/ -R
  • apacheの再起動。
$ sudo systemctl restart httpd.service
  • WordPressの設定をして、管理画面に入ったら成功!

Discussion