もくじ
はじめに
こんにちは。あつしです。
2回に分けて書いていこうと思うのですが、AWSのEC2インスタンス単体で、WordPressを構築してみようと思います。
以下のようなことをお考えの方々に、参考になればと思っています。
- 個人で運営しているブログなので、高可用性が必要ない。
- AWSの料金をできる限り低く抑えたい。
①についてですが、AWSの単一AZ(アベイラビリティゾーン)で稼働するWordpressとなるので、もしそのAZに障害があったら、Wordpressは使用できなくなります。
※AZはひとつのデータセンターのようなものです。
②についてですが、WEBサーバーとデータベースを分割して構築するのがAWSのベストプラクティスとなっていますが、本件ではRDSを使用しません。
つまり、WEBサーバーとDBサーバーがひとつのEC2インスタンスに集約することとなります。
これにより、比較的料金が割高のRDSを使用しないことで、少しでも料金を削減することができます。(これでもレンタルサーバーの方がコスパは良いですが。。。)
使用するAWSサービス
使用するAWSサービスは以下の通りです。
- VPC
- EC2
- EBS(EC2インスタンスのルートボリュームとして使用)
rootではない一般ユーザーに権限を与えて構築するので、IAMも使用していますが、Wordpressサーバーの動作には直結しないので、除外しました。
構成図
本件のネットワーク構成図を超簡略化して書いてみると、以下のようになります。
メインはEC2の中での作業になります。
EC2の中に、Apache、MySQL、PHPそしてWordpressモジュールを配置してWordpressサーバーとするのが目的です。
EC2の構築
すでにEC2インスタンスは作成されているものとして始めます。
EC2インスタンスの構築については、下の記事で詳しく書いておりますので、参考にしていただければと思います。
Wodpressの要件
2021/8/23現在、Wordpressに必要なPHPとデータベースの要件は以下のようになっています。
本記事で扱うバージョンとあわせて表にまとめます。
モジュール | 必要バージョン | 本記事で使用するバージョン |
PHP | 7.4 以上 | PHP 7.4.6 |
データベース | MySQL バージョン 5.6 以上、または MariaDB バージョン 10.1 以上 | MySQL 8.0.21 |
WEBサーバー | ApacheやNginxが推奨 | Apache 2.4.37 |
参考サイト:要件 | WordPress.org 日本語
WordPressの構築(途中まで)
Apacheのセットアップ
yumでApacheをインストール
# yum install httpd
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Red Hat Update Infrastructure 3 Client Configuration Server 8 32 kB/s | 2.1 kB 00:00
Red Hat Enterprise Linux 8 for x86_64 - AppStream from RHUI (RPMs) 27 kB/s | 2.8 kB 00:00
Red Hat Enterprise Linux 8 for x86_64 - BaseOS from RHUI (RPMs) 23 kB/s | 2.4 kB 00:00
Dependencies resolved.
==========================================================================================================================================
Package Architecture Version Repository Size
==========================================================================================================================================
Installing:
httpd x86_64 2.4.37-39.module+el8.4.0+9658+b87b2deb rhel-8-appstream-rhui-rpms 1.4 M
Installing dependencies:
apr x86_64 1.6.3-11.el8 rhel-8-appstream-rhui-rpms 125 k
apr-util x86_64 1.6.1-6.el8 rhel-8-appstream-rhui-rpms 105 k
httpd-filesystem noarch 2.4.37-39.module+el8.4.0+9658+b87b2deb rhel-8-appstream-rhui-rpms 38 k
httpd-tools x86_64 2.4.37-39.module+el8.4.0+9658+b87b2deb rhel-8-appstream-rhui-rpms 106 k
mailcap noarch 2.1.48-3.el8 rhel-8-baseos-rhui-rpms 39 k
mod_http2 x86_64 1.15.7-3.module+el8.4.0+8625+d397f3da rhel-8-appstream-rhui-rpms 154 k
redhat-logos-httpd noarch 84.4-1.el8 rhel-8-baseos-rhui-rpms 29 k
Installing weak dependencies:
apr-util-bdb x86_64 1.6.1-6.el8 rhel-8-appstream-rhui-rpms 25 k
apr-util-openssl x86_64 1.6.1-6.el8 rhel-8-appstream-rhui-rpms 27 k
Enabling module streams:
httpd 2.4
Transaction Summary
==========================================================================================================================================
Install 10 Packages
Total download size: 2.0 M
Installed size: 5.4 M
Is this ok [y/N]: y
※※(省略)※※
Installed:
apr-1.6.3-11.el8.x86_64 apr-util-1.6.1-6.el8.x86_64
apr-util-bdb-1.6.1-6.el8.x86_64 apr-util-openssl-1.6.1-6.el8.x86_64
httpd-2.4.37-39.module+el8.4.0+9658+b87b2deb.x86_64 httpd-filesystem-2.4.37-39.module+el8.4.0+9658+b87b2deb.noarch
httpd-tools-2.4.37-39.module+el8.4.0+9658+b87b2deb.x86_64 mailcap-2.1.48-3.el8.noarch
mod_http2-1.15.7-3.module+el8.4.0+8625+d397f3da.x86_64 redhat-logos-httpd-84.4-1.el8.noarch
Complete!
#
- 「yum install httpd」でyumコマンドを使用して、Apahcheをインストールできます。(特にレポジトリの追加などは必要ありませんでした)
- Apacheがインストールされたことを確認します。バージョン2.4.37がインストールされています。
Apacheサービスの起動と有効化
# systemctl start httpd
#
# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
#
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2021-08-20 06:57:21 UTC; 9s ago
Docs: man:httpd.service(8)
Main PID: 9824 (httpd)
Status: "Running, listening on: port 80"
Tasks: 213 (limit: 49363)
Memory: 29.0M
CGroup: /system.slice/httpd.service
tq9824 /usr/sbin/httpd -DFOREGROUND
tq9825 /usr/sbin/httpd -DFOREGROUND
tq9826 /usr/sbin/httpd -DFOREGROUND
tq9827 /usr/sbin/httpd -DFOREGROUND
mq9828 /usr/sbin/httpd -DFOREGROUND
Aug 20 06:57:21 ip-10-0-1-11.ap-northeast-1.compute.internal systemd[1]: Starting The Apache HTTP Server...
Aug 20 06:57:21 ip-10-0-1-11.ap-northeast-1.compute.internal systemd[1]: Started The Apache HTTP Server.
Aug 20 06:57:21 ip-10-0-1-11.ap-northeast-1.compute.internal httpd[9824]: Server configured, listening on: port 80
#
- サービスの起動や停止は「systemctl」コマンドで行います。「systemctl start httpd」でApacheを起動します。
- 「systemctl enable httpd」で自動起動を有効化します。有効化しておけば、EC2を再起動しても自動的にApacheが起動します。
- 「systemctl status httpd」でApacheサービスの状態を確認します。「Active」という表記で起動していることがわかります。「enabled」という表記で、自動起動が有効であることがわかります。
MySQLのセットアップ
MySQLのレポジトリのインストール
# yum install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:28:09 ago on Fri 20 Aug 2021 06:31:41 AM UTC.
mysql80-community-release-el8-1.noarch.rpm 45 kB/s | 30 kB 00:00
Dependencies resolved.
==========================================================================================================================================
Package Architecture Version Repository Size
==========================================================================================================================================
Installing:
mysql80-community-release noarch el8-1 @commandline 30 k
Transaction Summary
==========================================================================================================================================
Install 1 Package
Total size: 30 k
Installed size: 29 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : mysql80-community-release-el8-1.noarch 1/1
Verifying : mysql80-community-release-el8-1.noarch 1/1
Installed products updated.
Installed:
mysql80-community-release-el8-1.noarch
Complete!
#
上のURLは、MySQL Yum Repositoryから確認したものです。(Red Hat Enterprise Linux 8 / Oracle Linux 8 (Architecture Independent), RPM Packageの[Download]ボタン)
yumでMySQLサーバーをインストール
# yum install mysql-server
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
MySQL 8.0 Community Server 4.5 MB/s | 1.9 MB 00:00
MySQL Connectors Community 3.6 MB/s | 68 kB 00:00
MySQL Tools Community 10 MB/s | 322 kB 00:00
Dependencies resolved.
==========================================================================================================================================
Package Architecture Version Repository Size
==========================================================================================================================================
Installing:
mysql-server x86_64 8.0.21-1.module+el8.2.0+7855+47abd494 rhel-8-appstream-rhui-rpms 22 M
Installing dependencies:
libaio x86_64 0.3.112-1.el8 rhel-8-baseos-rhui-rpms 33 k
mariadb-connector-c-config noarch 3.1.11-2.el8_3 rhel-8-appstream-rhui-rpms 15 k
mecab x86_64 0.996-1.module+el8+2459+7cb96738.9 rhel-8-appstream-rhui-rpms 398 k
mysql x86_64 8.0.21-1.module+el8.2.0+7855+47abd494 rhel-8-appstream-rhui-rpms 12 M
mysql-common x86_64 8.0.21-1.module+el8.2.0+7855+47abd494 rhel-8-appstream-rhui-rpms 148 k
mysql-errmsg x86_64 8.0.21-1.module+el8.2.0+7855+47abd494 rhel-8-appstream-rhui-rpms 581 k
perl-Carp noarch 1.42-396.el8 rhel-8-baseos-rhui-rpms 30 k
perl-Data-Dumper x86_64 2.167-399.el8 rhel-8-baseos-rhui-rpms 58 k
perl-Digest noarch 1.17-395.el8 rhel-8-appstream-rhui-rpms 27 k
perl-Digest-MD5 x86_64 2.55-396.el8 rhel-8-appstream-rhui-rpms 37 k
perl-Encode x86_64 4:2.97-3.el8 rhel-8-baseos-rhui-rpms 1.5 M
perl-Errno x86_64 1.28-419.el8_4.1 rhel-8-baseos-rhui-rpms 76 k
perl-Exporter noarch 5.72-396.el8 rhel-8-baseos-rhui-rpms 34 k
perl-File-Path noarch 2.15-2.el8 rhel-8-baseos-rhui-rpms 38 k
perl-File-Temp noarch 0.230.600-1.el8 rhel-8-baseos-rhui-rpms 63 k
perl-Getopt-Long noarch 1:2.50-4.el8 rhel-8-baseos-rhui-rpms 63 k
perl-HTTP-Tiny noarch 0.074-1.el8 rhel-8-baseos-rhui-rpms 58 k
perl-IO x86_64 1.38-419.el8_4.1 rhel-8-baseos-rhui-rpms 142 k
perl-MIME-Base64 x86_64 3.15-396.el8 rhel-8-baseos-rhui-rpms 31 k
perl-Net-SSLeay x86_64 1.88-1.module+el8.3.0+6446+594cad75 rhel-8-appstream-rhui-rpms 379 k
perl-PathTools x86_64 3.74-1.el8 rhel-8-baseos-rhui-rpms 90 k
perl-Pod-Escapes noarch 1:1.07-395.el8 rhel-8-baseos-rhui-rpms 20 k
perl-Pod-Perldoc noarch 3.28-396.el8 rhel-8-baseos-rhui-rpms 88 k
perl-Pod-Simple noarch 1:3.35-395.el8 rhel-8-baseos-rhui-rpms 213 k
perl-Pod-Usage noarch 4:1.69-395.el8 rhel-8-baseos-rhui-rpms 34 k
perl-Scalar-List-Utils x86_64 3:1.49-2.el8 rhel-8-baseos-rhui-rpms 68 k
perl-Socket x86_64 4:2.027-3.el8 rhel-8-baseos-rhui-rpms 59 k
perl-Storable x86_64 1:3.11-3.el8 rhel-8-baseos-rhui-rpms 98 k
perl-Term-ANSIColor noarch 4.06-396.el8 rhel-8-baseos-rhui-rpms 46 k
perl-Term-Cap noarch 1.17-395.el8 rhel-8-baseos-rhui-rpms 23 k
perl-Text-ParseWords noarch 3.30-395.el8 rhel-8-baseos-rhui-rpms 18 k
perl-Text-Tabs+Wrap noarch 2013.0523-395.el8 rhel-8-baseos-rhui-rpms 24 k
perl-Time-Local noarch 1:1.280-1.el8 rhel-8-baseos-rhui-rpms 34 k
perl-URI noarch 1.73-3.el8 rhel-8-appstream-rhui-rpms 116 k
perl-Unicode-Normalize x86_64 1.25-396.el8 rhel-8-baseos-rhui-rpms 82 k
perl-constant noarch 1.33-396.el8 rhel-8-baseos-rhui-rpms 25 k
perl-interpreter x86_64 4:5.26.3-419.el8_4.1 rhel-8-baseos-rhui-rpms 6.3 M
perl-libnet noarch 3.11-3.el8 rhel-8-appstream-rhui-rpms 121 k
perl-libs x86_64 4:5.26.3-419.el8_4.1 rhel-8-baseos-rhui-rpms 1.6 M
perl-macros x86_64 4:5.26.3-419.el8_4.1 rhel-8-baseos-rhui-rpms 72 k
perl-parent noarch 1:0.237-1.el8 rhel-8-baseos-rhui-rpms 20 k
perl-podlators noarch 4.11-1.el8 rhel-8-baseos-rhui-rpms 118 k
perl-threads x86_64 1:2.21-2.el8 rhel-8-baseos-rhui-rpms 61 k
perl-threads-shared x86_64 1.58-2.el8 rhel-8-baseos-rhui-rpms 48 k
policycoreutils-python-utils noarch 2.9-14.el8 rhel-8-baseos-rhui-rpms 252 k
protobuf-lite x86_64 3.5.0-13.el8 rhel-8-appstream-rhui-rpms 149 k
Installing weak dependencies:
perl-IO-Socket-IP noarch 0.39-5.el8 rhel-8-appstream-rhui-rpms 47 k
perl-IO-Socket-SSL noarch 2.066-4.module+el8.3.0+6446+594cad75 rhel-8-appstream-rhui-rpms 298 k
perl-Mozilla-CA noarch 20160104-7.module+el8.3.0+6498+9eecfe51 rhel-8-appstream-rhui-rpms 15 k
Enabling module streams:
mysql 8.0
perl 5.26
perl-IO-Socket-SSL 2.066
perl-libwww-perl 6.34
Transaction Summary
==========================================================================================================================================
Install 50 Packages
Total download size: 48 M
Installed size: 218 M
Is this ok [y/N]: y
※※(省略)※※
Installed:
libaio-0.3.112-1.el8.x86_64 mariadb-connector-c-config-3.1.11-2.el8_3.noarch
mecab-0.996-1.module+el8+2459+7cb96738.9.x86_64 mysql-8.0.21-1.module+el8.2.0+7855+47abd494.x86_64
mysql-common-8.0.21-1.module+el8.2.0+7855+47abd494.x86_64 mysql-errmsg-8.0.21-1.module+el8.2.0+7855+47abd494.x86_64
mysql-server-8.0.21-1.module+el8.2.0+7855+47abd494.x86_64 perl-Carp-1.42-396.el8.noarch
perl-Data-Dumper-2.167-399.el8.x86_64 perl-Digest-1.17-395.el8.noarch
perl-Digest-MD5-2.55-396.el8.x86_64 perl-Encode-4:2.97-3.el8.x86_64
perl-Errno-1.28-419.el8_4.1.x86_64 perl-Exporter-5.72-396.el8.noarch
perl-File-Path-2.15-2.el8.noarch perl-File-Temp-0.230.600-1.el8.noarch
perl-Getopt-Long-1:2.50-4.el8.noarch perl-HTTP-Tiny-0.074-1.el8.noarch
perl-IO-1.38-419.el8_4.1.x86_64 perl-IO-Socket-IP-0.39-5.el8.noarch
perl-IO-Socket-SSL-2.066-4.module+el8.3.0+6446+594cad75.noarch perl-MIME-Base64-3.15-396.el8.x86_64
perl-Mozilla-CA-20160104-7.module+el8.3.0+6498+9eecfe51.noarch perl-Net-SSLeay-1.88-1.module+el8.3.0+6446+594cad75.x86_64
perl-PathTools-3.74-1.el8.x86_64 perl-Pod-Escapes-1:1.07-395.el8.noarch
perl-Pod-Perldoc-3.28-396.el8.noarch perl-Pod-Simple-1:3.35-395.el8.noarch
perl-Pod-Usage-4:1.69-395.el8.noarch perl-Scalar-List-Utils-3:1.49-2.el8.x86_64
perl-Socket-4:2.027-3.el8.x86_64 perl-Storable-1:3.11-3.el8.x86_64
perl-Term-ANSIColor-4.06-396.el8.noarch perl-Term-Cap-1.17-395.el8.noarch
perl-Text-ParseWords-3.30-395.el8.noarch perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch
perl-Time-Local-1:1.280-1.el8.noarch perl-URI-1.73-3.el8.noarch
perl-Unicode-Normalize-1.25-396.el8.x86_64 perl-constant-1.33-396.el8.noarch
perl-interpreter-4:5.26.3-419.el8_4.1.x86_64 perl-libnet-3.11-3.el8.noarch
perl-libs-4:5.26.3-419.el8_4.1.x86_64 perl-macros-4:5.26.3-419.el8_4.1.x86_64
perl-parent-1:0.237-1.el8.noarch perl-podlators-4.11-1.el8.noarch
perl-threads-1:2.21-2.el8.x86_64 perl-threads-shared-1.58-2.el8.x86_64
policycoreutils-python-utils-2.9-14.el8.noarch protobuf-lite-3.5.0-13.el8.x86_64
Complete!
#
- 「yum install mysql-server」でMySQLをインストールします。(「mysql-community-server」ではありません!)
MySQLのサービスの起動と有効化
# systemctl start mysqld
#
# systemctl enable mysqld
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.
#
# systemctl status mysqld
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2021-08-20 07:22:42 UTC; 1min 9s ago
Main PID: 12779 (mysqld)
Status: "Server is operational"
Tasks: 39 (limit: 49363)
Memory: 426.2M
CGroup: /system.slice/mysqld.service
mq12779 /usr/libexec/mysqld --basedir=/usr
Aug 20 07:22:37 ip-10-0-1-11.ap-northeast-1.compute.internal systemd[1]: Starting MySQL 8.0 database server...
Aug 20 07:22:37 ip-10-0-1-11.ap-northeast-1.compute.internal mysql-prepare-db-dir[12696]: Initializing MySQL database
Aug 20 07:22:42 ip-10-0-1-11.ap-northeast-1.compute.internal systemd[1]: Started MySQL 8.0 database server.
#
- 「systemctl start mysqld」でサービス起動。
- 「systemctl enable mysqld」でサービス有効化。(サーバー再起動しても立ち上がってくるようにする)
- 「systemctl status mysqld」でサービスの状態確認。
MySQLのrootのパスワード設定
インストール直後は、MySQLのrootユーザーのパスワードが設定されていないので、設定します。
# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.21 Source distribution
Copyright (c) 2000, 2020, 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> ALTER USER 'root'@'localhost' identified BY 'XXXXXXXXX';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
#
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.21 Source distribution
Copyright (c) 2000, 2020, 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>
mysql> exit
Bye
#
- 「mysql -u root」でパスワード無しでログインします。
- 「ALTER USER ‘root’@’localhost’ identified BY ‘XXXXXXXXXX‘;」(XXXXXXXXXXにはrootのパスワードを指定します)
- 「flush privileges;」で設定を反映します。
- 「mysql -u root -p」でrootでパスワードありでログインします。
- 「Enter password:」となったら先ほど指定したrootのパスワードを入力します。
- rootでMySQLにパスワードありでログインできることを確認します。
WordPress用データベースとユーザーの作成
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.21 Source distribution
Copyright (c) 2000, 2020, 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>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql>
mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)
mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wordpress |
+--------------------+
5 rows in set (0.00 sec)
mysql>
mysql> create user 'wpuser'@'%' identified by 'XXXXXXXXXX';
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> grant all on wordpress.* to 'wpuser'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>
mysql> select user, host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| wpuser | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)
mysql>
mysql> exit
Bye
#
- MySQLにrootで接続します。
- 「show databases;」で現在のデータベースの一覧を確認します。
- 「create database wordpress;」でwodpressという名前のデータベースを作成します。(Wordpressで使用するデータベースです)
- 「show databases;」でデータベースの一覧を取得し、「wordpress」データベースが作成されていることを確認します。
- 「create user ‘wpuser’@’%’ identified by ‘XXXXXXXXXX‘;」(XXXXXXXXXXはパスワード)で新たに「wpuser」というユーザーを作成します。
- 「grant all on wordpress.* to ‘wpuser’@’%’;」でwpuserにwordpressデータベースの操作権限を与えます。
- 「flush privileges;」で設定を反映します。
- 「use mysql;」でmysqlデータベースを選択します。
- 「select user, host from user;」でwpuserが作成されていることを確認します。
次回は
次回はPHPのインストールと、Wordpressモジュールをサーバーに配置し、Wordpressの構築を完成させます。
どうぞよろしくお願いします。
コメント