アフィテク

アフィ収入月10万円以下の初心者を対象に『アフィリエイトで稼ぐテクニック』を発信!

WordPressエクスポート・インポートの致命的バグ!サイトの安全なサーバー移転手順&おすすめレンタルサーバー紹介

      2016/05/31

ありがたいことにここ1ヶ月くらい急激に当ブログのアクセス数が増加したので、転送量を確認したら上限を倍近く超えてたのでさすがにマズイと思い急遽サーバーを移転したのですが、WordPressの移転作業はホント罠だらけでだいぶ苦労したのでメモを残します。

サーバー移転時にWordPressのエクスポート・インポート機能は使うべきではない

皆さんはWordPressの記事のバックアップをする際どのようにしていますか?おそらく標準搭載されているエクスポート機能と公式が推奨(?)しているインポート機能(WordPress Importerプラグイン)ではないでしょうか。

これらは標準的な機能なだけあって気軽に記事のバックアップが可能ですが実は大きな不具合・問題を抱えています。これらを使って記事を復元すると、一見正常に復元できたように思うのですがよく確認してみると以下のような問題・不具合が発生することがわかりました。

  1. 記事に埋め込まれた画像のURLが書き換わりリンク切れを起こすことがある
  2. 存在しているはずの記事にアクセスできなくなることがある
  3. 管理画面のカテゴリ・タグページでそれぞれのカテゴリ・タグに属する記事数がカウントされないことがある

この3点が私が遭遇した不具合・問題です。これらについて簡単にお話します。

1についてはWordPressの親切機能が仇になっている感じですね。WordPressの機能を使って記事に画像を埋め込むと絶対URL(当ブログならhttp://blog.ks-product.com/xxxx.jpg)で記述されるのですが、エクスポート・インポートすることで移転先のURLに書き換わるんです。「サーバー移転ならドメイン一緒でしょ?」って思うかもしれません。移転後は同じドメインになりますが、移転するまでの過程ではそれぞれ違うドメインなのでURL書き換えが発生します。書き換えが起きても正常に済めば問題ないのですが、どうもその機能が不完全のようで正常にリンクされないという問題が起こってしまうのです。

2についてはホント悩みました。1は最悪手動でリンクを修正すれば済む話ですが、これに関しては手動では直せません。管理画面では問題なく記事は存在するにプレビューができない。公開URLを変更すれば表示はできるようになるですが、URLが変わればその記事のSEO的評価はリセットされるので1000PV/日を稼いでいるような記事の価値がゼロになれば相当ダメージが大きいわけです。

3については例えば「Web制作」カテゴリには実際100記事が入っているのに0件と表示されてしまう症状です。記事数を非表示にしていれば実際のページは問題なく表示されていたので運用上問題ない人は多いと思いますが、PHPで記事数を取得して何らかの処理をしている場合はエラーが発生します。

これらの症状は不規則に起きる為、1の症状だけが発生する場合もあれば1~3の症状が全て発生する場合もあるし、どの記事に症状が起きるかもランダムです。投稿している記事が十数件であれば目視して問題があれば再度インポートすれば解決するでしょう。しかし、数百数千もの記事が投稿されている場合は途方に暮れます。

私が行ったWordPress・サーバーの安全な移行手順

WordPress・サーバーの移転作業でもっとも安全で確実な方法は直接データベースをいじることです。と書くとかなりハードルが高そうですが特別な設定は不要なので意外と簡単です。私が移転する際に行った手順を記しますので参考にしてみて下さい。

1.旧サーバーのコントロールパネルからphpMyAdminに入り該当データベースを選択した状態でエクスポート(画像はクリックで拡大できます)。

wp1

2.新サーバーにWordPressをインストール(wp-config.phpを除く全てのローカルデータをアップロードし、/wp-admin/にアクセスすれば基本はOK)。

3.新サーバーのphpMyAdminに入り、2によって作成されたデータベースを選択しテーブルを全て削除する。

wp3

4.インポート画面に入り1でエクスポートしたファイルをインポート。

wp2

5.絶対URLを旧サーバーから新サーバーに書き換える(ドメインも切り替わる場合のみ)

WordPressが入ったデータベースを選択した状態でSQLタブをクリックし下記のコードを貼り付けます。

UPDATE wp_options SET option_value=REPLACE(option_value,"http://旧ドメイン","http://新ドメイン");
UPDATE wp_posts SET post_content=REPLACE(post_content,"http://旧ドメイン","http://新ドメイン");
UPDATE wp_posts SET guid=REPLACE(guid,"http://旧ドメイン","http://新ドメイン");
UPDATE wp_postmeta SET meta_value=REPLACE(meta_value,"http://旧ドメイン","http://新ドメイン");

こちらのSQLに関しては以下のサイトを参考にさせていただきました。

WordPressでの独自ドメイン移行時に、PhpMyAdminで書くべきSQL文

これでいけるはずです。

私が今まで利用していたレンタルサーバーと今後利用していくレンタルサーバーを紹介

ロリポップ

私がこれまで利用してきたレンタルサーバーは「胡散臭いマスコットキャラクターで有名」なロリポップです。運営会社は超有名企業ですけどね。かれこれ10年使い続けてきました。使い続けてきた理由は月額250円という破格の料金で当時はまだ使えないレンタルサーバーも多かったPHPが利用できたことです。現在ではお手軽な料金はそのままに50GBものハードディスク容量、マルチドメイン50個まで設定可能と充実の内容です。

大きな問題も無く10年間使い続けてきたロリポップを解約することになった理由は冒頭に書いたとおり私のサイトのアクセス数が急激に増え転送量オーバー(上限5GB/日)してしまったからです。参考までに月間10万PVぐらいまでならロリポップで問題ありません。格安でありながら様々な設定やPHPなどが利用できるので現役プログラマーやこれからプログラマーを目指す人にお勧めです。

ロリポップ!

heteml(ヘテムル)

移転先である新サーバーはロリポップと同じくGMOグループのサービスであるヘテムルです。ここに決めた理由はロリポップで信頼性があることが既に体感的に分かっていたことと、コストパフォーマンスが良いことと、プログラマー向けの機能が豊富であることが挙げられます。

特に引かれたのがコストパフォーマンスの良さですね。通常月額1,500円、初期費用3,950 円かかるのですが、3年契約にすれば月額1,000円(1年分無料)、さらに同グループのドメイン取得サービス「ムームードメイン」の利用で初期費用無料とかなりお得です。スペック的にも256GBのハードディスク容量、60GB/日の転送量、データベース数無制限、マルチドメイン無制限と申し分なしです。

heteml(ヘテムル)

エックスサーバー

ヘテムルに近い料金体系のサービスにエックスサーバーがあります。

私は実際利用はしていないのですが、ディスク容量やプログラマー向け機能はヘテムルよりも劣りますが、その分速度が速く安定性も高いと言われています。もしあなたがプログラマーで色々なことを試したいのであればヘテムル、基本的な機能のサイトを運営するのであればエックスサーバーがオススメだと言えます。

エックスサーバー

ここでのポイント!
あまりサイト・ブログを拡大させることを考えていなければロリポップで十分でしょう。将来的に拡大を視野に入れているなら余計なトラブルをなくす為にもあらかじめヘテムルかエックスサーバーを選んだほうがよいかも知れません。

 - Web制作テクニック ,