HHVMからPHPへ乗り換えました


ある日のこと、HHVMがさよならPHPという発表をした。「Ending Support for PHP」。WordpressもPHP5のサポートはしなくなるし、HHVMのサポートなんてものは当然なし。
一体いつ気付いたのかはまったく覚えていないけれど、いつの日かやらんとなあと漠然と思っていたのだ。若干遅い気もしないでもないけど。

そもそも何故にHHVMにしたのかというと、たしか、、WordCamp2015か2016かは忘れてしまったけれど、「中間バイナリとなんやかんやでWordPressが超はやいで」という感じのセッションを見た当時のぼくは帰宅して即時でHHVMを調べだしてしまうくらいにショックを受けた。というような記憶がぼんやりうっすらと残っている。

調べてみるとすぐに出てきた。そんな時代なのだな。

https://2015.kansai.wordcamp.org/session/hhvm-ultrahighspeed-wordpress-hack/
HHVM + Hack によるWordPressの超高速化

何故にいつからレスポンスの速度などなどを気にするようになったかというきっかけは、何かしらでブログがバズったときに、ほとんどのレスポンスを返せていなかったということが元の発端なのだ。それからさくらのVPSからクラウドに乗り換え、設定を見直したりなんやかんやとやった。記憶が不確かだけれど、たぶんというかだいたいはそんな感じ。
故に最新の技術に情熱を持っていただとか、もっと尖っていたという訳ではなく。とは言うても、なにやら熱いものを感じるぜ、感は否めないかもしれない。

そんなふうに考えていた時期が俺にもありました。

そしてNginx+HHVMな環境にしてから数ヶ月が経った頃、、PHPも中間コードを採用するというニュースを見たのだ。
あの日のことは忘れない。とまでは言わないが、PHPバイトコードキャッシュ:Opcacheというやつだ。多少のショックを受けたような記憶がある。

そんな経緯もありありでいまさらPHP7に変更するのもだいぶ、いやだいぶ億劫なのだけれども、まあやらないとそのうち影響が出てきてしまうだろうし、もうすでに出ているかもしれないし、やっちゃうかぁと思い重い腰を上げたのだった。
颯爽と揚げたはいいけどサーバーに入って設定を変えるなど久しぶりぶりすぎていったい何をすればよいのやら。


何がなんだか分からない。。。

とりあえず必要なPHP関連のパッケージを入れていこうとしたのだが、これが失敗の始まりだったのかもしれない。

php7.3 php7.3-fpm php7.3-mysql php7.3-mbstring php7.3-xml

とかなんどか他にもいろいろと。そしたら依存関連のなんだかんだでいつの間にか(んなわけないけれど)、Apacheがインストールされていたり(んなわけある?)、80番が使われていて起動できないよ!!(リブートした?)なエラーを出したりしていて一体なにが起きたのやら。

駄目だこいつ。。。早くなんとかしないと。。。

などと思いつつ。

そして

いつの間にかサーバー内ではPHPが動作しておらずウェブサイトも応答がなくなっていたのだ。

例えるならこんな感じだろうか。

なんとかしないといけないのは自分かもしれない。

途中ブラウザのキャッシュが効いてたりして「編集→テスト→編集→テスト」と若干ハマってしまったけれど、どうにかなんとかできた。

そして平和が訪れたのだった。

おそらく当時はコピペを駆使してNginx+リバプロ+HHVMな環境を構築していったのだろうということは想像に難くない。NginxでIncludeするファイルが若干カスタムされてありあり、デフォルトのファイルはまったく読み込んでなかったりしたのが原因だったようだ。

途中でnginx -Tで設定を見れるというコマンドに気づいた。これが一番役にたったかもしれない。

やったことを端折って書くと

・OSも古いのでAPTの設定を弄る。
・必要なPHP7.3のパッケージをインストールした。
・Nginx.confやら、Includeするファイルなどなどの見直し。
・リバプロなんかの設定もとりあえず無しにした。
・PHP-FPM(FastCGIじたいは使い回しで)で動くようにする。

こんな感じ。色々と書いてあるけれど振り返ればPHP-FPMで動くようにしただけだな。
どうなるかと思ったけど、結果的には速度的にもまったく影響なしというか、以前よりも気持ち早くなったような気がする。なんとなく気が向いてGTmetrixの確認などをしたおかげかもしれないし、予想よりもPHP7.3が良かったのかもしれない。



一番嬉しいのがこれからはサポート切れの恐怖から解放されたこと。

ついでにPostfixはTLSで送信できるようにしたのと(LogWatchのメールとかいつも赤字で来てたのだよね)、nginxの設定やらその他いろいろも見直しておいた。

FastCGIの設定だとかNginxの設定やらはそのままなので違いはというとfastcgi_passの設定くらいか。


/etc/nginx/hhvm.conf:    fastcgi_pass   127.0.0.1:9000;
/etc/nginx/hhvm.conf:    include        fastcgi_params;

PHP7ではPHP-FPMを利用してUNIXSOCKETでの接続になった。


Proto RefCnt Flags       Type       State         I-Node   パス
unix  2      [ ACC ]     STREAM     LISTENING     501403   /run/php/php7.3-fpm.sock

体感速度が変わらないのもいろいろと積もり積もった結果なのかもしれない。

大きな違いはいつのまにかともかく安定していてメンテナンスのコストも限りなく零に近いことを好むようになっているのね。
もっと零に近づけたい人はレンタルサーバーを使おう。

めでたしめでたし。これでしばらく触らなくても大丈夫。と思いたい。

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *