ロリポップ!のサーバ移設でInternal Server Errorが出たので対応

ブログやQiitaに書かないようなこと(最近は主にUbuntuのインストールメモ)は個人的に立てているPukiWiki(http://debugitos.main.jp/)の方に書くようにしているが、昨日ここにアクセスしたら"Internal Server Error"が出てしまっていた。

このPukiWikiロリポップ!のサービスでホストしていただいているのだが、そういえば8/18に「サーバ移設」が行われていた。

ということで、多分このせいでエラーが出るようになったのだろう。

いろいろ調べたところ、どうもアクセス制限のための設置していた.htaccessがいけなかったらしい。もともとは<Files>ディレクティブを使って一部のファイルにのみアクセス制限をかけていたが、これを取り除くと動くようになった。

サーバ移設によってApache httpdバージョンが2.2から2.4に上がったらしいが、そのせいでエラーになっていたのか、それとも利用可能なディレクティブがより少なく設定されているのか、よく分からない。

ただ、この作業の過程でよかれと思ってPHPバージョンを5.2から5.6に上げたのだが、そのせいで今度はPukiWikiのバグによるエラーが出るようになった。

どうやら古いバージョンのPukiWikiではPHP 5.4以降でエラーが出るらしい。

ということで、せっかくなのでPukiWikiを最新版に差し替えて、ついでにEUC-JPからUTF8に移行することにした。

まず、phpをローカルにインストールする。コマンドラインで起動できれば十分。

$ sudo aptitude install php-cli php-mbstring

次に、以下のサイトからdata2utf8.php.txtをダウンロードし、data2utf8.phpに名前変更。

data2utf8.phpPukiWikiのルートディレクトリに設置して、実行。

$ php -f data2utf8.php

これで文字コードの変換は完了。

UTF-8の最新版PukiWikiに旧PukiWikiのデータを流し込む。

$ cp -an ../old/wiki/* wiki/
$ cp -an ../old/attach/* attach/

backupやcacheは面倒なのでいじらなかったが、これでなんとなくうまく動くようになった。

あとは適宜skinを移植。基本的にimageリソースとskin/pukiwiki.{css,skin}.phpをコピーすればそのまま動いた。

ただ、これでサイト上のPukiWikiページにアクセスするとどうもページロードが遅い。というか、スタイルがワンテンポ遅れて当たっている感じだ。調べてみると、pukiwiki.css.phpのロードに700msもかかっていた。遅すぎる。

ということで、pukiwiki.css.phpが吐いたCSSを手動でファイルに保存し、skinではこのCSSファイルを直接読みこむように変更したところ、だいぶマトモなスピードで動作するようになった。