WordPress基本構成パターン1-EC2インスタンス1台

こんにちは。hacknoteのr.katoです。

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

また、今回紹介する構成はWebサーバーとDBサーバーを一つのインスタンスで賄っているため、AWSのAMIという機能を使うことでクローンを作るのが非常に簡単です。
例えば、WordPressのバージョンを上げたり、大規模な変更のためにテスト環境を作りたい場合、現行のサイトをそのままコピーしてテスト環境を用意する場合、このマシンをコピーすれば完了するので、非常に楽です。その方法も後半で紹介していきます。ココをクリックするとその方法へ飛べます。

目次

実際に紹介する前に

AWSのEC2インスタンスの建て方を全く知らない方はこちらの記事に詳しく書いてありますので、こちらを先に読んでください。

WordPress環境の作り方

  1. まずはEC2でインスタンス(Amazon Linux2)を建ててください。
    この時、セキュリティグループの設定ではsshとhttpと最終的に必要になるhttpsが許可されるように設定してください。
    セキュリティ的にはsshはマイIPなどで許可制にし、httpとhttpsはデフォルトのままにすることを推奨します。
    そうすることで、マイIPの場合は今いる場所のネットワークからのみssh接続が許可されるようになります。

  2. インスタンス作成後にターミナル(端末、コマンドプロンプト、windows powershellどれでもOKです)でsshログインします。
    初めてログインする時はAre you sure you want to continue connecting (yes/no)?と聞かれるのでyesと入力してenterを押します。XXX.XXX.XXX.XXXにはパブリックIPが入ります。

ssh -i XXXXX.pem ec2-user@XXX.XXX.XXX.XXX
sudo su -
  1. そしたら次のコマンドを順番に入力してください。
    これらのコマンドを入力することでLAMPサーバーに必要なApache(アパッチ)とMySQL(DB:データベース)とPHP(プログラミング言語)の環境が整います。
    ちなみにLAMPのLはLinuxから来ており頭文字を取ってLAMPサーバーと呼ばれています。
  • Apache 最新版
  • MySQL ver.5.7
  • PHP ver.7.2

がインストールされます。

amazon-linux-extras install php7.2
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
yum install -y httpd php mysql-community-server

systemctl start httpd mysqld
systemctl enable mysqld httpd

  1. MySQLにログインして、Wordpressに最低限必要な設定をします。
    mysql -uroot と入力してenterを押せば通常であればログインできるのですが、もしできなかった場合はココをクリックしてください

    MySQLログイン後、MySQL内でWordpress用のDatabase、アカウント作成およびアカウントにwordpress Databaseへの全アクセス権限付与を次のコマンドでしていきます。
    このとき、wordpress DatabaseのIDはwpuserでPasswordはhogeです。任意の文字列にしてください。
    後でWordpressをインストールする時に使います。

CREATE DATABASE wordpress charset utf8;
GRANT ALL PRIVILEGES ON wordpress.* TO "wpuser"@"localhost" IDENTIFIED BY "hoge";
FLUSH PRIVILEGES;
  1. WordPressをインストールします。
    次のコマンドを入力して実行すればインストールに必要なデータがダウンロードされます。
    その後、chromeなどのWebブラウザでhttp://XXX.XXX.XXX.XXXにアクセスし、指示に従って先ほど作成したDatebaseのアカウント情報などを入力していけばインストールは完了します。
cd /usr/local/src
wget https://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz
mv wordpress/* /var/www/html/
chown -R apache: /var/www/html/

AMIを使ったWordpress環境のコピーインスタンスを建てる方法(テスト環境構築)

  1. WordPress環境の作り方で作ったインスタンスをAWSコンソールで表示し、選択します。
  2. アクションをクリックし、その中のイメージの中のイメージの作成をクリックします。

  3. イメージ名とイメージの説明を入力して、イメージの作成をします。

  4. しばらく待つとWordPress環境の作り方のイメージ(AMI)が作成されます。
  5. 作成されたら、WordPress環境の作り方でインスタンスを建てた時と同じ手順で、AMIの選択のところでマイAMIの中のhoge-imgを選択し建てます。

  6. この手順でIPアドレスは違いますが中身の同じインスタンスが作成されます。

おわりに

これで、AWSをよく知らない人でもWebサーバーとDBサーバーが同じEC2インスタンス内にあるWordpressサーバーを建てることができると思います。
また、Wordpressのバージョンアップデートなど本番環境を複数作りたい時にも簡単にサーバーをAMIを使って建てることができると思います。

付録

mysqlでログインできなかった人向けの話

cat /var/log/mysqld.log |grep "password" このコマンドを入力してあげると以下のように初期パスワードが出てきます。
以下の場合 hogehoge がパスワードです。

---略---
2019-01-30T07:32:31.484704Z 1 [Note] A temporary password is generated for root@localhost: hogehoge
2019-01-30T07:39:15.648617Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)
---略---

初期パスワードを使ってMySQLログイン後パスワードを変更するよう指示されるので以下のコマンドでMySQLにログインして変更します。

mysql -u root -p hogehoge
SET password for root@localhost=password('passwordPASSWORD');

テスト環境作成などでパスワードを短くしたければ以下のコマンドを追加で実行してください。

SET GLOBAL validate_password_length=4;
SET GLOBAL validate_password_policy=LOW;
SET password for root@localhost=password('pass');

ココをクリックすると元の場所に戻ります。