およそ4ヶ月のご無沙汰ですが、一応生きておりますというか、ゲームばかりプレイしていた4ヶ月間でした。主にメタルギアソリッド5 ファントムペイン。僕の人生もペインがひどくてそろそろファントムになりそうです。(婉曲的な自死表現)
とまあ、お約束のひとネタはさておいて、そろそろ真面目にファントム化……じゃなかった、技術的なこともやってみようかなと思い立ち、少し前にリリースされたPHP7がチョッパヤでゴイスーという噂を聞いて、PHP7環境を作ろうかと思い立ったのが1月のこと。
で、PHP7にしただけでもWordPressなどはかなり高速化し、これだけでもいいかなーと思いつつも、以前にも記事にした h2o を導入したらもっと早くなるんじゃね? 最近PHPもphp-fpm経由で動くみたいだし? ということで、そちらもあわせて導入したのが1月末。
しばらくはその速さに満足していたものの、h2o 単独だとIPアドレスによるアクセス制御とかBASIC認証に対応していないので、mrubyを使えるようにしないといけないのですが、その辺りの設定で色々ハマって面倒になりしばらく放置、ようやく手を付けて動くようになったのが2月の今ごろということで、いやあ、時が流れるのは早いものですな。
とまあ、そんな感じで相変わらず前置き長いですが、CentOS 6.x 環境にて h2o + PHP7 環境を作ってみたので、参考になれば幸いです。
WordPressにメールから投稿できるプラグインはいくつかあるけれど、不特定多数からの投稿が可能で(K-tai Entryはこれがダメらしい)、かつ別サイトのアカウント作成も要らない(JetpackはWordPress.comへのアカウント作成が必要) プラグインということで、Postieを使ってみた。
・・・のはいいが、自分の環境だとAndroidやPCから写真を添付すると問題なく更新してくれたが、iPhoneからだと写真が投稿されないという問題が発生。どうやら写真のファイル名に全角文字が入っている(iPhoneだと「写真.JPG」というファイル名になる) と、写真がアップロードされない模様。
新年一発目は、この問題に対応するためのハックから。続きは以下に。
WordPress 3.1.3 日本語版が出たので自動アップデートを試みたものの、Apache環境のWordPressは問題ないのだが、nginxで動かしているこのサイトだけ何故か失敗。
ログを見てみると、
upstream timed out (110: Connection timed out)
ということだったので、本家のwikiを調べたところ、fastcgi_read_timeout が関係しているらしいと判明。デフォルトは60秒だから、それを180秒にしてやったところ、無事に自動アップデートが完了した。
あわせて、関係ないとは思うけど send_timeout の値もデフォルトが60秒なので、180秒にした。
書き方はこんな感じ。
server {
fastcgi_read_timeout 180;
…
…
}
fastcgi_read_timeout はHttpCoreモジュールの設定ではないので、server 以下に書いた。この辺りよく分かっていないので http 以下でもいいのかもしれないけど、wikiでの書き方もそうなってたので、まあそのままで。
send_timeout は http 以下に書いた。
http {
send_timeout 180;
…
…
}
もし同じ症状の方がいたら、参考までに。
以前から借りていてサイト作成はしていたものの、ちょっと放置気味だった ドメインキング に、同人荘 – doujin.so! のトップページを移行したときの設定とか。
将来的にサブドメインだけ残して、他のサービスを使いたくなった方のお役に立てれば幸い(そうならないようにしていきたいとは思いますが……)。
PHOTOSYNTHESIC BLOG 様の以下の記事、
を参考に、さくらのVPS 上で動かしているこのWordPressもSFTP経由で自動アップデートさせたいなーと思っていたのだけれど、libssh2をソースからコンパイルするのはちょっと面倒だなーと思っていたら、CentOS 5.5ではyumだけで何とかなったので、そのメモ。
libssh2は、以下のような感じで。
yum install libssh2.x86_64
yum install libssh2-devel.x86_64
後は、PHOTOSYNTHESIC BLOG 様の記事通りに、
pecl install -f ssh2
ヘッダファイルの場所を聞かれるけど、Enterで問題なし。libssh2-devel.x86_64 を入れ忘れているとエラーが出ます。
その後、/etc/php.ini に、
extension=ssh2.so
を追加してやるか、/etc/php.d/ 以下に上記を書いたファイルを置いてやる。
で、最後にApache再起動。
/etc/init.d/httpd restart
こんな感じで問題なくWordPressでSFTPによる自動アップデートができるようになった。
SaaSes Industria で
pecl install -f ssh2
を試してみたら、peclのssh2がバージョンアップしているのか、うまくいかなかったので、こっちもyumでやってみたメモ。
pecl install -f ssh2
の代わりに、
yum --enablerepo=remi,epel install php-pecl-ssh2.x86_64
とするとうまくいった。(事前にremi・epelのレポジトリ登録が必要)
この方法だとPHPへの設定も自動でやってくれるから、さらに楽だね。今後はこの方法でやろうっと。