[WEBオペレーション]さくらVPS(HDD) 2GからさくらVPS(SSD) 2G x2 へ乗り換え


nullpopopo_sakura人知れずこっそりとこのサイトをさくらのVPS HDDプラン(2G) 1台からさくらのVPS SSDプラン (2G) 2台へ移行しました。もともとnginxでメモリキャッシュを効かせたり、DBもクエリキャッシュを効かせたりしていたのですが、SSDにしたらnginxのキャッシュをメモリに持たせなくてもよいのでは?という安直な理由で乗り換えてみました。

結果、当然表示が速くなったのと、今まで以上に同時アクセス数が増えたときのストレスがなくなったので、移行して正解だったのですが、WordPressの移行でちょっとハマったところなどをメモしておきます。

このサーバでは複数のWordPressを運用しているのですが、マルチサイトにせず、1つのバーチャルホストに1つのWordPressというルールで運用し、DBも1つずつ作っています。なので、ドキュメントルートをまるっとコピーし、同じDBを作成してDBごとにmysqldumpしたものをリストアしました。

ハマりポイント その1 - 使えないプラグインができた

前のサーバはphp5.3系だったのですが、移行を機にremiリポジトリからphp5.6にしました。このためか、よりエラーチェックが厳しくなったように思います。移行してから最初のアクセスでは、ページが表示されずに真っ白な画面だったので、wp-config.phpでデバッグモードにしてみました。

define('WP_DEBUG', false);
↓
define('WP_DEBUG', true);

これでも真っ白なままだったので、切り分けとして「自分が弄ったところ」を除けてみようと思い、ドキュメントルート以下の wp-content/plugins ディレクトリ以下をゴッソリmvしてみました。で、1つ1つプラグインを追加してみると、たまたまinstapressでエラーを吐いてたのを見つけた、という次第です。こちらのブログでサイドバーにinstagramの画像を表示させるために使っていたのですが、どうせメインコンテンツで見れる内容なので、instapressは削除しました。

 

ハマりポイント その2 - MariaDBに繋がらない

MySQLよりも簡単にマルチマスタDBを構築できるので、MariaDB Galera Clusterで冗長化し、どちらのサーバからも更新できるようにしたはずなのですが、wp-config.phpで接続先を変えた瞬間、「データベース接続確立エラー」の無機質な画面が・・・。

mysqlコマンドで接続先を変えてselectしたりupdateしたりしても問題ないので、2日くらい悩んだのですが、試しに新しいバーチャルホストを作成して、WordPress管理画面のツールからエクスポートし、新しいブログでインポートしてみたところ、どちらのDBにも繋がるようになりました。

もうこうなったら、理屈を追いかける時間も勿体なく、「秘伝のソースを継ぎ足し継ぎ足しで移行するのはやめよう」という方針にしました。テーマやプラグインは改めてダウンロードして来ればそれでよくて、投稿や固定ページ、コメントや画像、タグやカテゴリーのように、自分で作ったものだけエクスポート/インポートできればよい、という割り切りですね。最低限のエクスポートができた後に、同じテーマと最低限必要なプラグインだけ後で追加しました。

具体的には、 https://nullpopopo.blogcube.info/ のWordPress管理画面からエクスポートし、まっさらな http://test.nullpopopo.blogcube.info/ のバーチャルホストを作成し、素のWordPressをインストールしてからxmlファイルをインポートし、WordPressの管理画面上の設定をまったく同じにしてから、ドキュメントルートとDBを入れ替えるという手法をとりました。

 

ハマりポイント その3 - サムネイル用画像がゴッソリ消えた

WordPressのエクスポートは上記の方法でうまくいったかに見えたのですが、投稿中にあるサムネイルがごっそり表示されなくなっていました。画像へのリンクをクリックすると表示できたので、サムネイルだけが見えなくなっているようです。

こちらはソースを見ると一発でわかったのですが、WordPressで投稿記事中に画像を挿入すると、サムネイルを作成するかどうかを選べます(設定->メディア でサムネイルのサイズを指定できます)。例えば、 hogehoge.jpg のサムネイルであれば hogehoge-150x150.jpg のようなサムネイルになるのですが、WordPressのエクスポート/インポートではサムネイルのURLは引き継ぐのに、肝心の画像までは引き継げないようです。なので、サムネイル用画像を作成するか、widthとheigtだけ指定して元画像を表示させるようソースを修正しなければなりません。

 

ハマらなかったけど気をつけること - エクスポートファイルを見てみた

インポート完了後のブログでエクスポートしたxmlファイルを見てみると、画像ファイルのURLが http://test.nullpopopo.blogcube.info/wp-content/uploads/yyyy/mm/〜〜〜.jpg になっていました。なので、次にエクスポート/インポートするときはxmlファイルを編集して置換したほうがよいかも知れません。

投稿や固定ページの本文を1つ1つ置換するのは骨が折れるので、インポート完了後すぐに「Search Regex」プラグインをインストールし、複数投稿記事から一括置換してしまいましょう。使い方はこちらを参考にしてみてください。

 

以上、こんな感じでWordPressの移行をしてみました というお話でした。