Digitra

LINUXサーバの設定やプログラムのことなどを中心にブログを書いています。

EC2にNginxとPHP7で爆速環境を作る

ずっとApacheしか使ってなかったのですが、最近仕事でApacheが詰まりまくるので、前から気になっていたNginx(エンジンエックスって読むんだね)と、最近リリースされたPHP7が従来のPHPと比べて2倍ぐらい早いらしいので、Nginx+PHP7の環境をEC2(t2.micro)に構築してみる。

 

 

EC2のインスタンス作成とアップデート

AmazonLinuxのAIMでt2.microインスタンスを作成。
セキュリティグループでは、HTTPを追加する。

インスタンスが生成されたら、SSHでログインし、ミドルウェアパッケージの更新を行う。

$ sudo yum update -y

 

PHP7のインストール

yumのCentOS6用のリポジトリを追加し、PHP7をインストール。

$ sudo rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

$ sudo yum install --enablerepo=webtatic-testing php70w php70w-devel php70w-fpm php70w-mysql php70w-mb

 

Nginxをインストール

$ sudo yum install nginx


/etc/nginx/nginx.conf の以下の項目を修正

        #ドキュメントルートを変更
        root         /var/www/html;

        #indexの設定を追加
        location / {
                index index.html index.php;
        }

        #コメントアウトを外す,ディレクトリを修正
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
            include        fastcgi_params;
        }

 

サービスの設定

Nginxの場合、Apacheとは違い、Nginxを起動してもPHPが動くわけではない。
PHP-fpmのプロセスを起動する必要がある。

$ sudo service nginx start
$ sudo service php-fpm start


サーバが再起動した際に自動的にサービスが起動するようにする

$ sudo chkconfig nginx on
$ sudo chkconfig php-fpm on

 

phpinfoの内容を確認

vi /var/www/html/index.php

<?php
phpinfo();

 

本当に爆速なのか?

Apache Benchを使ってベンチーマークしてみる。

ベンチマーク用のプログラム(for文で1000回 echoしてみる)

<?php
for ( $i=0; $i < 1000; $i++ ) {
    echo "Hello world! \n";
}

どこか別のサーバからabコマンドで計測する

$ ab -n 10 -c 10 http://dev.digitra.net/bench.php
Requests per second:    688.47 [#/sec] (mean)

ちなみに同じt2.microのEC2でApache+PHP5.3で計測すると

Requests per second:    467.31 [#/sec] (mean)

おお、たしかに早い。もっとクライアント数を増やしてみるとおそらく更に差が顕著になるかと思われ。

参考にしたサイト

Amazon EC2(Amazon Linux)にPHP7をyumでインストールし、Nginxで表示
http://owani.net/php/php7-nginx/285/