こんにちは。「クロジカサーバー管理」コンサルティングチームの三谷です。
この記事は、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にアクセスできることになります。
コーポレートサイトをクラウドでセキュアに
無料ではじめるサーバー管理
クロジカガイドブック
- コーポレートサイト構築・運用の課題を解決
- クロジカサーバー管理の主な機能
- 導入事例
- 導入までの流れ