WordPress基本構成パターン2-Webサーバー1台、DBサーバー1台

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

WordPressの構築

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

インスタンスの作成についてはこの記事と同様の作業を行うので、こちらも参考にしてください。 1.Amazon Linux 2でインスタンスを作成します。 上記の記事を参考に作成してください。 後に別サーバーのMySQLに外部からアクセスするので、手順6:セキュリティグループの設定において、タイプとしてMYSQL/Auroraを選択し、3306番ポートを開けておきましょう。ソースは任意の場所にしておきます。 2.ssh接続し、サーバー構築を行います。具体的には以下の記事を参考にすれば大丈夫です。 EC2でwebサーバーを構築する方法 実行するコマンドのみ列挙しておきます。
$ 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をインストールします。 参考:EC2に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にアクセスできることになります。  

Webサイト におけるセキュリティのことなら、私達にご相談ください。

私たちは、Webサイトに必要な クラウド・CMS・セキュリティ対策 を提供するWordPressプラットフォーム「SiteCloud」を提供しています。 豊富な知見を活かし、企業が管理・運営するコーポレートサイト をはじめとしたWebサイトの安全な環境をご提案します。 Webサイト管理・環境におけるセキュリティでお悩みの企業の方は、お気軽にご相談ください。

関連する解決策

最新記事

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

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