はじめに
WordPressでサーバー間データ移行を行った際の手順を記録する
この手順は、データ移行プラグインを用いず、データベースとファイルを手動で移行する方法
また、移行元と移行先でPHPとWordPressのバージョンが異なる
環境情報
移行元サーバー
PHP:5.6.40
WordPress:5.1.19
移行先サーバー
PHP:8.3.14
WordPress:6.6.2
前提条件
・移行先サーバーには、対象バージョンのWordPressがすでにインストールされている
・移行元と移行先のサーバーで基本的なディレクトリ構造は同じ
・移行元と移行先でドメイン名は同じ
(異なる場合でも移行可能だが、データベースやwp-config.php
の調整が必要)
移行手順
1.DBをエクスポートする
移行元サーバーのデータベースにアクセスし、データをエクスポートする
→ phpMyAdminなどのGUIツールを使うと簡単です
対象テーブル
・wp-config.php
において$table_prefix
と同じ接頭辞のテーブル(大体wp_
が接頭辞)
→ マルチサイトを設定している場合はマルチサイトのテーブルも移行する必要がある
※ よく分からない場合は、すべてのテーブルをエクスポートしておけば問題ない
2.ファイルをダウンロードする
移行元サーバーからwp-content
配下の以下のフォルダをダウンロードする
- themes(テーマ関連)
- plugins(プラグイン)
- uploads(メディア関連)
※ プラグイン関連でwp-content
配下に別途フォルダがある場合は、それもダウンロードする必要がある
3.エクスポートしたデータをインポートする
1.でエクスポートしたデータを移行先のDBにインポートする
この場合、WordPressインストール時の初期データは削除していい
※移行元と移行先でドメイン名が異なっている場合
移行元と移行先でドメイン名が異なっている場合は以下のDBのデータを修正する必要がある
-
wp_options
テーブル-
option_name
がsiteurl
のレコード:option_value
を新しいドメインに修正 -
option_name
がhome
のレコード:option_value
を新しいドメインに修正
-
-
wp_siteテーブル
-
domain
の値を新しいドメインに修正
-
-
wp_blogsテーブル
-
domain
の値を新しいドメインに修正
-
マルチサイトの場合の追加修正
-
wp_2_optinosテーブル
(接頭辞はマルチサイトの設定に依存する)-
option_name
がsiteUrl
のレコード:option_value
を新しいドメインに修正
-
4.ファイルをアップロードする
2.でダウンロードしたファイルを移行先のwp-content配下に同じようにアップロードする
WordPressインストール時に作成された以下のフォルダは、上書きして問題ない
themes
plugins
uploads
5.wp-config.phpを修正する
移行先のwp-config.php
必要に応じて修正する
- DBの接続情報はWordPressインストール時に設定されているもので正しいはず
-
$table_prefix
はインポートしたDBの接頭辞に修正する必要がある
注意点
また、移行元のサーバーで以下の設定がある場合は、必要に応じて移行先にも追加する
-
WP_AUTO_UPDATE_CORE
(自動更新の設定) -
WP_ALLOW_MULTISITE
(マルチサイト設定)
6.サイトにアクセスする
正常にページが表示されていれば完了
おわりに
これでデータ移行手順は完了
データ移行はこの手順で割とすんなりできたが、PHPのバージョン違いによって色々エラーが発生して修正に苦労した
その話は次回書くつもり
→ 次回