Nginxとは何じゃらほいというところからですが、ここは他のサイトを見た方が細かくわかりやすく説明されていると思うので説明は割愛させていただきますが、NginxとPHPの説明について軽く触れたいと思います。
最初にPHPについてですが、モジュール版とCGI版があることをご存知ですか?
まずモジュール版についてですが、Webサーバのプロセスの中でPHPを実行する方法です。
メリットとしては、PHP起動時にわざわざPHPの実行プロセスを立ち上げずにWebサーバと一緒に起動させるため、動作速度が高速になります。
デメリットとしては、Webサーバはrootなどユーザー1つで動かすため、共用サーバなどユーザーが複数いる環境では色々リスクがあります。
例えば1つのユーザが作ったPHPの処理に高負荷がかかった時、同一のWebサーバプロセスで動いている他のユーザの処理にも影響が発生します。
次にCGI版ですが、こちらはWebサーバとは別のプロセスでPHPが実行されます。
メリットとしては、PHPの処理ごとにプロセスが異なるため、ユーザーが複数いる環境でもモジュール版で発生していたようなリスクは軽減されます。
高負荷のPHP処理があった場合でも、そのプロセスだけ停止させれば良いのです。
ただしデメリットとしては、Webサーバとは別のプロセスとして動かすため、実行するたびにプロセスの生成と破棄が必要となり、動作速度が遅くなります。
ApacheとNginxの区分けで言いますと、
モジュール版がApache、CGI版がNginxになります。
あれ?
NginxはCGI使ってるの?
じゃあApacheより遅くなるんじゃないの?
と思いますよね。
ご安心ください。
Nginxは通常のCGIではなく、FastCGIというものを使っています。
FastCGIは、プロセスをメモリ上に永続化させるため、生成と破棄にかかる時間を短縮します。
こうして通常のCGIに比べてパフォーマンスを向上させるのです。
また、NginxではサーバとPHPの処理プロセスが異なるため、
PHPの処理が高負荷になってもサーバへの影響はApacheに比べて軽減され、メモリの消費も抑えることができるのです。
さて、前おきが長くなりますが、設定作業に移ります。
今回はルートディレクトリを/var/wwwとし、phpinfo()の結果が出力されるまでの動作確認とします。
※CentOSのバージョンは6.8を使用しています。
まずはphp-fpmのインストールです。
php-fpmはPHPをFastCGIで動作させるための仕組みです。
yum -y install php-fpm
設定ファイルを編集しましょう。
/etc/php-fpm.d/www.conf
(変更前後のdiffになります)
39c39 < user = apache --- > user = nginx 41c41 < group = apache --- > group = nginx
yumリポジトリをCentOSに登録します。
(これやらないとyumでNginxのインストールができません。)
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
Nginxをインストールします。
yum -y install nginx
Nginxの設定ファイルを編集します。
/etc/nginx/conf.d/default.conf
(ルートディレクトリを/var/wwwとしています。)
9,10c9,10 < root /usr/share/nginx/html; < index index.html index.htm; --- > root /var/www; > index index.php; 30,36c30,36 < #location ~ .php$ { < # root html; < # fastcgi_pass 127.0.0.1:9000; < # fastcgi_index index.php; < # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; < # include fastcgi_params; < #} --- > 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; > }
上記を見ていただければ分かりますが、
FastCGIで起動させるスクリプトの場所を指定しています。
動作確認用のファイルを用意します。
cd /var mkdir www vim index.php
<?php phpinfo(); ?>
php-fpmを起動します。
/etc/init.d/php-fpm start chkconfig php-fpm on
Nginxを起動します。
/etc/init.d/nginx restart
これでブラウザからアクセスしてphpinfo()の情報が表示されればOKです!
全然難しくないですね。