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 の設定とあわせて、うまいところを見つけてあげないとなーと。
何かの参考になれば。
さて、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 の設定とあわせて、うまいところを見つけてあげないとなーと。
何かの参考になれば。