2013年5月22日水曜日

PHP5.5 + nginx1.4 + php-fpm + Zend OPcacheを立ち上げてみよう

Conway L.

PHP5.5 + nginx1.4 + php-fpm + Zend OPcacheのインストールメモです
OSはCentOS6です

# cat /etc/redhat-release                                                              
CentOS release 6.4 (Final)


PHPの最新版をインストール

※ここでインストールしているのはPHP 5.5.0RC1で、リリース候補版です
プロダクション環境では安定版のほうが、たぶん良いでしょう

# rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# yum --enablerepo=remi-test install php php-common php-mbstring php-pdo php-cli php-devel php-fpm
# php --version
PHP 5.5.0RC1 (cli) (built: May  8 2013 21:08:03)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0-dev, Copyright (c) 1998-2013 Zend Technologies


nginxの最新版をインストール

# wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
# rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm
# yum install nginx
# nginx -v
nginx version: nginx/1.4.1


サーバ立ち上げ時に、PHP-FPMが自動起動するようにchkconfigを設定しておく

# /sbin/chkconfig php-fpm on
# /sbin/chkconfig --list


nginxの設定を編集

# cp -r /etc/nginx /etc/nginx.org
# emacs /etc/nginx/conf.d/default.conf

ルートディレクトリの箇所を編集

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }


    root   /usr/share/nginx/html;
    index  index.php index.html;


PHP-FPM向けの設定を追記

    location ~ \.php$ {
      fastcgi_pass unix:/tmp/php.socket;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
      fastcgi_pass_header "X-Accel-Redirect";
      fastcgi_pass_header "X-Accel-Expires";
    }


nginxをリスタート
# /etc/init.d/nginx restart



PHP-FPMの設定を編集

# cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.org
# emacs /etc/php-fpm.d/www.conf

php.socketとの通信を有効にする

#listen = 127.0.0.1:9000
listen = /tmp/php.socket

ユーザをnginxにする

; RPM: apache Choosed to be able to access some dir as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache



; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx


タイムゾーンを東京にする

php_admin_value[date.timezone]= 'Asia/Tokyo'

PHP-FPMをリスタート

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

phpinfoを出すphpファイルを設置

# emacs /usr/share/nginx/html/index.php
<?php phpinfo(); ?>

ブラウザで確認してみましょう



Zend OPcacheをインストールしてみる

Zend OPcacheは、PHP 5.5 のコードキャッシュです
このスライドが参考になります


# yum --enablerepo=remi-test install php-opcache
# php -v
PHP 5.5.0RC1 (cli) (built: May  8 2013 21:08:03)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0-dev, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.2-dev, Copyright (c) 1999-2013, by Zend Technologies

Zend OPcacheと出ました


Opcache Control Panel



Zend OPcacheの状況が見れるスクリプトが公開されています
これを設置しておくと良いでしょう

OCP – Opcache Control Panel
https://gist.github.com/ck-on/4959032


# cd /usr/share/nginx/html/
# wget https://gist.github.com/ck-on/4959032/raw/0b871b345fd6cfcd6d2be030c1f33d1ad6a475cb/ocp.php

※便宜パスワードなど掛けておきましょう