【高速化】WordPressをNginxで動かす!そのメリットと手順を解説

2021.07.05
安藤 大海
目次

はじめに

みなさん、こんにちは。Wakka Inc.のWebテクニカルディレクターの安藤です。
前回のWordPressサイト高速化のメソッドに引き続き、今回はNginxを活用した方法についてご紹介したいと思います。

ご存知の通り、サイトのアクセス数が増えてくるとサーバーに負荷がかかり、表示速度が遅くなったり、スクロールにカクつきが生じたりしてパフォーマンスが悪くなります。実際に、WordPressでサイトを運用している人の中には、解決が難しい動きの遅さに頭を抱えている方も少なくないでしょう。

サイトのパフォーマンスを向上させる方法はいくつもありますが、その中でもWebサーバーをNginxに変更方法をご紹介します。Nginxは高速なWebサーバーとして有名ですので、興味があるというエンジニアの方も多いのではないでしょうか。そんな方に向けて、Nginxの基本概要と人気の理由、ApacheからNginxへWordPressサイトを移行する方法をご紹介していきます。

Nginxとは?

『Nginx』とは、無料で利用できるオープンソースのWebサーバーです。HTTPやHTTPSはもちろんのこと、HTTPキャッシュやロードバランサの機能も持ちます。BSDライクライセンスでリリースされ、Igor Sysoevによって公開されました。Unix系やMicrosoft Windowsにも対応しており、さまざまなOSをサポートしています。2020年4月のw3techs.comによる調べでは、Webサーバーのシェアが2位です。Apacheの次に普及しているWebサーバーといえるでしょう。

Nginxがリリースされた当初は情報が少なく、Apacheが広く使われていたということもあり、あまり導入されていませんでした。しかし、2020年代になってから情報も豊富になり、高速なWebサーバーであることから普及が進み、現在ではエンジニアの多くの方たちがよく知るWebサーバーとなったのです。

Apacheとの違いについて

Nginxを語る上で外せないのがApacheでしょう。実際に、両者にはどのような違いがあるのでしょうか。

主な違いは、駆動方式です。Apacheはマルチプロセスのプロセス駆動アーキテクチャを採用しています。このアキテクチャーは、それぞれのリクエストに対してプロセスを割り当てて処理する仕組みです。そのため、大量のリクエストが来た場合、負荷がたくさんかかります。

一方、Nginxはシングルスレッドのイベント駆動アーキテクチャです。JavaScriptでバックエンド開発ができるNode.jsと同じ駆動方式で、イベントループ方式を採用しています。大量のリクエストが発生したときも少ないプロセスで処理することができ、C10K問題を解決することが可能です。

Nginxが人気の理由

Nginxは非常に人気の高いWebサーバーのひとつとして知られています。具体的に人気の理由は下記の通りです。

高負荷にも耐えられるWebサーバー

人気の理由は、高負荷に耐えられることです。まとまったリクエストを1のプロセスで処理することができるため、メモリの消費を抑えることができます。そのため、平均してアクセスの多いサイトや急激にアクセス数が伸びる機会のあるサイトから人気です。

同時接続数が多い

多くの同時接続数に対応できることも人気の理由になります。人気のWebサーバーにApacheがありますが、それと比較して10〜100倍の同時接続数に対応することが可能です。そのため、Webサイトだけでなく、ECサイトやアプリケーションのサーバーとしても使われる機会が多くなっています。

カスタマイズに優れている

オープンソースのソフトウェアになるため、カスタマイズすることが容易です。また、Nginxにあるさまざまな機能はモジュール化されています。これにより、機能の取り外しがしやすくなっているため、必要な機能のみを搭載して起動することが可能です。これにより、Webサーバーの軽量化を実現することができるでしょう。また、オリジナルの機能を開発して追加することもできます。このように、柔軟にカスタマイズができるので、人気が高まっているのです。

Webサーバーに必要な機能が備わっている

必要な機能が最低限揃っていることも人気の理由のひとつとして挙げられます。例えば、リバースプロキシです。リバースプロキシはサーバー・クライアント間の仲介役で、要求や応答が発生した際、必ずそこを通過しなければならないため、セキュリティや性能向上を期待することができるのです。また、ロードバランサによって負荷分散が行われるため、安定したサーバー運用ができます。

Nginxに適さないWebサイトとは?

このように、メリットがたくさんありますが、逆にNginxを採用しないほうがいいサイトはあるのでしょうか。例を挙げて具体的に解説します。

重いデータを扱うサイト

Nginxは非同期処理のイベント駆動型です。たくさんのリクエストを処理する能力には優れていますが、逆に重いデータを扱わなければならないサイトには不向きになります。例えば、動画を配信するサービスなどです。動画データは重いので、多くのリソースを消費します。そのほかにもデータベース処理が多いものや重いアプリケーションを実行する機会があるものは適しません。

豊富な機能を実装するサイト

WordPressを動作させるためにはPHPが必要ですなのですが、Apacheには標準でPHPモジュールが備わっており、スムーズに使用できます。一方、Nginxにはそのようなモジュールがありません。そのため、リバースプロキシの配下にアプリケーションサーバーを用意して処理させる必要があります。

ApacheからNginxに乗り換える手順

最後に、ApacheからNginxに乗り換える手順を解説します。今回、Nginxをインストールする環境はCentOS 7です。それぞれの環境に合わせて手順通りに設定をしましょう。また、記事を参考にする場合は自己責任で作業してください。バックアップを取ったり、テスト環境で行ったりするなどの対策を講じましょう。

1.まず、起動中のApacheを停止します。コンソールでApacheのWebサーバーを止めてください。

service httpd stop

2.すでにApacheでWordPressを運用している場合、必要なPHPモジュールはインストールされているはずです。そのため、今回はNginx上でWordPressを動かすための、php-fpmのみをインストールしてください。

yum install php-fpm

3.次に、Nginxをインストールします。まずはリポジトリを登録してください。

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

4.そして、Nginxをインストールします。

yum install nginx

5.インストールが完了したら下記のコマンドでバージョンを確認してください。問題なく表示されれば、Nginxのインストールが完了です。

nginx -v

6.先ほどインストールしたphp-fpmの設定をします。www.confファイルを編集し、apacheと書かれている部分をnginxに置き換えてください。

vi /etc/php-fpm.d/www.conf

7.次にNginxのconfファイルの設定を変更します。rootと記載された部分に自身のドキュメントルートを指定してください。

vi /etc/nginx/conf.d/default.conf

8.PHPセッションを有効にします。

chown -R nginx.nginx /var/lib/php/session/

9.ルートオーナーの変更してください。

chown -R nginx.nginx 任意のドキュメントルート

10.php-fpmとNginxを起動します。

service php-fpm start
service nginx start

Nginxに移行して高速に動作するサイトを目指す!

今回は、Nginxの概要や人気の理由、ApacheからNginxに移行する手順をご紹介しました。Nginxは、シングルスレッドのアーキテクチャを採用し、非同期処理になるため、さまざまなリクエストを1つのプロセスで処理できるというメリットがあります。そのため、アクセスの多いサイトに向いており、ApacheからNginxに移行すれば、高速化させることができるでしょう。しかし、重いデータを処理する機会の多いサイトには不向きなので、Apacheから乗り換える際は十分に検討してください。

弊社ではオフショアラボ型開発を通じて、サイトの構築から既存サイトの高速化・運用保守のご支援をしています。
もし、『やりたいことがあるのに、リソースが不足していてできない』などお困りのことがございましたら、まずは以下フォームからお気軽にお問い合わせください。

この記事を書いた人
安藤 大海

学生時代にWebサイトを自作したことがきっかけでWebの世界に。制作会社でデザイン、WordPressテーマ開発の実務を経て、テクニカル・ディレクターとして大規模サイト構築のディレクションを経験。2021年からWakka Inc.の日本拠点でWebディレクターとして参画。最近はブロックエディタになったWordPressをもう一度、勉強しています。

  • ホーム
  • ブログ
  • 【高速化】WordPressをNginxで動かす!そのメリットと手順を解説
Contacts

Wakkaについて詳しく知りたい方はこちら