このパートで学ぶこと
今回のパートでは、Wordpressに必要なものの全体像を理解した上でツールをインストールしていきます。表題の通り、Nginx・MySQL・PHPをEC2インスタンスにインストールする事がゴールです。
それでは早速、Wordpressに必要なツールの全体像を理解しましょう!
Wordpressに必要なツール
Wordpressの動作に必要なソフトウェアは、公式サイトに記述されています。
①PHP7.4以上
②MySQL5.6以上またはMariaDB10.1以上
③Nginxまたはmod_rewriteモジュールありのApache
厳密には、旧バージョンであるPHP7.4以前でもWordpressは動作しますが、公式でサポートされていないバージョンのため、最新の脆弱性をカバーするようなアップデートが行われておらずリスクがあります。そのためできるだけインストールするソフトウェアは新しいものを使うようにします。
Nginxのインストールと概要
まず最初に、Nginxの概要とインストールを行っていきましょう。
概要
Nginx(エンジンエックス)とは、WEBサーバーソフトウェアの一種です。もう1つ代表的なものに、Apacheがあります。NginxとApacheは用途に応じて使い分ける必要があり、性能を比較しながら考えていきましょう。
Nginx | Apache | |
---|---|---|
駆動方式 | イベント駆動アーキテクチャ | プロセス駆動アーキテクチャ |
メリット | 処理が軽く大量のリクエストを処理しやすい | 素早く設定が安易にできる |
デメリット | 容量の大きいデータの処理には向いていない | C10K問題を回避しにくい |
それでは表を見ながら違いを考えていきます!まず、プロセスとは簡単にいうと実行中のプログラムであり、そのプロセスの処理の仕方がお互いに異なります。Apacheでは、1リクエストに対して1プロセスと数えられ、同時接続数=プロセス数となるのです。
一方、Nginxでは、1つのプロセスの中で、複数のリクエストを処理する仕組みが搭載されています。この違いは、C10K問題(クライアント1万台問題)が解決できるかどうかという違いに直結するのです。
C10K問題というのは、Apacheが利用されていた時代に表出した問題で、ハードウェアとOSの構成上1万台を超える同時アクセスがあると、かなり負荷が高くなってしまう事、加えて物理的なプロセス数上限が3万台前後に収束してしまう問題です。
1つのコンピュータで捌けるプロセスの数というのは割り振れる番号の数の上限から決まっています。UNIX系のOSでは、プロセス番号を1から32,767まで割り振れる仕組みになっていますが、それ以上のプロセスは仕組み上絶対に捌く事ができません。そのため、Apacheのプロセス駆動アーキテクチャではC10K問題が必ず発生してしまうのです。加えて、プロセスが非常に多く割り振られるとメモリを酷使するため、処理が遅延する場合もあります。Nginxでは、プロセス数がApacheよりも少なくなる仕組みのため、このようなC10K問題が起こりにくいです。
この駆動方式による違いから、表のようなメリットデメリットが生じるのです。そのため、規模の大きな同時アクセスが見込め、高速な処理が必要な場合はNginx、小規模な環境で迅速にセットアップを行いたいならApacheのように使い分けるとよいでしょう。今回は、高速な処理を実現できるNginxを利用します!
インストール
まずは、ユーザをルートユーザ*に変更しておきましょう。ルートユーザに変更しておくと、ルートユーザとして実行する合図である「sudo」コマンドを今後省略できるようになります。もし途中でこのパートを終了して、再開する場合は常に以下のコマンドを実行してから進めてください。
*ルートユーザ:「root=根」の通り、Linuxのユーザを辿った時に大元となる管理者(最高権限をもつユーザ)のこと。
sudo su -
上の画像のように、ユーザーが「ec2-user」から「root」に変更されていれば正しく処理できています。
ルートユーザーに変更できたら、以下のコマンドを実行してインストールできるソフトウェアのリストを取得してみましょう。
amazon-linux-extras list
私たちが使っている、AmazonLinux2というOSでamazon-linux-exrtrasというパッケージが用意されています。今回のコマンドではそのパッケージに含まれているインストール可能なソフトウェアのリストを表示しています。以下の画像のような表示が出て来れば正しく入力できています。
非常に長いですね。この中にnginx1が確認できればインストールできるはずなので、先に進めていきましょう。上の画像では38番にnginx1が確認できます。
amazon-linux-extras install nginx1
これはそのままコピーペーストしてください。途中でyesかnoと入力する表示があるので、「y」と入力して先に進めてください。
amazon-linux-extrasのリストにnginx1が存在するにも関わらず、インストールできない場合は最初に入力した「sudo su -」が正しく処理されているか、そしてユーザーが「ec2-user」から「root」になっているか確認してください。
ではここで、もう一度リストを確認します。
amazon-linux-extras list
上の画像では、38番のnginxの部分がnginx1=latest enabledとなっていますね。これは、インストールが完了しているとこのような表示になります。皆さんの画面でも確認してください。
以上でnginxのインストールは終了になります。
PHPの概要とインストール
では次に、PHPの概要とインストールを行っていきましょう。
概要
PHPとは、動的にWEBサイトを生成できるプログラミング言語の一種で、Hypertext Preprocessorの略称です。
Wordpress自体がPHPで記述されていること、さらにテーマと呼ばれるWEBサイトのテンプレートや、機能を補完するプラグインなども同様にPHPで記述されていることから、PHPのインストールは欠かせません。
ただし、インストールした後にWordpressを利用する際は、PHPのアップデートを慎重に行わなければならない場合があります。それは、WEBサイトを作るために利用しているテーマやプラグインがPHPの特定のバージョンでなければ動作保証がなされていない事がよくあるためです。そのため、どうしても利用したいテーマやプラグインがある場合は、事前に望むPHPのバージョンでインストールする必要があります。
実際にWordpressを利用する際は重要な事なので、抑えておいてください。
インストール
それでは実際に、PHPのインストールを行いましょう。ターミナルを開いて進めていきます。
まず、インストール可能なソフトウェアのリストを確認してみましょう。
amazon-linux-extras list
この画像では、42番に「PHP7.4」が確認できますね。つまり、PHP7.4はこのリポジトリからダウンロードできるということになります。早速ダウンロードしてみましょう。
amazon-linux-extras install php7.4
ダウンロード方法は先ほどのNginxとほとんど同様です。上記のコマンドを入力してください。ダウンロードが完了したら、Nginx同様リストで確認します。
amazon-linux-extras list
42番がPHP7.4=latest Enableとなっていますね。これでPHPのインストールは完了です。
MySQLのインストールと概要
では最後にMySQLの概要とインストールを行います。
概要
MySQLとは、データベースを管理するソフトウェアの1つで古くから利用されています。データベースというのは名前の通り、様々なデータを保管・管理するためのシステムになります。
データベースには種類があり、
①リレーショナルデータベース
②階層型データベース
③ネットワーク型データベース
④NoSQL
が代表的な4つになります。他にも、キーバリュー型やグラフ志向など様々なものが存在します。必ずしも全てのデータベースが上記の4種類に分類出来る訳ではありません。
今回私たちが利用するMySQLはリレーショナルデータベースと呼ばれるものです。リレーショナルデータベースは、エクセルと同じように行と列を用いた表としてデータが保管されています。その表同士を結合・分離したり、様々なデータに対する操作がMySQLの仕事であり、リレーショナルデータベースと呼ばれるものの特徴になります。
今後のレッスンの中で、AWSが提供しているNoSQLについても学習する予定ですので、データベースには4つ種類があるという事を抑えておいてください。
インストール
それではMySQLのインストールに移ります。MySQLは先ほどまでと異なり、amazon-linux-extrasのリポジトリでは提供されていないので、yumコマンドを使用してインストールしていきましょう。yumコマンドは、Linuxが提供しているリポジトリで、amazonlinux2のリポジトリとは別の場所からインストールするという意識で捉えてください。
では、以下のコマンドをターミナルへコピーペーストしてみましょう。
$ 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 info mysql-community-server
一番上のコマンドが、”MySQLのrpmファイルと呼ばれるMySQLをインストールするためのファイルを、該当のURLからダウンロードする”というコマンドです。
中央の2行はMySQL8.0を無効化し、MySQL5.7を有効化するコマンドになります。rpmファイルには、MySQL8.0など今回必要のないバージョンのMySQLも存在しているため、それを無効化しインストールしたいバージョンであるMySQL5.7のみを有効化して進めます。
最後の行で、有効化が適切に適用されているか確認しています。
最後の行を実行して、上の画像と同様の画面が表示されたら、Versionの部分を5.7になっているか確認してください。上の画像では5.7.35となっていますね。35の部分はさらに細かいバージョンなので、違っても問題あありません。
問題なければ、以下のコマンドをコピーペーストして実際にインストールを行いましょう。
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-community-server php7.4 nginx1
2回ほど「y」の入力を求められた後、Complete!と表示されていれば問題なくインストールされています。ここまででMySQLのインストールは終了になります。