こんにちは。hacknoteのjunya.kです。
この記事は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にアクセスできることになります。