読者です 読者をやめる 読者になる 読者になる

【Nginx】CentOS6.4 に Nginx + PHP をインストールする

nginxでPHPを動かす。
結構前にNginxを試してみて、
最近再度インストールしたから、
その時のまとめ。

OSはCentOS6.4です。

【nginxのインストール】

nginx専用リポジトリがあるので、それを追加し、
yumでインストールする。

---追記---
remiリポジトリにも nginx はある。
nginxのバージョンを確認して問題なければ remi でもいいと思う。
---------

まずは、最新版のリポジトリを確認する。
http://nginx.org/packages/centos/6/noarch/RPMS/

リポジトリを追加する。
# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

インストールする
# yum install nginx

ここでFireWallがHTTPを弾いていないかをチェックするといい。

phpのインストール】
Apacheのようにモジュールで動かせないので、
php-fpmという拡張パッケージを使う。

まずは、remiをインストールしておく。

その後、通常のphpパッケージに加えて、「php-fpm」を yum でインストールする。
# yum -y install php-fpm

拡張モジュールをインストールする。(ここは自由に指定してOK)
# yum -y install php-devel php-gd php-mbstring php-mysql php-pdo php-pear php-xml php-imap

セッションディレクトリ「/var/lib/php/session」の権限を確認する。
ここがApacheになっているとNginxでセッションが使えないので、
Apacheの場合はchownでnginxにしておく。


php-fpmの設定】
「/etc/php-fpm.d/www.conf」でuserとgroupを nginx に変更する。

                                            • -

user = nginx
group = nginx

                                          • -


【nginxの設定】
「/etc/nginx/conf.d/default.conf」phpを編集する

                                      • -

charset utf-8;

location / {
root /usr/share/nginx/html;
index index.html index.htm index.php; //最後に index.php を追記する。
}


location ~ \.php$ {
root /usr/share/nginx/html; //ドキュメントルートを指定
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;

//これをコメントアウト
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

//これを追加する。
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;
}

//ベンチマーク用のstatusを有効にする
location = /status {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /status;
fastcgi_pass 127.0.0.1:9000;
access_log off;
}
location /nginx_status {
stub_status on;
access_log off;
allow 192.168.1.1; //このIPを許可する。
deny all;
}

                                        • -


再起動して終わり

# /etc/init.d/php-fpm restart
# /etc/init.d/nginx restart


ドキュメントルートは「/usr/share/nginx/html」
statusは http://IP/nginx_status で確認できる。

結局Webサーバだからか、設定ファイルとかはApacheと同じような印象を受ける。