ConoHa VPS での CentOS 6.4 + nginx + php-fpm + Zend Framework 1系

さて、ConoHa VPS で CentOS 6.4 + nginx + php-fpm という環境を構築してみよう。ちなみに、動かすシステムは Zend Framework 1系で作ってあって、アクセスを /index.php に rewrite してあげる必要がある。このへんのことも書く。

nginx のインストール

ConoHa VPS で標準インストールされてる CentOS 6.4 には EPEL リポジトリが最初から追加してあった(/etc/yum.repos.d/epel.repo)。なので yum list | grep nginx とすると nginx 1.0 系のパッケージが見つかる。でもこれは古い。

最新の nginx を yum でインストールするには yum に nginx のリポジトリを追加してあげるといいらしい。/etc/yum.repos.d に nginx.repo という名前で以下のテキストファイルと作ってあげる。


# vi /etc/yum.repos.d/nginx.repo

($brush:plain)
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

nginx.repo を保存したら yum で nginx の最新版がインストールできる。


# yum list | grep nginx
nginx.x86_64                            1.4.2-1.el6.ngx                 @nginx

1.4.2 というのが当時の最新版だった。さて、インストール。


# yum install nginx

php-fpm のインストール

php-fpm は yum で簡単にインストールできる。


# yum install php-fpm

ちなみに、php-fpm の他にインストールした php 関連のパッケージは以下


# yum list installed | grep php
php.x86_64                           5.3.3-23.el6_4                     @updates
php-cli.x86_64                       5.3.3-23.el6_4                     @updates
php-common.x86_64                    5.3.3-23.el6_4                     @updates
php-devel.x86_64                     5.3.3-23.el6_4                     @updates
php-fpm.x86_64                       5.3.3-23.el6_4                     @updates
php-gd.x86_64                        5.3.3-23.el6_4                     @updates
php-mbstring.x86_64                  5.3.3-23.el6_4                     @updates
php-mysql.x86_64                     5.3.3-23.el6_4                     @updates
php-pdo.x86_64                       5.3.3-23.el6_4                     @updates
php-pear.noarch                      1:1.9.4-4.el6                      @base
php-pecl-apc.x86_64                  3.1.9-2.el6                        @base
php-xml.x86_64                       5.3.3-23.el6_4                     @updates

apc もインストールしてる。

さて、nginx と php-fpm を構成しよう。

/etc/php-fpm.conf はデフォルトのまま。

/etc/php-fpm.d/www.conf


; user/group を nginx に変更
user = nginx
group = nginx

; ConoHa の 1GB プランなので以下の設定で様子を見る
pm = dynamic
pm.max_children = 15
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500

/etc/nginx/nginx.conf


http {
    ~略~

    # localhost (127.0.0.1) からのアクセスを識別する
    geo $lh {
        default       0;
        127.0.0.1/32  1;
    }

    # サーバーの詳細を出力しない
    server_tokens off;
}

/etc/nginx/conf.d/default.conf


server {
    listen       80;
    server_name  localhost;

    # バッファサイズを変更 8k → 16k
    proxy_buffering    on;
    proxy_buffer_size  16k;
    proxy_buffers      8 16k;

    # ドキュメントルートを /data/www/html にする
    root   /data/www/html;

    # インデックス設定
    index  index.php index.html;

    # ドキュメントルートの構成
    location / {
        # localhost (127.0.0.1) からのアクセスをログに残さない
        if ($lh) {
            access_log  off;
        }
        # ファイルがなかったら /index.php にリライトする
        if (!-e $request_filename) {
            rewrite ^.*$ /index.php last;
        }
    }

    # php スクリプトの構成
    location ~ \.php$ {
        # localhost (127.0.0.1) からのアクセスをログに残さない
        if ($lh) {
            access_log  off;
        }
        # /etc/php-fpm.d/www.conf の listen の値を指定
        fastcgi_pass   127.0.0.1:9000;
        # インデックス設定
        fastcgi_index  index.php;
        # パスをドキュメントルートと同じにする
        fastcgi_param  SCRIPT_FILENAME  /data/www/html$fastcgi_script_name;
        # これはテンプレートと思う
        include        fastcgi_params;
    }
}

上記設定ファイルで、Zend Framework 1系用の rewrite がうまくいってる。ただし、運用したてなのでパフォーマンスのチューニングはまだ途中... という感じ。php-apc の設定とあわせて、うまいところを見つけてあげないとなーと。

何かの参考になれば。

Recent articles

Categories

Monthly archive

  • (Empty)