NginxでPHPを動かす!Apacheとの違いや設定方法を紹介
Nginx(エンジンエックス)というものをご存知でしょうか。
近年徐々に注目を浴びるようになり、そのシェアも伸びているため、実はWebサイトを利用している多くの一般ユーザーも知らず知らずのうちに接しているかもしれません。
ここでは、Nginxの特徴や、PHPを動かすための設定方法などを紹介していきます。
Nginxとは?そのままだとPHPは動かない?
Webサーバーのソフトウェアと言えば「Apache(アパッチ)」をイメージする人も多いのではないでしょうか。
Webサーバーはブラウザからの要求に対応して動作するもので、例えばWebサイトを閲覧しようとブラウザからアクセスする際、その要求はWebサーバーに送信され、これを受け取ったWebサーバーはファイルを探してブラウザに返します。この動作は、ApacheなどのWebサーバーソフトウェアがあることで成り立っています。
そしてこのような機能を持つソフトウェアはApache以外にもあります。その中でも「Nginx(エンジンエックス)」はApacheに次いで注目されています。
Nginxは近年、Apacheにはない機能や特徴を持っていることなどからシェアを伸ばしており、場合によってはApacheや他のWebサーバーソフトウェアを利用するよりも良い働きをすることもあります。ただし、Nginxを導入するだけで自動的にPHPが動作するわけではありません。PHPを使えるようにするためには、最初にいくつかの設定を行う必要があります。
以下でその設定方法や、Apacheと比べてNginxにはどのような特徴があるのかを見ていきましょう。
NginxとApacheの主な違い
Nginxはオープンソースソフトウェアです。誰でも無償で利用することができる点などもApacheと共通しています。ただし、動作の方式に違いがあることなどからそれぞれを使うことのメリット・デメリットは異なります。
処理が早い
NginxをApacheと比べた場合、Nginxのほうが処理が早いという特徴があります。ただしこれはどのような状況下で使うのか、また、どのような処理を行うのかによって変わってきます。Apacheの方が優位になる場合もあり、常にNginxのほうが高速であるとは限りません。
負荷に強い
Nginxは比較的高負荷に強く、同時に多数のアクセスが来た場合などにも対処が可能です。これに対しApacheはNginxほど高負荷には強くなく、メモリもいっぱいになり易いです。
もともとNginxは大容量のデータを配信することや、同時に多数の接続が来ても耐えられるようにすることを目的として設計されているためこのような性能となっています。
Apacheでもモジュールの設定をチューニングすることでパフォーマンスの向上が図れますが、一般的にはNginxの処理能力のほうが数十%高いと言われています。
重い処理は苦手
一方で、NginxはCPUリソースが多く必要な処理、処理時間が長くなる処理の実行では処理能力が落ちてしまうという特徴があります。そのため、Nginxでは処理の軽いリクエストを大量に処理することに向いているWebサーバーソフトウェアであると言えるでしょう。
リバースプロキシ機能
Nginxの高負荷に対する強さは、リバースプロキシの機能も関係しています。リバースプロキシの機能が備わっていると負荷を分散できるのです。
初期設定ではPHPが動作しない
多くのWebサーバーで動作しているApacheは、モジュールとしてPHPスクリプトを起動することができます。PHPのインストールではPHPモジュールも自動でインストールされるため、Apacheを使用する場合には特に意識することなくそのままPHPを使えるようになっているのです。
モジュール版ではWebサーバーのプロセスの中でPHPを実行していますが、Nginxではモジュール版ではなくFastCGIでPHPが実行されます。そのためWebサーバーとは別のプロセスで実行され、通常のCGI版より動作速度の向上および負荷の低下が可能となっています。
しかしNiginxでPHPを扱う場合、そのための設定が必要になります。
NginxでPHPが動くようにする設定方法
WebサーバーとしてNginxを採用した場合、PHPを実行するために設定が必要です。そこで、PHP-FPMのインストールと設定、さらにNginxの設定を変更してPHPが実行できるまでの流れを把握しましょう。
PHP-FPMのインストール
まずはPHP-FPMのインストールを行い、その設定を変更しなくてはなりません。PHP-FPMの設定ファイル「/etc/php-fpm.d/www.conf」にある、PHP-FPMプロセスを実行できるユーザー(user)およびグループ(group)にそれぞれApacheとなっているところをNginxに変更していきます。
Nginxの設定変更
Nginxの設定ファイル「/etc/nginx/nginx.conf」を修正していきます。
ドキュメントルートを「/var/www」とする場合、rootを同じように「/var/www」と書き換え、ほかのドキュメントルートが記載されている部分にも反映させていきます。そしてindexでPHPファイル「index.php」を読み込むようにファイル名を加えます。
例えば下記のような形になります。
location / {
root /var/www;
index index.php;
}
location ~ \.php$ {
root /var/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
}
設定終了後、PHP-FPMを起動してNginxの再起動を行い、ブラウザからindex.phpを実行してPHPが動いているか確認してみましょう。index.phpには、
<?php
phpinfo();
?>
と記述しておけば、PHPの実行に成功したときに phpinfo() の結果が表示されるため確認ができます。
まとめ
NginxはApacheと同じようにWebサーバー上で機能するソフトウェアです。
役割としてはほとんど同じですが、その性能には違いがあります。それぞれに長所と短所があり、Nginxの方はApacheに比べて高負荷に強いなどの特徴を持っています。しかしApacheのようにPHPを動作させるにはNginx導入時に設定を行わなければならず、ひと手間が必要になってしまいます。
慣れていない人にとっては作業が必要になるというだけで面倒に感じるかもしれませんが、実際に設定をしてみるとそれほど時間のかかるものではなく、簡単にできるということが分かります。PHP-FPMのインストールとその設定ファイルの変更、その後Nginxの設定ファイルに一部変更を加えるというのが基本的な流れです。
興味のある方は一度 Nginx を使ってみてはいかがでしょうか。