さくらで開発してたWORDPRESSサイトをKDDIホスティングサービスに移行しようとして死んだお話。
まず環境から。
さくらレンタルサーバ(開発環境)
PHP 7.1 [標準のPHP] (CGI版)
WORDPRESS 4.9
MySQL 5.5
basic認証をかけて開発
KDDIホスティングサービス(本番環境)
PHP 5.2.8
WORDPRESS 3.3.1
MySQL 5.0.45
もうね、まず大失敗だったのは、リニューアル対象のサイトをNetcraftで調べたときに、DNS adminのメールアドレスの@以下が「@cpi.ad.jp」だったんで、あーCPIね、なるほど、OK、OK^^と思っちゃったこと。CPIとKDDIホスティングサービスって別物だったorz。KDDIホスティングサービス、何もかもが古かった。サイトには「KDDI ホスティングサービス (S10/S20/S20SSL/S30/S40/S50)は、2016年2月29日をもって新規お申し込み受け付けを終了しました。」と書いてあり、KDDI、きっと環境を最新にしょうとかいう気、もうないんだよね><
ということで、さくらで開発終了後、KDDIへの移行に入ったときの絶望を順番に記録(あんまし詳細にメモ取ってないとこもある)。
目次
プラグインDuplicatorで開発環境から本番に移そうとした(ダメだった)
さくらで開発終了したものを、プラグインDuplicatorでKDDIに移そうとしたら、まずPHPが動かなかった。初期設定では動かないということらしい。まあ、それはそうかもねということで、PHPが動くように設定。
.htaccessに下記行追加
AddHandler x-httpd-php528.php
これでPHP自体は動くようになったので、再度Duplicatorで挑戦…したものの、PHPのエラーで動かず(確か、PHPのバージョンがダメ的なメッセージだった記憶)。
レンタルサーバによっては、自分でPHPのバージョンを上げることもできるのだが(さくらもそう)、KDDIは無理っぽい。よって、Duplicatorを諦める。
ちなみに、さくら→XSERVERで実験したところ、Duplicatorで何のトラブルもなく移行できたけどね;;
エクスポート・インポート等で移行するのも諦めた
ついでにこの時点で、何らかのツールを使って移行することも諦めた。というのは、以前、別件でXSERVERからさくらにサイト移行しようとしたら、MYSQLのバージョンが低くて(XSERVER:MySQL5.7/さくら:MySQL5.5)、死んだ覚えがあったから。
XSERVER→さくらの時、どんなふうに死んだかというと、さくら側でDuplicatorを動かしたときに下記エラーが…
ERROR database error write ‘Unknown collation: ‘utf8mb4_unicode_520_ci” – [sql=CREATE TABLE wp_aiowps_events (
たぶん、MySQL5.7にはutf8mb4_unicode_520_ciという照合順序があるが、5.5にはないもんね…ということかなーと。今回もXSERVER(5.7)→さくら(5.5)と同じく、下のバージョンへの移行(さくら(5.5)→KDDI(5.0.45))となるので、絶対うまくいく気がしない…。つーか、XSERVER→さくらも超絶大変だったわけっすよ;;
試しに、さくらのphpMyAdminでエクスポート用のSQL文作って、KDDI側でインポートしたら、やっぱしUnknown collationが表示されたんだけどutf8mb4_unicode_520_ciではなかったなあ。なんか似たようなものが表示されて、インポートできなかった。
サイトのページ数が少ないこともあり、もう全部手作業で移す(つまり、手で各ページをコピペ)という方針を決定。
本番環境KDDI側にWORDPRESSを自動インストール(罠があった)
あまりにKDDI側のバージョンが低いので、もうKDDIの環境にナチュラルに合わせたほうが安全なんじゃね?ってことで、KDDI側に一応WORDPRESSの自動インストールあったんでやってみた。無事にインストはできたものの、なんだかUIが古色蒼然…おまえは、わしの知ってるWORDPRESSじゃない…と思ったら、WORDPRESSのバージョンが3.3.1。えっ…いったいこれ、いつリリースされたバージョン?と調べたら、なんと3.3がリリースされたのは2011年12月13日。し、7年前…。
ま、まあね、そういうこともあるよね…自動でアップデートすればいいよね………なかった。そんな機能、なかった。てか記憶曖昧だけど、機能がなかったか、表示されても拒否られたのどっちか。
泣きながら最新バージョンのWORDPRESS4.9のZIPファイルを落として解凍し、FTPで地味にアップデートしたよね。すんごく時間かかった;;
さあ、手作業でコピペだ!
日本語が文字化けした
えええと手作業でコピペしようとしたんですけどね、なんだか日本語が化けてるわけですよ。WORDPRESSインスト時に元々サンプルとして入っていた投稿データはちゃんと日本語表示されるんですが、更新すると化ける。コピペしたデータも化ける。もうステップごとにトラブるのってどういうこと。いろいろ調べたら、CPIも含めKDDI系は文字コードが元々UTF8じゃないとのことで、php.iniを作って設定変更。
default_charset = "utf-8"
mbstring.internal_encoding = UTF-8
mbstring.http_output=UTF-8
mbstring.encoding_translation = Off
やっとコピペの準備が整って、ひたすらにさくらからKDDIにページをコピペ。固定ページ&投稿ページすべて。なんつーかっこ悪い作業;;
コピペの際は、ビジュアルじゃなくてテキストの画面からコピペ。気を付けるのは、テキストのソース内に含まれる画像等へのパスを、本番サーバのパスに一括変換すること。
本番環境で設定してないはずのbasic認証が出た
いやあ、これでとりあえず終了だよね。めでたしめでたし…と思ったら、本番環境には設定してないはずのbasic認証画面が出るではないか! どーゆーこと!!
調べたら、style.cssの中で、背景画像として指定していたものが、元のさくらの画像パスのままで、さくらにはbasic認証がかかっていたので、ログイン画面が表示されていたのだった。チキショー!
投稿ページ・固定ページのソースは一括変換していたのだが、style.cssは忘れていた;;
そのほかもろもろのトラブル
・スラッグ名と同名のhtmlファイルがあると、WORDPRESSが発狂した
basic認証トラブルでパニクっていたとき、とりあえず旧サイトの状態に戻そうと、元の素材(html、css、img等)を一括で戻したら、WORDPRESSのページが数ページおかしくなった。投稿ページや固定ページを編集する画面は表示されるが、プレビューしても表示されないのだ。どうも、スラッグ名と同じ名前のhtmlがあるとダメっぽい。
これはスラッグ名を変更することで解消。
・PHPのバージョンが低いせいで、入らないプラグインがあった
画像圧縮プラグインとして有名なEWWW Image Optimizerは入らなかった。まあ、これはさくら側で開発していたときに、画像はプラグインを通っているはず(それをFTPでKDDIに突っ込んでるから圧縮済のはず)、かつ、今後、本番環境でガンガン画像アップはなさそう…ってことで、よしとした。他にも入らなかったプラグインがあったよなあ。忘れたけど。
まとめ
まとめもへったくれもないのだが、ただひとこと。
「環境が古いレンタルサーバはいや~ん!」