Yuki's Tech Blog

仕事で得た知見や勉強した技術を書きます。

【AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得】セクション7: 【EC2】WordPressを構築しようで知らなかったことをざっくりまとめてみた

目次

概要

まずWebサーバーにWordPressをインストールします。その後、WordPressの設定をしてWordPressからデータベースへ接続します。

RDSインスタンスの中にWordPress用のデータベースを作成する

作業手順

手順1:
DBを作成するためには、RDSインスタンスMySQLコマンドで接続して、そこでDBを作成するコマンドを打ちます。 まずはSSHでEC2インスタンスにログインします。

ssh -i ./blog-test-ec2.pem ec2-user@54.250.26.39

その後、EC2インスタンス内でMySQLのコマンドを実行して、RDSインスタンスに接続します。

mysql -h blog-test-db.csnjegchinkg.ap-northeast-1.rds.amazonaws.com -u root -p

以下のコマンドを実行して、RDSインスタンス内にDBを作成します。 CREATE DATABASEは、DBを作成するコマンドです。今回はblog_test_1というDBを作成していきます。次にDEFAULT CHARACTER SETでデフォルトの文字コードを指定しています。COLLATEでDBの照合順序を指定します。文字列の比較方法を指定していると考えます。文字コードはutf8で言語は多言語を示すgeneral、文字列の比較方法は大文字と小文字が区別されないciを指定します。

CREATE DATABASE blog_test_1 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

ちゃんとDBが作成されているかは以下のコマンドで確認できます。 以下のコマンドを実行することで、RDSインスタンスの中に含まれるDB一覧を見ることができます。

SHOW DATABASES;

Image from Gyazo

手順2:
次にWordPress用のユーザーを作成します。マスターユーザーはDBに関する操作が何でもできてしまい、データベースを削除することもできて危険です。そのため、必要最低限の権限を付与したWordPress用のユーザーを作成しています。

以下のコマンドでWordPress用のユーザーを作成します。ユーザー名はblog_testにしています。@以降は接続元のホストを示しています。%の場合、接続元のホストはどこでもOKです。IDENTIFIED BYで接続時のパスワードを指定します。

CREATE USER 'blog_test'@'%' IDENTIFIED BY 'password';

手順3:
GRANTコマンドで先ほど作成したWordPress用のユーザーに権限を付与します。ALLで全ての権限を付与します。データベース名.*はデータベースの全てのテーブルを操作できるという意味です。TOの後ろに先ほど作成したユーザーを指定して、権限を付与しています。

GRANT ALL ON blog_test_1.* TO 'blog_test'@'%';

権限を付与しただけだと、その設定がMySQLに反映されていないので、反映させるコマンドを実行します。

FLUSH PRIVILEGES;

手順4:
実際にユーザーが作成されているのかを確認します。以下のSELECT文を実行すると、ユーザーの一覧を取得できます。

SELECT user , host FROM mysql.user;

Image from Gyazo

作成したユーザーで実際にRDSインスタンスに接続できるかを確認します。一回RDSインスタンスとの接続をMySQLのexitコマンドで解除します。その後、以下のコマンドを実行してRDSインスタンスに接続してみます。-uにユーザーを指定します。

mysql -h blog-test-db.csnjegchinkg.ap-northeast-1.rds.amazonaws.com -u blog_test -p

RDSインスタンスと接続できればOKです。 Image from Gyazo

(注) MYSQLもEC2インスタンスも接続しないときは、誤ってコマンドを入力して大事故につながる可能性があるので、使用しないときはexitで接続を切っておきましょう。

EC2インスタンスWordPressをインストールする

作業手順

手順1:
EC2インスタンスSSHでログインして、その後、まずはWordPressを動かせるようにするために、PHPをインストールします。最新版のPHPをインストールしたいので、amazon-linux-extrasというコマンドを使ってphpをインストールします。

sudo amazon-linux-extras install -y php7.2

手順2:
次にPHP関連の必要なライブラリをインストールします。

sudo yum install -y php php-mbstring

手順3:
ホームディレクトリ(~)に移動して、WordPressの最新のファイルをダウンロードしていきます。wgetコマンドは URLを指定してファイルをインストールするコマンドです。

wget https://ja.wordpress.org/latest-ja.tar.gz

lsコマンドで先ほどインストールしたファイルを確認します。 Image from Gyazo

こちらのファイルはgz(gzip)のファイルなので、圧縮されています。そのため、解凍します。tarコマンドは 複数のファイルを圧縮したり解凍するコマンドです。 xzvfはxが解凍、zがgzipを使用、vが圧縮解凍状況を表示、fが圧縮ファイル名を指定するオプションです。

tar xzvf latest-ja.tar.gz

解凍すると、lsコマンドでwordpressというディレクトリが作成されていることが分かります。こちらにWordPressのファイルが展開されています。 Image from Gyazo

手順4:
cdコマンドでwordpressディレクトリに移動します。次にWordPressのプログラムをApacheから見える位置に移動させます。cpコマンドはファイルをコピーするコマンドです。-r *が現在のディレクトリ以下の全てのファイルとディレクトリを指定するオプションです。/var/www/html/はコピー先です。つまり、wordpress配下の全てのファイルとディレクトリを/var/www/html/にコピーしていることになります。/var/www/html/がApacheが参照しているディレクトリです。ブラウザからアクセスがあると、Apacheは/var/www/html/以下にあるファイルを返します。

sudo cp -r * /var/www/html/

手順5:
WordPressのファイルの所有者グループを変更します。chownコマンドが ファイルの所有者、所有グループを変更するコマンドです。 apache:apacheがファイルの所有者と所有グループをApacheに変更するという意味です。/var/www/html/ -Rが/var/www/html/以下の全てのファイル対象に変更するという意味です。つまり、このコマンドで/var/www/html/以下の全てのファイルの所有者と所有グループをApacheに変更することになります。これでApacheからWordPressのファイルを参照できるようになります。

sudo chown apache:apache /var/www/html/ -R

手順6:
この設定をApacheに反映させるために、Apacheを再起動させます。 まず、以下のコマンドでApacheの起動状態を確認します。

sudo systemctl status httpd.service

active(running)になっていたら起動しています。 次に、以下のコマンドでApacheを再起動させます。

sudo systemctl restart httpd.service

これでApacheWordPressのファイルを参照できるようになりました。

WordPressの設定をする

作業手順

手順1:
ドメイン名でアクセスすると、今までではApatchの画面が出ていたのに、WordPressの設定画面が表示されます。 Image from Gyazo

DBと接続するための情報を登録していきます。これらの設定をすることで、wb-config.phpというファイルが/var/www/html/配下に作成されます。WordPressはそのファイルに記載されている内容を読み込んで、DBと接続します。もしDBとの接続情報を更新したい場合、wb/config.phpファイルをサーバー上で直接編集します。

データベース名、ユーザー名、パスワードを入力します。データベースのホスト名はRDSインスタンスのエンドポイントを入力します。テーブル接頭辞はDBにテーブルを作成するときに接頭辞として頭に何をつけるかを意味します。ここは変更しなくて大丈夫です。その後、「送信ボタン」をクリックします。 Image from Gyazo

手順2:
「インストール実行」をクリックします。次にサイトの必要情報を登録します。サイトのタイトルを「私のブログ」、ユーザー名を「admin」にします。 メールアドレスを入力して、その後、「WordPressをインストール」ボタンをクリックします。成功したらログインボタンを押してログインします。以上で終了です。

インフラ構成図

以前のインフラ構成図にWordPressを追加しました。 Image from Gyazo

参考記事

AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得 | Udemy

ファイルの圧縮についてまとめ - Qiita