手元の開発環境ではPHP5.4を使っていたが、PHP5.4でパフォーマンスが向上しているからWordPressにも恩恵あるかなと思ってサーバの方も更新してみたら酷い目にあった。
DebianでDotdebを利用していたのでInstructionsを見てPHP54のソースを追加するだけだったのに、DotdebでNginxやMySQL入れていることをすっかり忘れていてPHP54のソースに置き換えてしまった。それでパッケージを更新したら見事にNginxとMySQLが削除されてしまい、サイトにアクセスができない状態になった。
サービスが消えているからログが出力されるわけもないし、NginxがPATHから見つからないので気がついた。それでNginxtとMySQLも入れなおしたんだけどそれでもいろいろハマった。
nginx-extras -> nginx-passenger
Nginxを入れなおしても起動ができない。なぜかpassenger向けのディレクティブ知らんといわれる。passengerはRedmineを動かすために入れていた。
nginx: [emerg] unknown directive "passenger_root" in /etc/nginx/nginx.conf:67 nginx: configuration file /etc/nginx/nginx.conf test failed
パッケージを検索してみるとnginx-passengerというのが追加されていた。どうやらpassenger向けにビルドしたものはnginx-extrasからnginx-passengerに変わったようだ。nginx-passengerに入れ直して起動はできた。
nginxからphp-fpmに接続できず502 Bad Gateway
php-fpmではhttp://127.0.0.1:9000でリスニングしていたつもりだったんだけど設定(/etc/php5/fpm/pool.d/www.conf)を見ていくとunix socket(listen = /var/run/php5-fpm.sock)になっていたので
server unix:/var/run/php5-fpm.sock;
にnginxの設定を変更。php-fpmの設定変えた記憶がないんだけど、デフォルトの設定かディストリビューションの設定ファイル変わったんだろうか。
MySQL 5.5が動かない
MySQLも入れなおしたら5.5になっていてmy.cnfがおかしいとか言われて起動しない。
130127 0:18:13 [ERROR] An old style --language value with language specific part detected: /usr/share/mysql/english/ 130127 0:18:13 [ERROR] Use --lc-messages-dir without language specific part instead.
my.cnf.dpkg-distと比較して
language= /usr/share/mysql/englishをlc-messages-dir= /usr/share/mysqlに変更した。
起動しようとするとChecking for tables which need an upgradeとか怒られるので
sudo mysqlcheck --check-upgrade --all-databases --auto-repair -u root -p
を実行して復旧。
PukiWikiが動かない
nginx+php-fpm-mysqlの設定をなんとかしてようやくブログが閲覧できたけど、今度はWordPressブログで使っているPukiWiki for WordPressプラグインが動かない。どうやらPukiWikiにPHP5.4との互換性問題があるようだ。
とりあえずhex2bin関数をif (! function_exists(‘hex2bin’)) {で囲った。
おわりに
今のところは無事動いているようだけど、作業を週末にやってよかった。