業務でWordPressを利用する場合、テスト環境から本番環境への移行など、WordPressをサーバー移行させる事はよくあります。
個人で利用する場合でも他社サーバーに乗り換えたい、ドメインを変更したいといった場合にはサーバー移行が必要となるケースがあります。
WordPressはデータベースを必要とすることからHTMLのみで作られたサイトよりも移行作業が難しく、思わぬ失敗が起こる場合があります。
確実な移行方法をマスターしておくと、気軽にサーバー移行も出来ますし、開発効率も上がります。
用意するもの
ローカル環境から公開サーバーへ移行する場合
どのようなサーバー移行をする場合でも移行先レンタルサーバーのFTP情報は必ず必要になります。
また、データベースを簡単に移し替えるためにも、コンパネ情報も用意しておきましょう。
レンタルサーバー間で移行する場合
レンタルサーバー間でWordPressを移行する場合、現在利用しているサーバーと、これから移行するサーバーのFTP・コンパネ情報がそれぞれ必要になります。
また、DNSの情報の切り替えも行いますので、ドメイン管理会社のコンパネ情報も必要になります。
FTPで全データをダウンロードする
WordPressは、管理画面から本体・プラグインのアップデートができるため、ローカルにあるファイルとバージョンが異なる場合があります。
また、メディアップロードで登録した画像データなどは/uploads/フォルダ以下に設置されるため、このようなファイルもローカルに存在しないファイルとなります。
サーバー移行を行う際はこういったファイル群を全てダウンロードし、新サーバーに確実にアップロードするようにしましょう。
※画像はFilezillaを利用してサーバー上の全データをダウンロードする様子です。
この時、ローカルにテスト環境がある場合、.htaccessやwp-config.phpを上書きしてしまうと、テスト環境に構築しているWordPressが動かなくなる場合があるため、新しいフォルダにダウンロードする方が安全です。
データベースのバックアップ
データベースのバックアップはphpmyadmin、もしくはWordPressのバックアッププラグインから行います。
phpmyadminの場合、データベースを選択し「エクスポート」を選びます。
画面が切り替わって、詳細 – 可能なオプションをすべて表示を選択した後、実行ボタンを押すことでダウンロードできます。
※詳細をクリックすると隠し項目が展開されますが、そのままページ下の実行を押せば問題ありません。
プラグインでデータベースのバックアップを取る場合、「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からダウンロードしたファイル、もしくはバックアッププラグインでダウンロードしたファイルを選択します。
画面下の実行ボタンを押すとインポートが開始します。画面が切り替わり、インポートは成功しました。と表示されれば成功です。
Search Replace DBのダウンロード
※以下は、移行前のサーバーと移行後のサーバーのドメインが異なる場合のみに必要です。
旧サーバーのURL・・・test.example.com
新サーバーのRUL・・・example.com
新旧サーバーでドメインが異なる場合、URLの書き換えが必要になります。
旧サーバーが以下のようなアドレスの場合、新サーバーに移行しても移行前のドメイン(この場合はtest.example.com)にリンクされていため、管理画面へのログインもできません。
データベースを移行する際、phpmyadminやプラグインでダウンロードしたSQLファイルに対し、テキストエディタで置換をかける方法もありますがこの方法はベストではありません。
なぜなら、WordPressのURLはシリアル値で保存されている場合があり、対応したツールを利用しないと不具合の元になるからです。
これを防ぐには「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ファイルがダウンロードできます。
ZIPファイルを解答すると、Search-Replace-DB-masterというフォルダが出てくるので、これをそのまま新サーバーにアップロードします。
Search Replace DBでURLの書き換え
FTPでアップロードが完了したらブラウザでアクセスし、以下の手順で変換します。
- 左側のテキストボックスに変更前のドメイン(例:test.example.com)を入力。
- 右側のテキストボックスに変更後のドメイン(例:example.com)を入力。
- dry runでテスト実行
- live runで実際にURLを変換
- deleat meでスクリプトを削除
この際、注意点はhttpなどのプロトコルを含めない事です。WordPress内部にはプロトコルが除外されているケースも多くあるので二度手間になります。
もし、httpからhttpsの変換が必要な場合、先にURLを変更してから、プロトコルの変換を行うと確実に処理できます。
コメント