AWS環境のWordPress基本構成パターンを紹介 Webサーバー1台・DBサーバー1台

こんにちは。「クロジカサーバー管理」コンサルティングチームの三谷です。

この記事は、AWS初心者向けAWS環境のWordPress基本パターン8つ作ってみたのパターン2の作成方法を紹介する記事です。そのまま真似をすれば、誰でもAWSを使ってWordPressの入ったタイトル通りの構成のサーバーを建てる事ができます。

WordPressの構築

Webサーバー側サーバーのインスタンス作成

インスタンスの作成についてはこの記事と同様の作業を行うので、こちらも参考にしてください。

1.Amazon Linux 2でインスタンスを作成します。
上記の記事を参考に作成してください。後に別サーバーのMySQLに外部からアクセスするので、手順6:セキュリティグループの設定において、タイプとしてMYSQL/Auroraを選択し、3306番ポートを開けておきます。ソースは、任意の場所にしておきます。

2.ssh接続し、サーバー構築を行います。

実行するコマンドのみ列挙しておきます。

$ ssh -i [公開鍵].pem ec2-user@[IPアドレス]
[ec2-user@ ~]$ sudo su -
[root@ ~]# amazon-linux-extras install php7.2
[root@ ~]# yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y
[root@ ~]# yum-config-manager --disable mysql80-community
[root@ ~]# yum-config-manager --enable mysql57-community
[root@ ~]# yum install -y httpd php mysql-community-server
[root@ ~]# systemctl start httpd mysqld
[root@ ~]# systemctl enable mysqld httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

これによって、最新のLAMP環境(Apache,MySQL,PHP)が構築されます。尚、この時点でサーバー側のサーバーにMySQLを用意する点は、データベース側サーバーのMySQLデータベースにアクセスし、ユーザ設定を作成するためです。

3.Wordpressをインストールします。
日本語版WordPressを取得して解凍します。

[root@ ~]# cd /var/www/html/
[root@ html]# wget https://ja.wordpress.org/latest-ja.tar.gz
[root@ html]# tar -xzvf latest-ja.tar.gz
[root@ html]# rm latest-ja.tar.gz

ドキュメントルートの参照先をここに変更します。

[root@ html]# vim /etc/httpd/conf/httpd.conf
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html/wordpress"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

3.MySQLにおいて、WordPress用のデータベースを作成します。
後ほど、DB側のサーバーDBを使うので、このDBは不要になりますが、作業を簡単にするために作っておきます。

4.WordPressの初期設定をする。
ブラウザでIPアドレス直下のWordPressにアクセスし、3で作成したDBの情報を入力し、設定を終えてください。サイト情報の登録まで終えたら、Webサーバー側サーバーの設定は終了です。

データベース側サーバーのインスタンス作成

1.Webサーバー側と同様にLAMP環境を作成します。Webサーバー側の手順に沿って2まで終わらせてください。
なお、ここでHTTPやHTTPSのアクセスをローカルのみに設定することによって、DB側サーバーのセキュリティを高く保つことができます。

2.外部からのアクセスを受け付けるためMySQLDBを作成します。
ログから初期パスを確認します。

[root@ ~]# cat /var/log/mysqld.log | grep 'localhost'
2018-08-07T01:47:41.008720Z 1 [Note] A temporary password is generated for root@localhost:[ここがパスワード]

こちらでログインし、rootのパスワードを変更した後WordPress用のユーザ(wpa001)とDB(wpa001)を作成します。

[root@ ~]# mysql -uroot -p
Enter password: [初期パスワードを入力]
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Defaultp@ssw0rd';
mysql> create database wpa001;
mysql> create user wpa001@localhost identified by 'Hogehoge@1234';
mysql> grant all on wpa001.* to wpa001@localhost identified by 'Hogehoge@1234';
mysql> flush privileges;

今のこの状態であれば、各DBへのアクセスはローカルホストのみに制限されているはずです。アクセスできるIPアドレスをWebサーバー側サーバーのみに設定して、外部からのアクセスを許可します。

mysql> select user, host from mysql.user;
+---------------+-----------+
| user | host |
+---------------+-----------+
| root | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| wpa001 | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wpa001.* TO wpa001@'[Webサーバー側IPアドレス]' IDENTIFIED BY '[パスワード]' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> select user, host from mysql.user;
+---------------+-----------+
| user | host |
+---------------+-----------+
| wpa001 | [IPアドレス] |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
| wpa001 | localhost |
+---------------+-----------+
5 rows in set (0.00 sec)

これで指定されたホストからwpa001というユーザが、wp001というDBに接続できるようになりました。他のホストからのアクセスは受け付けません。

以上でデータベース側のインスタンスは作成完了です。

WordPressがデータベース側のDBにアクセスできるように設定する

1.まずは、Webサーバー側からDBにアクセスできるのか確かめます。

[root@ ~]# mysql -h [DB側サーバーのIPアドレス] -u wpa001 -p -P 3306
Enter password:[データベース側のDB(wpa001)で設定したパスワード]
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.7.25 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

以上のように表示されたらOKです。アクセスできました。

2.WordPressの設定をします。wp-config.phpに参照するデータベースの情報があるので、ここを編集します。

[root@ ~]# vim /var/www/html/wordpress/wp-config.php
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'wpa001');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'wpa001');

/** MySQL データベースのパスワード */
/**define('DB_PASSWORD', '[元のパスワード]');*/
define('DB_PASSWORD','[DB側DB(wpa001)に設定したパスワード]');

/** MySQL のホスト名 */
/**define('DB_HOST', 'localhost');*/
define('DB_HOST', '[DB側サーバーのIPアドレス]');
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

これでWebサーバー側からWordPressにアクセスすると、DB側のwpa001というDBにアクセスできることになります。

コーポレートサイトクラウドでセキュアに

コーポレートサイトをクラウドでセキュアに クロジカガイドブック

無料ではじめるサーバー管理
クロジカガイドブック

「クロジカサーバー管理」の詳しい内容がわかる資料をご用意しました。
  • コーポレートサイト構築・運用の課題を解決
  • クロジカサーバー管理の主な機能
  • 導入事例
  • 導入までの流れ

詳しい資料をご覧いただけます

クロジカサーバー管理のサービス内容を記載した資料をダウンロードできます。
クロジカの機能や事例が分かる
資料ダウンロード