プラグインを使わず手動でWordPressサイトを複製してみた記録

今回は、プラグインを使わずに手動でWordPressサイトを同一サーバー内のサブドメインへ移行(コピー)するテストを行いました。

実施環境はエックスサーバーです。

移行先のドメインは、エックスサーバーのドメイン設定時にディレクトリへ生成される、デフォルトのファイルのみが置かれた完全な初期状態からのスタートです。

  • example.com
    • default_page.png
    • index.html
    • .user.ini

default_page.pngindex.htmlは作業開始直後削除しました。

移行元データのバックアップ

まずは移行元から以下の2種類のデータバックアップを取得しました。

  • ファイル一式: FTP経由でドメイン直下の全ファイルをダウンロード。
  • データベース: phpMyAdminでSQL形式のダンプファイルをエクスポート。

移行先の環境準備

移行先環境用のデータベースを新規作成しました。

移行先環境用のデータベース名、アクセスできるユーザー名、パスワードを控え、後ほどwp-config.phpを書き換える準備をしておきます。

ファイルのアップロードと設定変更

  • FTP転送: 移行元のファイルを以降先にアップロードします。
  • 設定ファイル: wp-config.phpは新しいデータベース情報に書き換えてから反映。
  • .htaccessも移行元のものをそのままアップロードしました。
  • .user.iniは移行先にあったものをそのまま維持しました。

データベースのインポート

移行元のデータベースダンプファイルを、移行先のデータベースにインポートしました。

しかし、エラーが発生してしまいました。

エラーの影響により、移行元のテーブル数が20であったにもかかわらず、移行先では16しか反映されませんでした。

phpMyAdmin上で表示されたエラーメッセージ

CREATE DATABASE IF NOT EXISTS 新環境のデータベース名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

MySQL のメッセージ:

#1044 - ユーザー ‘移行先のデータベースのユーザー名’@‘XXXXX’ の '新環境のデータベース名' へのアクセスを拒否します

SQLファイルをエディタで開いて見たところ、以下の記述が影響していることがわかったので、この部分を一旦削除しました。

CREATE DATABASE IF NOT EXISTS 新環境のデータベース名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE 新環境のデータベース名;

無事にエラーが解消し、インポートは成功しました。

テーブル数が一致することも確認しました。

(正直このやり方で正しいのか疑問ですが)

その後、データベース内の古いドメインを「Search and Replace for WordPress Databases」を利用して、新ドメインに一括置換しました。

最終的には無事移行先のWordPress環境にログインができました。

ログイン後はパーマリンクをリフレッシュしています。

まとめと所感

「ファイルが先か、データベースが先か」という順序の悩みはありましたが、最終的にはサイトが表示され、SSLやログイン状態も問題ないことを確認できました。

手動での作業は手順が多く、たどたどしくなりましたが、構造を理解する良い経験になりました。

定期的にこの複製作業の練習は行いたいです。

INDEX