備忘録です
本番環境とは別にテスト環境を作りたい、ドメイン移設に伴って移動しないといけないなどなどの理由でWordPress環境を移設したりコピーしたりというのはよくあります。
そしてバックアップ・リカバリー系が使えない場面というのもわりかしあったりします。
そういう時にツールやプラグインに頼ることなく手動で移設するための手段になります。
大きく以下の流れで行います。
「1」まずpublic_html以下を全部取得します。FTPでも何でもいいのでWordPressが存在しているドメイン配下のファイルを全て取得します
「2」次にデータベースを全てエクスポートして取得します。色んなテーブルが混在しているのであれば、対象WordPressで使用している接頭辞のついたテーブルのみを片っ端からエクスポートして取得します。
接頭辞は wp-config.php の $table_prefix なんかに記載しているので参考にしてください。
「3」移設先に「1」で取得したファイルを全てコピーしていきます。
もし移行先がWordPressの場合は移行先のWordPressのバックアップは取得しておきましょう。これは物理ファイル丸ごとで構いません。
「4」移行先のデータベースに「2」で取得したデータを全てインポートしていきます。
phpMyAdmin経由やサーバーのツールなど何でも構いません。
「5」設定ファイルを変更していきます。
変更箇所はファイル1つ、データベース1か所になります。
ファイルの方は wp-config.php ファイル内の以下を変更していきます。
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'example_com' );
/** Database username */
define( 'DB_USER', 'example_com' );
/** Database password */
define( 'DB_PASSWORD', 'example_password' );
/** Database hostname */
define( 'DB_HOST', 'localhost' );
/**
* WordPress database table prefix.
*
* You can have multiple installations in one database if you give each
* a unique prefix. Only numbers, letters, and underscores please!
*/
$table_prefix = 'wp_';
これらを移設先のデータベースの情報に変更していきます。
次にデータベースの option テーブルを変更していきます。
optionテーブルについては接頭辞が付いていない場合なので、wpoption やwp2option と言ったテーブル名になっていると思います。
この中の siteurl と home に記載されているURLを移行先の情報に沿って書き換えます。
移行前がhogehoge.com で移行先が fugafuga.com の場合は fugafuga.com に書き換えます。
基本的に物理ファイルとデータベースを丸ごと持ってきて、wp-config.phpファイルとoptionテーブルの siteurl と home を書き換えれば移行は出来るはずです。
もし移行先がURL直下ではなく例えば example.com/okiba/ などディレクトリがある場合は siteurl と home も example.com/okiba/ となります。
ディレクトリ階層がある場合は .htaccess についても書き買えが必要な場合があるので要注意です。
よくある htaccess は
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
な感じだったりしますが、ディレクトリ階層がある場合はこんな感じになる事もあります。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /okiba/
RewriteRule ^/okiba/index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /okiba/index.php [L]
</IfModule>
サーバー側の設定にもよるので一概には言えませんが、移設はうまくいったのにアクセスに問題がある場合は htaccess なども見てみてください。
関連記事