PHP FPM のチューニング

このサイトはNginx + WordPress で運用しているだが、設置当初はサイトが重くて仕方なかった。
top コマンドで状況を調べてみるとメモリを使い切っていたので、途方に暮れて解決策をググったところ、以下の記事を発見。 有用な記事をありがとうございました。

CentOS php-fpmの設定を変更してメモリ消費を減らした方法 | CrystalSnowman.com

サーバーはさくらのVPS (Cent OS 6、メモリ 1GB) なので、この記事とまさに同じ状況らしい。 これを参考に PHP FPM の設定 (/etc/php-fpm.d/www.conf) を以下のように変更し、現状運用中。

pm = dynamic
pm.max_children = 10 ; default 50
pm.start_servers = 5
pm.min_spare_servers = 2 ; default 5
pm.max_spare_servers = 6 ; default 35

設定変更前と比較にならないくらい軽く(というか普通に)なった。ここのようにアクセス数の少ないサイトはこういった設定で問題ないらしい。

PHP FPM はデフォルトで最大50ものプロセスを立ち上げようとするということは、比較的ハイスペックな環境を想定して設計されているのだろうか。果たして。

WP Pusher による WordPress テーマの自動デプロイ

WP Pusher というプラグインを導入し、GitHub のレポジトリの master ブランチに push したらサイトの WordPress テーマが自動的に更新されるという運用にしてみた。

seckie/likealunatic: Like@Lunatic website source code

サイトの静的ファイルがテーマディレクトリの外に散在していた状態だったから、それもできなかったわけだ。今回自作テーマを大幅に整理したことで、テンプレートも静的ファイルもすべて1つのテーマフォルダに収めることができた。(まあ当たり前の状態になったというべきか…)

GitHub の Webhooks による自動更新は以前からやりたかったのだが、CI ツールを使ったことのない僕にはハードルが高かった。しかし調べてみると、プラグインでそういうものがある、という情報があった ので導入してみることにした。該当記事の紹介によると、ビルドを Travis CI で行い、その後 dist ブランチに自動的にプッシュ、それを Webhooks で拾って本番にデプロイ、というフローになっている。しかし僕の環境だとビルドはローカルでやっているので Travis CI を使うフローは不要になる。シンプルに GitHub と WP Pusher だけの形で実現できた。

ただしハマったポイントが一つある。

WP Pusher は公式プラグインディレクトリに置いていないので、FTP を使ってアップロードした。すると、該当ファイルとディレクトリのオーナーは当然その FTP ユーザーになる。それによってパーミッションの問題が発生。

このサイトは Nginx + WordPress で動作している。 Nginx を使っている場合、wp-content ディレクトリなどに対して nginx ユーザーに書き込み権限を与えておけば、 WordPress (PHP) から自動更新やらプラグインの追加削除が行えるようになる。そうでない場合、WordPress は FTP 経由でファイルを出し入れしようとして FTP 情報を入力するプロンプト画面を表示する。
WP Pusher による自動デプロイも例外ではなく、パーミッションが適切でないと WordPress がそのページを表示しようとしてしまい、正しく通信できないらしい。

ちなみにエラーは GitHub の 該当 Webhook のページ下方に “Recent Deliveries” というセクションがあるのでそこで確認できる。 Webhook を設定すると通信確認のためなのか Recent Deliveries に1つ通信が記録される。それがエラーになっていた場合、Response が “500” となっているはず。Body のセクションを確認すると「FTP credentials を入力してください」という感じの HTML が出力されている。

GitHub Webhook setting screen
これは正常な状態。

今回のケースでは wp-content 以下すべてのファイル、ディレクトリオーナーを nginx ユーザーに変更したら解決した。 ちなみにこのことは WP Pusher Troubleshooting のページにもちらっと記述があった…。なんだろうこの徒労感。

参考

サイトのアップデート

直近の仕事が延期になってぽっかりと時間が空いたので、このサイトのメンテを一気にやった。

  • Bootstrap のアップグレード(v.1 -> v.3)
  • タスクランナーを Grunt から gulp に乗り換え
  • CSS プリプロセッサは Stylus から Sass (indented syntax) へ乗り換え
  • JavaScript は ES2015 + Babel を Webpack でビルドする環境へ
  • WordPress テーマディレクトリの整理
  • WP touch プラグインを廃止。スマホ向けスタイルは Bootstrap ベースで自作
  • WP Pusher による自動デプロイ

何年もサボっていたのでもう色々古かった。 Bootstrap はタイポグラフィーが格段に良くなりました。感心。それとモバイルファースト感が増していて、時代が移り変わった感じがします。 とはいえ今回使った v3.3.7 は2016年7月のリリースバージョンとなっていて、そんなに最新のトレンドっていう訳でもないです…。 というかこのリリースノートを見る限り Bootstrap ってもうあまり活発にメンテされていない感じか。

書類をスキャンして捨てる

今日は有給休暇で会社を休んだ。自宅の設備点検があったためなのだが、一人暮らしでは自分が対応するしかないので仕方ない。

持て余した時間で、Amazonなどの買い物明細をスキャンしてシュレッダーにかけて捨てた。しばしば休みの日にこういうことをするのが習慣になっている。

shredded documents

ここ数年で手に入れたものの中で最も “Life Changing” なものは何か、と言われたら ScanSnap を挙げたい。 紙の書類は捨てなければ溜まる一方だが、それを捨てられるようになったのはこれのおかげだ。スキャンしたら、そのまま Evernote に送る。この辺はどっかのライフハック系の本に書いてあったことの受け売りだ。それを真に受けてやってみたら、とても良かったという話である。

書類をただ捨てるという行為は小心者の僕にとっては大胆すぎる。ここにある情報がいつか必要になるんじゃないか、という意識に囚われているからだ。スキャンしてデジタルデータにすれば後から見返すことができるのでそんな躊躇もなく捨てられる、という寸法だ。

ScanSnap とシュレッダーを買ってからというもの、ありとあらゆる書類をスキャンして捨てた。光熱費やクレジットカードや携帯電話の明細書、レシートや領収書の類、家電等の説明書、保証期間の切れた保証書、過去に住んでいた物件の関連書類、昔の日記、プリクラ、旅行の記録、手紙などなど。 多分見返すことのないもの、しかし捨てるには躊躇してしまうものを捨てることができた。 部屋が片付くのはもちろん、なんだか気持ちが軽くなる。

もちろんいいことばかりではない。ScanSnap は紙送りの性能がしょぼく、紙を重ねて置くと2枚以上いっぺんに吸い込まれたり、紙詰まりしたりする。1枚でも、厚かったり折り目があったりすると斜めに吸い込まれたりして手に負えない。なのでスキャンするときは手を添えて、真っ直ぐスキャンされるようにサポートしている。コンパクトボディなので仕方がないところもあるのか…と思いつつそこは割り切って使っている。 (今では進化したモデルがあるよね…と思ったら3年経った今もモデルチェンジしていなかった)。

シュレッダーはコクヨ S-tray KPS-X30W という商品を使っている。性能は…とにかくパワー不足で、紙を数枚も入れると満足に裁断されない。コンパクトさが仇になって投入口が小さいためA4の書類などは折って入れるしかなく、折った分だけ厚みが増してパワー不足の壁にぶつかり…と負のスパイラルになる。しかも連続使用するとオーバーヒートして動作しなくなるというおまけ付き。騙し騙し使っているというようなシロモノ。こう書くといいところがないが、インテリアとして目にうるさくない見た目だし、やはりコンパクトだということは正義。毎日使うものでもないので、それなりに使えればよいということにしている。

安くない買い物だったが、もう元を取る以上に役に立ったのでブログに書いておこうと思った。書類をスキャンして捨てるのはおすすめ!

久しぶりにギターレッスンを受講

卒業した音楽学校のギターレッスンに久しぶりに顔を出した。師は、いつでもレッスンに遊びに来てよいと言ってくれる心の広い人。

思えば、僕は自称音楽好きでギタリストでっていう領域に収まっていればよかったんだと思う。自己満足の、オナニーの世界にいればよかったのかもしれない。

しかしとある音楽学校に飛び込んで師に出会い、同じく音楽を志す若人達に出会い、本気で音楽を志す人間達は自分よりもはるかに必死に、深く音楽に興味を持って接し、研究し、愛しているかを知った。自分の中途半端さを恥じると共に、もっと音楽を愛したい、詳しくなりたい、プレイしたいという欲求を強めた。

そんな気持ちを、かつてのようなレッスンを受けるとまた思い出す。

その道を志すならなるべく高い志を持つ人間に触れた方が良い。そういう意味で僕は本当に良い師を持ったと思う。

いまでもレッスンに遊びに来てくれと彼は言ってくれる。その言葉に甘えて僕はまたレッスンを受けに行きたいと思う。 しかし恥ずかしながら何年経っても僕のギターの上達度合いはたかが知れている。 なんせそれを「仕事にしよう」としている若人とは必死さが違う。

しかしそれでもいい。僕は僕のペースで前に進む。それだけのことだ。 ギターも音楽も好きだから、それを止めるという選択肢は今のところない。