本記事のゴール
前回は、AWS で WordPress 用のサーバーを立ち上げました。今回は、立てた EC2 インスタンスに WordPress 実行に必要なソフトウェアをインストールします。WordPress の初期設定までを行い、WordPress が使い始められるようになるまでを解説します。
- Amazon EC2 (EC2) を使ってサーバーを立ち上げ
- CMSとしてサーバーに WordPress を導入★←今回はこちら!
です。
サーバーへの WordPress 導入手順 7 ステップ
大まかな手順としては以下の 7 ステップです:
- EC2 に SSH ログインし、各種ソフトウェアをインストールするためスーパーユーザーになる
- Nginx のインストール
- PHP のインストール
- MySQL のインストール
- MySQL サーバーの初期設定
- WordPress (日本語版) のインストール
- WordPress の初期設定
SSH ログインし、スーパーユーザ化
EC2 サーバーへの SSH 接続をします。SSH 接続をするには、お手元の PC に Tera Term や PuTTY など SSH クライアントをインストールし、適切に接続情報を設定の上、SSH 接続を開始します。Tera Term の場合、手順はこちらに詳しく記載があります。
なお、EC2 サーバーのセキュリティを強化したい、運用ポリシーをある程度明確にしてガバナンスを決めたい等の目的で行う初期設定については、筆者が実施しているものについては別記事でまとめようと思います。
ソフトウェアをスムーズにインストールするために、スーパーユーザーになっておきます。もちろん毎回 sudo してもいいんですが、パスワードの入力とか、億劫なので・・。
$ sudo su -Nginx の インストール
まずは、Webサーバーである Nginx のインストールからです。Python 2.x で動いていた Amazon Linux は yum は廃止の方向ということなので、Python 3.x で動いている dnf を使って、インストールしていきます。yum しか対応していないそうですね。すみません。
# yum -y install nginx細かいですが、このままですと Nginx を実行するユーザ nginx のグループが設定されておらず怪しい挙動をすることがあるので、Nginx の設定を変更します。具体的には、/etc/nginx/nginx.conf の user の設定箇所を、以下のように変更します。
# vi /etc/nginx/nginx.conf# 実行ユーザ nginx のグループが nginx であることを明記
user nginx nginx;ここでできれば、/etc/nginx/nginx.conf に後ほどの作業で作成することになる wp-config.php へのアクセス権に関する設定もしておいた方がいいと思います。というのも、wp-config.php には平文でデータベースへの接続情報が書かれてしまいますので。
...
http {
...
server {
# http.server 配下に wp-config.php に関する設定を追加
location ~* /wp-config.php {
# アクセスを拒否する
deny all;
}
...次に、インストールした nginx を早速起動し、なおかつサーバーが (なんらかの理由でシャットダウンした後に) 起動した後、自動で Nginx が起動しないので、自動起動を設定します。
# systemctl start nginx
# systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.PHP のインストール
次に、PHP をインストールしていきます。WordPress は PHP で実行されサーバー側でレンダリングされます。
yum で PHP をインストールするとバージョンが 7.2.x 系列になってしまうのですが、これですと WordPress 側から PHP のバージョンアップデートを要求されてしまうので、最新の 7.4.x 系列をインストールしていきます。なお、下記コマンドでは -y オプションはつけていませんので、インタラクションは適宜行ってください。基本は “y” と回答すれば OK かと思います。
# yum module list php
# yum module install php:7.4さらに、必要な周辺モジュールもインストールしていきます。
# yum -y install php-devel php-mysqlnd php-gd php-opcacheWordPress を動かす PHP は厳密には php-fpm で実行されます。デフォルトの php-fpm の設定は Apache HTTP Server 用になっており、悪さをするので設定を変更していきます。実際の /etc/php-fpm.d/www.conf の中身はコメント行も含まれており、適宜 user と group を探してください。
# vi /etc/php-fpm.d/www.conf...
user = nginx
...
group = nginx
...php-fpm サービスの開始、および自動起動の設定を行います。
# systemctl start php-fpm
# systemctl enable php-fpmMySQL のインストール
まずは mysql-server パッケージをインストールしていきます (mysql パッケージとは異なる点に要注意!)。
# yum -y install mysql-server後は、mysqld サービスの開始および自動起動の設定を行います。
# systemctl start mysqld
# systemctl enable mysqldMySQL サーバーの初期設定
初期設定を行うため、root ユーザで MySQL に接続します。
# mysql -u rootここで行うことは、WordPress から MySQL に接続するためのユーザ (とパスワード)を作成の上、WordPress データを保管するためのデータベースを作ることです。個々のクエリの詳細はここでは説明しませんが、以下のようなクエリを発行すれば OK かと思います (ユーザ名、パスワード、データベース名は適宜変更してください)。
mysql> CREATE USER ${ユーザ名} IDENTIFIED BY '${パスワード}';
mysql> CREATE DATABASE ${データベース名};
mysql> GRANT ALL ON ${データベース名}.* TO ${ユーザ名};
mysql> FLUSH PRIVILEGES;WordPress (日本語版) のインストール
ここでようやく、WordPress のインストールの準備ができました。WordPress はパッケージをインターネット経由でダウンロードすることになるので、wget をインストールします。
# yum -y install wget本手順では、少しトリッキーなのですが、WordPress の実行パッケージが入ったディレクトリが Nginx を yum 経由でインストールしたときのデフォルトのディレクトリ /usr/share/nginx/html となるよう進めます。オーソドックスな方法でいえば、/usr/share/nginx/html/wordpress 等別の場所に配置して、Nginx の設定ファイル nginx.conf を変える等がありますが、その場合 nginx.conf を修正する知識が必要になりますので、今回はこちらの方法を採ります。
まず、作業場所を /usr/share/nginx に移します。
# cd /usr/share/nginxもとあった /usr/share/nginx/html の名前を変え、念のため取っておきます (後戻りなど不要!という猛者は、消していただいて構いません笑)。
# mv ./html ./html.oldさきほどインストールした wget を使って、WordPress 日本語版をダウンロードします。
# wget https://ja.wordpress.org/latest-ja.tar.gz落としてきた tar ball を解凍します。
# tar xzvf latest-ja.tar.gzすると、wordpress ディレクトリができます。この wordpress ディレクトリが、ちょうど Nginx で指定されている /usr/share/nginx/html となるように、リネームします。
# mv ./wordpress ./htmlこれまでスーパーユーザ (実質 root) で実行してきましたので、この作業の過程でできたファイルの所有権が root だったり、他のユーザになっていたりするかと思います。このままですと後段の作業に悪影響が出ますので、ここで改めて /usr/share/nginx ディレクトリがグループ nginx のユーザー nginx の所有物である、としておきます。
# chown -R nginx:nginx /usr/share/nginx念のため、ここまでやってきた設定を反映させるために、Nginx を再起動しておきましょう。
# systemctl restart nginxWordPress の初期設定
それでは、HTTP でサーバーに接続して、WordPress を初期設定していきます。ここまでの手順を順に追っていれば、おそらくトラブルは発生しないかと思いますが、うまく設定ができてきないと色々トラブります。
まずはお使いのブラウザ (Firefox, Chrome, Edge, 何でも可) で、http://${Elastic IP で取得したグローバル IP} に接続してみます。下記のような画面が出れば成功です。「さあ、始めましょう!」ボタンをクリックして、次に進みます。
※これまで進めてきた Nginx や PHP のインストール、設定がしくじっていたり、PHP のライブラリが不足していたりすると上記のような画面は出ません。また、EC2 立ち上げの際に行ったインバウンドルール (どこから、どのようなタイプの接続を許すのか) の設定に失敗していると、HTTP で指定した IP の EC2 サーバに接続できません。
次に、データベースの接続設定を行います。
上記のデータベース名、ユーザ名、パスワードには「MySQLサーバの初期設定」で設定した値を適切に入力します。この値を間違うと、問答無用で「404 Not Found」が返ってきてしまいます。
正しい値が設定できると、入力した値を WordPress は WordPress を配置したディレクトリ (本手順では /usr/share/nginx/html) に wp-config.php を作成しに行きます。
ただここで、おそらく頻繁に「wp-config.php ファイルに書き込みできません。」というアラートが出て、インストールに失敗します。もちろん WordPress の画面のガイダンスにしたがって、wp-config.php を手で作成して、内容をコピペすればいったんは問題ないとは思います。ただ、原因によっては、今後画像ファイルをアップロードしたりできなくなるので、問題に対処し適切にインストールしておくことをオススメします。なお、この事象の原因はおそらく以下のうちどちらか (あるいは両方とも) です:
- WordPress をおいてあるディレクトリに、グループ
nginx、ユーザnginxの書き込み権限がない - php-fpm を実行しているユーザが、グループ
nginx、ユーザnginxでない
なので、本記事では WordPress をおいてあるディレクトリを含む形で該当するディレクトリの所有権を nginx:nginx に移したり、php-fpm の実行ユーザ、実行グループを変更したりしました。特に前者の事象については、WordPress のディレクトリを作り直したりすると所有権が戻ったりするので、しつこく発生します・・・。
いったん、以下の画面が出れば成功です!ここまでくれば、ゴールはほぼ間近です。
サイトのタイトル、WordPress ログイン用のユーザ名、パスワード、メールアドレスを設定して作業は完了です。お疲れ様でした。

ネクストアクション
ようやく、WordPress が動くところまで確認できました。次はドメインを取得して、設定してみたいと思います。

