結局、アップデートしちゃいました。このブログサーバーをCentOS 7 / PHP7ベースのphp-fpmにアップデートして、かなり動きが機敏になりました。
だって、マジで、速いんだもん。PHP7。ホント速い。これは是非アップデートすべきですね。という訳で、php-fpmのdockerコンテナをCentOS 7ベースにするとともに、PHP7にアップデートしました。
dockerコンテナで構成しているので、このphp-fpmのユニットだけをアップデートするのとか、とても簡単で助かります。
作り方。相変わらずDockerfileにしていないのは・・・いつか改める予定(苦笑)。
まずはCentOS 7のコンテナを起こす。一応、varとかは既存コンテナとは別。コンテンツディレクトリはvirtualでマウント。
docker run -it -h php7-fpm.home --name php7-fpm.home -v /share/www/html:/var/www/html -v /share/php7-fpm.home/var/log:/var/log -v /share/socks:/socks --link mariadb.home:mariadb.home centos:centos7 /bin/bash
やることは、yum updateして、TimeZone調整して、epelとremiをリポジトリに追加して、php7をバイナリ名透過(phpとかがphp7になる)でインストール。ちなみに、別のリポジトリを指定すると、php7として別バイナリでインストールすることも可能なようです。
yum -y install epel-release yum -y update ln -sf /usr/share/zoneinfo/Japan /etc/localtime rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm yum -y install --enablerepo=remi --enablerepo=remi-php70 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-fpm php-gd php-pecl-apcu
2個、大事なことがあります。
まず、Newrelicを使っている方、Agentがphp7に対応していません。なので、NewrelicのAPMは使えなくなります。これを気にして、しばらくバージョン・アップ躊躇していたんですが、「俺のブログサーバーはNewrelicのために運用してるんじゃない」ということに気がついて、考えるのをやめました。他のプラグインは使えますので、全体の監視状態としては特段問題になるレベルではないです。
あと、上記に関連するかもしれませんが、以前phpセットアップしたとき、一緒にインストールしていたphp-pecl-xhprofというモジュールがあるんですが、これまたphp7に対応していません。このプロファイラがあることで、処理の内訳が見えたりするんだと思いますが、実用には問題ありませんので、これも対象から削除です。
その他のモジュールは特に問題無く入りますので、気にする必要は無いです。
php-fpmの設定ファイルwww.conf(デフォルトファイル名)ですが、特にオプションに大きな変更は無さそうですので、そのままコピーして動かします。
この状態で、既存php-fpmコンテナを止めて、新しいphp-fpmコンテナ内でphp-fpmを起動するとかすることで、動作確認します。exposeやunix domain socketファイルを揃えておけば、一時的な切り替えも簡単にできますね(ウチは極力unix domain socket化しています)。
あとは、一旦コンテナをコミットして、再度php-fpmをforegroundで起動しなおして差し替えてあげれば終了。このとき、コンテナ名をphp-fpmが動いていたコンテナ名を継承すると、link等の設定もそのままで切り替えられて楽チンです。
docker run -d -h php-fpm.home --name php-fpm.home -v /share/www/html:/var/www/html -v /share/php-fpm.home/var/log:/var/log -v /share/socks:/socks --link mariadb.home:mariadb.home centos7/php7-fpm /usr/sbin/php-fpm --nodaemonize
最終的にイメージは、「centos7/php7-fpm」ってな名前にして識別できるようにしました。ログディレクトリ等はそのまま引き継ぎました(殆どログ吐かないし)。
さて、じゃぁphp7にしたら、どれくらい速くなったか。
体感的には、「目に見えて高速」になりました。もの凄く速くなった。ただし、PageSpeed Insightsで見る限りは、殆どスコア変わらず。
mobile 64 / pc 72 → mobile 65 / pc 73
この数字、どれくらいが目標なのか、正直判断が難しいところで・・・。ただ、この辺まで来ると、スコア1個上げるのもなかなか難しいところなので、あまり気にしても仕方ないかなぁと思います。一つ、明らかに良くなったのは、サーバー応答時間が改善されたこと。「サーバーは素早く応答しています」って評価されるようになりました。
そんな訳で、このサーバー、CentOS 7 / PHP7で動き出しました。あ、でも、ホストOSがCentOS 6なので、あくまでコンテナイメージがCentOS 7って言うだけなんですがね。
コメント