予想より時間が掛かりましたが、無事LHXに移転できました。しかし結構なドタバタがあったのでメモしておきます。

手順としては、

  1. 旧サーバのphpMyAdminからDBをエクスポート。
  2. 旧サーバのWordPressファイル、プラグイン、テーマ、画像などをディレクトリごとFTPでバックアップ。
  3. 新サーバにバックアップしたWordPressファイルなどをFTPでアップロード。
  4. パーミッション変更を適宜行い、wp-config.phpを新サーバに合わせて書き換える。
  5. 新サーバのphpMyAdminで旧サーバからエクスポートしたSQLファイルをインポート。
  6. リンク切れや画像欠落などを確認。

こんな感じで簡単にサーバ移転は完了したのですがそこからが長かったです。DNSの浸透に約24時間かかって、新サーバに切り替わったのを確認してからWordPressを表示するようにしたのですが文字化けしてました。原因を確認するためにまずはDB管理ツールのphpMyAdminを開きます。

MySQLの文字セットがcp1252 West European(latin1)で照合順序がlatin1_swedish_ciとなっています。これが原因で文字化けしてるのかと思ったのですが、WordPressのデータを格納しているDBの文字コードは正しくutf8_unicode_ciになっていました。

念のためphpMyAdminで格納されてる投稿データを読んでもきちんと日本語になっています。MySQL, php, WordPressのどこかに原因があるはずなのですが全く見当もつきません。途方に暮れてもう一度WordPressをクリーンインストールしてやろうかと思いながらwp-config.phpを眺めていたらひらめきました。

「DBの文字コード変えるときになんとかCOLLATEってSQLコマンド打ったよね?」「ここのDB_COLLATEって参考書でも空欄になってるけど文字コード入れたらなんか起きるんじゃない?」

// ** MySQL settings ** //
define(‘DB_NAME’, ‘your_DB’); // データベース名
define(‘DB_USER’, ‘your_name’); // ユーザー名
define(‘DB_PASSWORD’, ‘password’); // パスワード
define(‘DB_HOST’, ‘localhost’); // データベースサーバ (ほとんどの場合変更する必要はありません)
define(‘DB_CHARSET’, ‘utf8′);
define(‘DB_COLLATE’, ‘utf8‘);

結果として大成功。4日間に渡って悩み続けた問題がたった4文字で解決しました。でも後でWP Codex見てたら親切丁寧にDB_COLLATEの設定と意味が書いてありました。やっぱり悩んだときはWp Codexきちんと読み返してみるべきですね。

あとはImageManagerプラグインの設定で画像を格納するuploadsフォルダの絶対パスを指定する必要があるのですが、Pleskで設定された絶対パスは/var/www/vhosts/(ドメイン名)/httpdocs/(wp設置ディレクトリ)/wp-content/uploadsとなります。まだ動作に少し不安はありますが、ひとまず移転完了したので色々試してみます。