EC2(RHEL8)単体でWordPressを構築する

はじめに

こんにちは。あつしです。

2回に分けて書いていこうと思うのですが、AWSのEC2インスタンス単体で、WordPressを構築してみようと思います。

以下のようなことをお考えの方々に、参考になればと思っています。

  1. 個人で運営しているブログなので、高可用性が必要ない
  2. AWSの料金をできる限り低く抑えたい

①についてですが、AWSの単一AZ(アベイラビリティゾーン)で稼働するWordpressとなるので、もしそのAZに障害があったら、Wordpressは使用できなくなります。
※AZはひとつのデータセンターのようなものです。

②についてですが、WEBサーバーとデータベースを分割して構築するのがAWSのベストプラクティスとなっていますが、本件ではRDSを使用しません
つまり、WEBサーバーとDBサーバーがひとつのEC2インスタンスに集約することとなります。
これにより、比較的料金が割高のRDSを使用しないことで、少しでも料金を削減することができます。(これでもレンタルサーバーの方がコスパは良いですが。。。)

使用するAWSサービス

使用するAWSサービスは以下の通りです。

  • VPC
  • EC2
  • EBS(EC2インスタンスのルートボリュームとして使用)

rootではない一般ユーザーに権限を与えて構築するので、IAMも使用していますが、Wordpressサーバーの動作には直結しないので、除外しました。

構成図

本件のネットワーク構成図を超簡略化して書いてみると、以下のようになります。

メインはEC2の中での作業になります。

EC2の中に、Apache、MySQL、PHPそしてWordpressモジュールを配置してWordpressサーバーとするのが目的です。

構成図(超簡略版)

EC2の構築

すでにEC2インスタンスは作成されているものとして始めます。

EC2インスタンスの構築については、下の記事で詳しく書いておりますので、参考にしていただければと思います。

EC2インスタンスがインターネットに繋がるまでを図解する②

Wodpressの要件

2021/8/23現在、Wordpressに必要なPHPとデータベースの要件は以下のようになっています。

本記事で扱うバージョンとあわせて表にまとめます。

モジュール 必要バージョン 本記事で使用するバージョン
PHP 7.4 以上 PHP 7.4.6
データベース MySQL バージョン 5.6 以上、または MariaDB バージョン 10.1 以上 MySQL 8.0.21
WEBサーバー ApacheやNginxが推奨 Apache 2.4.37

参考サイト:要件 | WordPress.org 日本語

WordPressの構築(途中まで)

Apacheのセットアップ

yumでApacheをインストール

  1. 「yum install httpd」でyumコマンドを使用して、Apahcheをインストールできます。(特にレポジトリの追加などは必要ありませんでした)
  2. Apacheがインストールされたことを確認します。バージョン2.4.37がインストールされています。

Apacheサービスの起動と有効化

  1. サービスの起動や停止は「systemctl」コマンドで行います。「systemctl start httpd」でApacheを起動します。
  2. 「systemctl enable httpd」で自動起動を有効化します。有効化しておけば、EC2を再起動しても自動的にApacheが起動します。
  3. 「systemctl status httpd」でApacheサービスの状態を確認します。「Active」という表記で起動していることがわかります。「enabled」という表記で、自動起動が有効であることがわかります。

MySQLのセットアップ

MySQLのレポジトリのインストール

上のURLは、MySQL Yum Repositoryから確認したものです。(Red Hat Enterprise Linux 8 / Oracle Linux 8 (Architecture Independent), RPM Packageの[Download]ボタン)

yumでMySQLサーバーをインストール

  1. 「yum install mysql-server」でMySQLをインストールします。(「mysql-community-server」ではありません!)

MySQLのサービスの起動と有効化

  1. 「systemctl start mysqld」でサービス起動。
  2. 「systemctl enable mysqld」でサービス有効化。(サーバー再起動しても立ち上がってくるようにする)
  3. 「systemctl status mysqld」でサービスの状態確認。

MySQLのrootのパスワード設定

インストール直後は、MySQLのrootユーザーのパスワードが設定されていないので、設定します。

  1. 「mysql -u root」でパスワード無しでログインします。
  2. 「ALTER USER ‘root’@’localhost’ identified BY ‘XXXXXXXXXX‘;」(XXXXXXXXXXにはrootのパスワードを指定します)
  3. 「flush privileges;」で設定を反映します。
  4. 「mysql -u root -p」でrootでパスワードありでログインします。
  5. 「Enter password:」となったら先ほど指定したrootのパスワードを入力します。
  6. rootでMySQLにパスワードありでログインできることを確認します。

WordPress用データベースとユーザーの作成

  1. MySQLにrootで接続します。
  2. 「show databases;」で現在のデータベースの一覧を確認します。
  3. 「create database wordpress;」でwodpressという名前のデータベースを作成します。(Wordpressで使用するデータベースです)
  4. 「show databases;」でデータベースの一覧を取得し、「wordpress」データベースが作成されていることを確認します。
  5. 「create user ‘wpuser’@’%’ identified by ‘XXXXXXXXXX‘;」(XXXXXXXXXXはパスワード)で新たに「wpuser」というユーザーを作成します。
  6. 「grant all on wordpress.* to ‘wpuser’@’%’;」でwpuserにwordpressデータベースの操作権限を与えます。
  7. 「flush privileges;」で設定を反映します。
  8. 「use mysql;」でmysqlデータベースを選択します。
  9. 「select user, host from user;」でwpuserが作成されていることを確認します。

次回は

次回はPHPのインストールと、Wordpressモジュールをサーバーに配置し、Wordpressの構築を完成させます。

どうぞよろしくお願いします。