絶対に失敗しないWordPressのサーバー移行手順

wordpressWordpress カスタマイズ

業務でWordpressを利用する場合、テスト環境から本番環境への移行など、Wordpressをサーバー移行させる事はよくあります。

個人で利用する場合でも他社サーバーに乗り換えたい、ドメインを変更したいといった場合にはサーバー移行が必要となるケースがあります。

WordPressはデータベースを必要とすることからHTMLのみで作られたサイトよりも移行作業が難しく、思わぬ失敗が起こる場合があります。

確実な移行方法をマスターしておくと、気軽にサーバー移行も出来ますし、開発効率も上がります。

FTPで全データをダウンロードする

WordPressは、管理画面から本体・プラグインのアップデートができるため、ローカルにあるファイルとバージョンが異なる場合があります。

また、メディアップロードで登録した画像データなどは/uploads/フォルダ以下に設置されるため、このようなファイルもローカルに存在しないファイルとなります。

サーバー移行を行う際はこういったファイル群を全てダウンロードし、新サーバーに確実にアップロードするようにしましょう。

※画像はFilezillaを利用してサーバー上の全データをダウンロードする様子です。

Filezillaでサーバー上にある全データをダウンロードします。

この時、ローカルにテスト環境がある場合、.htaccesswp-config.phpを上書きしてしまうと、テスト環境に構築しているWordpressが動かなくなる場合があるため、新しいフォルダにダウンロードする方が安全です。

データベースのバックアップ

データベースのバックアップはphpmyadmin、もしくはWordpressのバックアッププラグインから行います。

phpmyadminの場合、データベースを選択し「エクスポート」を選びます。

phpmyadminでデータをエクスポートする場合、データベースを選択して、エクスポートを選択します。

画面が切り替わって、詳細 – 可能なオプションをすべて表示を選択した後、実行ボタンを押すことでダウンロードできます。

詳細をクリックすると隠し項目が展開されますが、そのままページ下の実行を押せば問題ありません。

画面が切り替わった後、「詳細」をクリックして、「実行」をクリックします。

プラグインでデータベースのバックアップを取る場合、「WP-DB-Backup」のような一部のテーブルを含めないプラグインがあるため注意が必要です。

確実に全てのテーブルを含めてバックアップを取りましょう。

※WP DB Backupのバックアップ画面。
WP DB Backupでは一部テーブルが除外される場合があります。

新サーバーへファイル・データベースのアップロード

新しいサーバーにファイルをアップロードします。

この際、以下の点に注意が必要です。

  • PHPのバージョンにより動かないプラグインがないか
  • wp-config.phpは新しいサーバーの情報になっているか
  • .htaccessの設定は適切か

wp-config.phpの設定が間違っているとデータベースエラーとなります。新サーバーの情報を確認し、wp-config.phpの以下の部分を編集しておきましょう。

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'DBNAME');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'USERNAME');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'PASSWORD');

/** MySQL のホスト名 */
define('DB_HOST', 'DBHOST');

また、.htaccessの設定に互換性がない場合、新サーバーで505エラーとなる場合があるので注意しましょう。

新サーバーで505エラーとなってしまった場合、以下のように.htaccessを初期状態に戻し、必要な設定を確認しながらどこでエラーになるか調査すると解決につながります。

# BEGIN WordPress
 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

データベースのインポートはphpmyadminから行います。

メニューのインポートを選択し、旧サーバーのphpmyadminからダウンロードしたファイル、もしくはバックアッププラグインでダウンロードしたファイルを選択します。

phpmyadminでダウンロードしたSQLファイルをインポートします

画面下の実行ボタンを押すとインポートが開始します。画面が切り替わり、インポートは成功しました。と表示されれば成功です。

phpmyadminでファイルインポートした結果、この画面が表示されれば完了です。

Search Replace DBのダウンロード

※以下は、移行前のサーバーと移行後のサーバーのドメインが異なる場合のみに必要です。

ここからの設定は以下の前提で行います。

旧サーバーのURL・・・test.wpnote.link
新サーバーのRUL・・・wpnote.link

新旧サーバーでドメインが異なる場合、URLの書き換えが必要になります。

旧サーバーが以下のようなアドレスの場合、新サーバーに移行しても移行前のドメイン(この場合はtest.wpnote.link)にリンクされていため、管理画面へのログインもできません。

Wordpressのドメイン設定

データベースを移行する際、phpmyadminやプラグインでダウンロードしたSQLファイルに対し、テキストエディタで置換をかける方法もありますがこの方法はベストではありません。

なぜなら、WordpressのURLはシリアル値で保存されている場合があり、対応したツールを利用しないと不具合の元になるからです。

これを防ぐには「Search Replace DBというツールを使います。

Search Replace DBのダウンロードページ

3つのチェックボックスの文書の意味は以下のとおりです。(Google翻訳にかけただけです。)

I accept this script can be a security risk
私はこのスクリプトを受け入れることはセキュリティリスクになる可能性があります
I understand that this script must not be left in a public facing web server
このスクリプトは公開されているWebサーバーに残さないでください
I am a developer and I know what I’m doing!
私は開発者であり、私は何をしているのか知っています!

この3つのチェックボックスを選択すると、E-mailの欄と、SUBMITのボタンが表示されるので、必須項目を入力してSUBMITを押します。

届いたメールに記載されているリンク(3.1.0の後ろのhere)をクリックすると直接、ZIPファイルがダウンロードできます。

Search Replace DBはメールからダウンロードできます。

ZIPファイルを解答すると、Search-Replace-DB-masterというフォルダが出てくるので、これをそのまま新サーバーにアップロードします。

Search Replace DBをFTPでサーバーにアップロードします。

Search Replace DBでURLの書き換え

Search Replace DBのWebページ

FTPでアップロードが完了したらブラウザでアクセスし、以下の手順で変換します。

  1. 左側のテキストボックスに変更前のドメイン(例:test.wpnote.link)を入力。
  2. 右側のテキストボックスに変更後のドメイン(例:wpnote.link)を入力。
  3. dry runでテスト実行
  4. live runで実際にURLを変換
  5. deleat meでスクリプトを削除

この際、注意点はhttpなどのプロトコルを含めない事です。Wordpress内部にはプロトコルが除外されているケースも多くあるので二度手間になります。

もし、httpからhttpsの変換が必要な場合、先にURLを変更してから、プロトコルの変換を行うと確実に処理できます。

最後にSearch Replace DBは実行後必ず削除しておきましょう。そのままサーバー上に残しておくと、データベースのID、PASSが漏れてしまうため、サイトの改ざん被害にあう可能性があります。

コメント