nignxでphpを動かしてみる(前回の続き)

今回は前回にインストールしたphp,php-fpm,nginxを使ってphpを実行してみたいと思う。

phpとnginxの連携

参考文献
www.spiceworks.co.jp

上記のサイトで書かれているが、ngixでphpを動かすにはcgiがプログラムを動かすように設定する必要があります。
ここで登場するのがphp-fpmでありこれはphp-FastCGI Process Managerの略でありcgiです。

そもそもcgiとは

HTTPはステートレスなプロトコルであり、ただユーザーが指定した静的なファイル(HTML)を呼び出すと言う機能しかありません。
そのため、サーバー上でプログラムを動作させるために必要な仕組みとしてcgiがあります。
cgiの処理の流れとしては以下の様になる。

  1. クライアントがサーバーに対してファイルを要求する。
  2. サーバーはcgiを起動させプログラムを処理する。
  3. その結果をクライアントに渡す。

php-fpmはFastCGIぞ?

FastCGIとはCGIの問題点を解決したものらしいですね。
CGIはリクエストのたびにプロセスを起動しそれが終わったら終了させています。この場合起動、終了に時間がかかったりサーバーに負荷がかかります。そのためFastGCIはリクエスト毎に新しいプロセスを作成するのではなく永続的なプロセスを利用してリクエストの処理をします。
つまり前回紹介したphp-fpmの起動コマンドはphpファイルを実行させるために必要なコマンドだったってことですね

因みに

php-fpmの設定

/etc/php-fpm.d/www.confファイルを開こう。デフォルトだとuser,group,listenの欄がapacheにowner,listen.groupの欄がnobodyになってると思う。
ここを両方nginxに変えてあげよう。ポート接続からソケット接続に変更してあげよう。listen = 127.0.0.1:9000となっているところを/var/run/php-fpm/php-fpm.sockに変えたらおk。

user = nginx
group = nginx

listen = /var/run/php-fpm/php-fpm.sock

listen.owner = nginx
listen.group = nginx

nginxの設定

/etc/nginx/nginx.confファイルで以下のコードがコメントアウトされていると思う。なのでコメントアウトを取ってあげよう。

location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

またデフォルトではnginxのドキュメントルートは/usr/share/nginx/htmlとなっているが今回は/var/www/に変更してみた。

location / {
        root     /var/www;
        index    index.html index.htm index.php;
        try_files $uri $uri/ /index.php?$args;
    }

最後にphp-fpmとnginxを起動させさっき設定したドキュメントルートにphpファイルをおけば完了。
phpinfoを置くのが多いらしいので私もphpinfoを置いてみました。

ブラウザで[http//:ipアドレス]に接続して表示されたら終了です!