お問い合わせはコチラから

【完全版】絶対に失敗しないWordPressサイト移転手順

WordPressサイトの移転は、All in One Migrationを使えばOKという風潮があります。多くのサイトはそれで問題ないでしょう。しかし、プラグインで移転できないケースも多々あります。

例えば、サーバーの制限でプラグインが動かない、なんてのは結構な頻度で起こります(Xfreeやお名前.com SDサーバー、GMO iclusta)。その場合、プラグインに頼っていると状況は一気に苦しくなります。

もともと便利なプラグインが無かったころは自分でバックアップして移転していたわけですが、最近はファイルの数もサイズも大きくなってきていてFTPでチマチマファイルを移すと時間もかかりますし、サーバーによってはファイルの取りこぼしも起きます。

多くの場合、問題が起きる原因は移転元にあります。

移転元の環境が古かったり、制限があったりするので、まずは移転元から如何に早く確実にファイル一式とデータベースを吸い上げるかがポイントになります。

移転元でうまくデータが吸い上げられたら、移転先では制限が緩いことが多いのでSSHを使って一気に片付ける。

だけど最後はプラグインで最終仕上げをするというのが、私が到達した結論です。

この記事では、過去色々なサイトのWordpress移転をしてきて、移転元がどのようなサーバーでもほぼほぼ対応できる手順をまとめています。

WordPress移転元サイトで行う手順

移転元サイトで行う準備
  • 移転元手順1
    サイト一式をTARで固める

    成果物:Wordpressディレクトリ一式をまとめた1つのTARファイル

  • 移転元手順2
    DBをエクスポートする

    成果物:wp-config.phpで使用しているDBのSQLダンプファイル

サイト一式をTARで固める

FTPで簡単、確実にダウンロードできるように、Wordpressディレクトリ一式をtarで固めます。

プラグインを使う場合

WP File Managerを使う。

圧縮するとタイムアウトする可能性があるので、無圧縮でTARで固める。

WP File Managerを使って、Wordpressファイル一式があるディレクトリを表示

Ctrl+aですべて選択⇒右クリック⇒Create Archive ⇒ TAR Archiveと進み、Archive.tarを作る

SSHコマンドライン

カレントディレクトリ以下を全て固めるコマンド

 tar cvf Archive.tar ./*

DBをエクスポートする

DBのサイズはダンプしてみると意外と大きく、移転先でphpmyadminを使うとインポートできないのが普通。

20MBを超えるあたりからインポートできないので、ある程度の記事があるサイトはphpmyadminではインポートできないと思います。

今回の手順ではphpmyadminをインポート時に使わず、SSHを使うのでファイルサイズは特に気にせずダンプします。

phpmyadminを使う場合

phpmyadmin からDBをエクスポートする手順
  1. phpmyadminにログイン
  2. 使用している接頭辞(wp-config.phpに書かれている)のテーブルを選択してエクスポートをクリック
  3. 「詳細 – 可能なオプションを全て表示」の方をチェック
  4. 「DROP TABLE / VIEW / PROCEDURE / FUNCTIONを追加」にチェック
  5. 作成するクエリの最大長を「1000」に変更
  6. エクスポート

Xserverの場合

DBのエクスポートが管理画面のメニューにあるので、wp-config.phpで調べたDB名を見つけてバックアップボタンを押してダウンロードします。

Xserverのこの機能は意外と便利です

SSH+mysql+mysqldumpを使う場合

# 接頭語 hoge_ というテーブルに対して dump を実行
mysql -h HOST -p -u USER DB_NAME -N -e 'show tables like "hoge_%"' | xargs mysqldump -h HOST -p -u USER DB_NAME > dump_hoge.sql

WordPress移転先サイトで行う手順

移転先サイトで行う準備
  • 移転先手順1
    WordPressを自動インストール

    成果物:移転先のDBとwp-config.php

  • 移転先手順2
    DBをインポートする
  • 移転先手順3
    wp-config.phpファイルを編集してバックアップ
  • 移転先手順4
    ファイル一式を移転先にコピー
  • 移転先手順5
    wp-config.phpのバックアップを元に戻す
  • 移転先手順6
    WordPressにログインする
  • 移転先手順7
    All in One Migrationでエクスポートする
  • 移転先手順8
    All in One Migrationで復元する

WordPressを自動インストール

DBを作成するのが面倒なので、Wordpressの自動インストール機能が使える移転先の場合は、簡単インストールを使うと、移転先のDBとwp-config.phpを自動作成できます。

DBをインポートする

phpmyadminでsqlファイルをインポートは9割がた失敗する。そうなるとテーブル分割とかファイル分割とか果てしなく面倒になる。

時間の無駄なので、SSHを使う。

DBをインポート手順
  1. wp-config.phpからDBログイン情報を調べる
    1. DBサーバー
    2. DB名
    3. DBログイン名
    4. DBパスワード
  2. SSHでログイン
  3. エクスポートしたSQLダンプファイルをアップロード
  4. mysqlコマンドでSQLダンプファイルをインポート
 mysql -h localhost -u username -p database_name < filename.sql 

wp-config.phpファイルを編集してバックアップ

wp-config.phpは移転先にあるものを使用します。

ただし、移転先のwp-config.phpに書かれているDB接頭辞は、 移転元のwp-config.phpに書かれていた接頭辞に書き換えます。

/**
 WordPress データベーステーブルの接頭辞
 *
 それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を
 インストールすることができます。半角英数字と下線のみを使用してください。
 */
 $table_prefix = 'wp_';

例えば、移転元がwp_の接頭辞で、移転先がwp2_の場合、移転先でDBをインポートするとwp_の接頭辞でテーブルが作成されます。それに合わせるために、移転先のwp-config.phpの接頭辞をwp2_からwp_に書き換えます。

ドメイン名が変更になる場合だけでなく、同一ドメインの場合もhttpsで設定値が書かれていると面倒なので、wp-config.phpの先頭にhomeとsiteurlを書き足す。

define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com'); 

wp-config.phpを名前を変えてコピー(バックアップ)

 cp wp-config.php wp-config.php.org

ファイル一式を移転先にコピー

  1. FTPで移転先のWordpressディレクトリに、Archive.tarを転送
  2. Archive.tarを解凍

wp-config.phpのバックアップを元に戻す

tarを展開すると、wp-config.phpが移転元のファイルになっていますので、先ほどバックアップしておいたwp-config.phpで置き換えます。

mv wp-config.php.org  wp-config.php

WordPressにログインする

DBの更新やメールアドレスの確認をする。

サイトが表示できて、Wordpressにログインできたら、wp-config.phpのhomeとsiteurlは削除する必要があります。wp-config.php に書かれたままだとダッシュボードの設定から設定値が書き換えられないからです。

ただし、DBのhomeとsiteurlに間違った値が書かれたままの場合は、次の手順で対応します。

homeとsiteurlを書き換える手順
  1. function.phpでまず以下のように設定
update_option( 'siteurl', 'http://example.com' );
update_option( 'home', 'http://example.com' );
  1. wp-config.phpの記述を削除
  2. function.phpの記述も削除

All in One Migrationでエクスポートする

移転前後で、ドメイン名が変更になる場合はDB内に古いドメイン名が残っています。

All in One Migrationのエクスポート時のDB置換機能を使うと、新旧ドメイン名の置換を確実に行うことができます。

公式サイトの説明には注意して使用するようにコメントが書かれていますが、移転前後のドメイン名の置換であれば問題は起きないと思います。

Find <text> Replace with <another-text> in the database

This option finds a text in website’s database and replaces it with another on all places for as many pairs – find/replace, as you add. Normal website migration does not suggest using this option because the plugin will take care of renaming the elements of the site to the URL that you import to. This is an advanced feature that should be used with care by people that understand the construct of the WordPress database. Please bear in mind that this change can affect your user access details to the site – be careful what you replace.

https://help.servmask.com/knowledgebase/all-in-one-wp-migration-user-guide/

エクスポート時に、文字列置換のオプションがるので、古いドメイン名と新しいドメイン名を指定することで、エクスポートされたファイルは新ドメインに置き換わったデータになって保存されます。

エクスポートするとバックアップに保存されるので、ファイルはダウンロードする必要はありません。

All in One Migrationで復元する

エクスポートするとバックアップにファイルが作成されるので、そのまま復元すると、一連の移転が完了します。

まとめ

サイト移転のキモは、移転元でファイル一式をtarで固めてFTPでダウンロードできるか、移転先ではSSHが使えてmysqlコマンドでインポートできるか、それにつきます。

タイトルとURLをコピーしました