俺のブログサーバーをCentOS 7 / PHP7ベースにアップデートした件。

Linux

結局、アップデートしちゃいました。このブログサーバーを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って言うだけなんですがね。

コメント

タイトルとURLをコピーしました