こんにちは!
川口でWordPressの講師をやっている清藤です。
WordPressでサイトを開発後本番サイトへの反映や、ドメインが新しいドメインに変更になる場合などWordPress開発では必ずWordPressを移行する作業が発生します。
今回はWordPressを複製や移行のやり方についてレクチャーしたいと思います。
WordPressの移行方法は大きく2種類
まず、WordPressの移行や複製をする場合、いくつかやり方があります。
- 本体をまるっとコピー+データベースのエクスポート/インポート
- プラグインによる複製・移行
1.本体をまるっとコピー+データベースのエクスポート/インポート
このやり方は、プラグインを一切使わないで複製・移行する方法です。
作業の流れとしては
WordPress本体をアップロード
wp-config.phpファイルを本番サーバーのデータベース接続情報に書き換える(または書き換えたファイルを再度アップロードする)
開発環境で接続しているデータベースのエクスポート
エクスポートしたデータベースを本番サーバーにインポート
インポートしたデータベースのURL(ドメインの置換)
.htaccessの更新
もしローカル開発環境から本番のサーバーにアップロードする場合は、WordPress本体をFTP(SFTP)経由によってファイルをアップロードするか、SSH接続からSPCコマンドによって、サーバー間のファイルコピーにより本番サーバーに転送します。
このときFTP接続で転送する場合はWordPressの本体だけでも数百メガ容量があるので、転送だけでかなりの時間を使いますし、ファイルの転送漏れもたまにあるので、あまりおすすめは出来ません。
WordPress本体をアップロードした後は、接続しているデータベースのエクスポートを行い、本番サーバーのデータベースにインポートを行います。
データベースをインポートしたら終わりと思いそうですが、このデータベースの中身には開発環境のままのWordPressのデータが入っています。つまり、開発環境のURLもこのデータベースに登録されている状態なので、これを本番サイトのドメインの書き換えが必要になります。
最後に、WordPressのダッシュボードからパーマリンクの更新を行い、本番サーバーに合わせた.htaccessを自動生成させて完了となります。
この詳しいやり方は今回は書きませんが、アナログなやり方でやるとしたらこのやり方になります。
特にプラグインのインストールが認められていない環境などで移行する場合はこのやり方でやるのが一般的です。
2.プラグインによる複製・移行
複製や移行で簡単な方法がプラグインを使う方法です。
この記事でもやり方を説明しますが、利用するプラグインは「All-in-One WP Migration」です。All-in-One WP Migrationは無料で使える※とても使い勝手が良い、WordPress複製プラグインです。
※無料で使う場合は容量制限があります。
All-in-One WP Migrationを使っての複製方法をレクチャーします。
WordPress本体だけをコピーしても駄目な理由
話しは戻りますが、WordPressを移行や複製する場合WordPress本体だけをコピーすれば良さそうに感じますが、それはNGです。
理由は、WordPressというのはWordPress本体とデータベースがセットで動いているからです。WordPressには設定ファイルのwp-config.phpというファイルがあります。このファイルには、WordPressを動かすための設定内容が記述されています。
この設定は、WordPressをインストールしたときに入力した内容がいくつか保存されています。

wp-config.php
画像の赤枠の部分がデータベースの接続情報になります。
画像の場合は開発環境なのでユーザー名がrootになっていたりパスワードが無い状態ですが、本番サーバーの内容はしっかり入力されているので、公開してはいけない情報です。
WordPressを表示する場合このwp-config.phpを読み込み、該当のデータベースに接続してWordPressを表示するという流れになっているわけです。
こういった理由で、WordPress本体だけを本番サーバーに上げてもうまく動かせないわけです。
さらに、データベースを本番サーバーにコピーした後も注意が必要で、データベースの中身にも開発環境のURLが残っているため、そのURLの書き換えも必要です。
例えばWordPressの設定情報はwp_options※というテーブルに入っています。
※セキュリティ対策としてwp_の部分を書き換えている場合があります。


そうすると、siteulrという行とhomeという行にhttp://localhost/wpという開発環境のURLが入っている状態です。
これをそのまま本番サーバーのデータベースにインポートしてもこの開発環境のURLが入ってしまっている状態では、正常に本番ドメインで表示出来ないのは想像できますよね。
ではこの二つだけ書き換えれば良いじゃ無いかと思う人もいると思いますが、実は投稿や固定ページで作った記事にもURLが入力されています。

この画像は、wp_postsというテーブルで投稿や固定ページの記事のデータが登録されているテーブルです。その記事の一つの中身を見ていると、画像を表示するためのhtmlタグimgというタグが入力されており、src=”http://localhost/wp/wp-content/uploads/2023/04/vulnerability.webp”というURLが設定されています。
このように記事にもURLのフルパスで入ってしまうため、記事に登録されている画像のURLを書き換える必要があり、これを全て手作業でやるのが大変なので、データベースの一括置換の処理が必要となります。
ここまで見てもらうと、WordPressが本体だけで動いているわけではないという全体像が分かっていただけたのではないでしょうか?
プラグインAll-in-One WP Migrationによる複製、移行方法
それではAll-in-One WP Migrationによる複製のやり方に移りたいと思います。
開発サイトのエクスポート作業
プラグインの新規追加のページで、「all in one migration」と検索します。

プラグインが表示されたら「今すぐインストール」をクリックして、「有効化」をクリックします。
もし、環境によってプラグインの検索が出来ない場合は、WordPressの公式サイトからダウンロードしてアップロードする方法でも大丈夫です。

インストールが完了したら、All-in-One WP Migrationメニューからエクスポートをクリックします。

「エクスポート先」をクリックして、「ファイル」をクリックします。

そうすると、エクスポート処理が始まりますので、ダウンロードボタンが出るまで待ちましょう。

もし、ダウンロードボタンが表示されたらクリックしてダウンロードを開始します。
画像の場合はダウンロードサイズは18MBと小さいですが、これは立ち上げたばかりのサイトのためです。しっかり作り込んだサイトであれば数百MBから数GBまで容量になる場合もあります。
また、バックアップファイルなどが他にある場合も容量が大きくなる原因なので、バックアップファイルは削除した状態からエクスポートしたほうが容量が抑えられるので、なるべく不要なファイルはエクスポート前に削除しておきましょう。
WordPressのエクスポート作業はここまでです。
WordPressの新規インストール
次にWordPressを複製するための移行先のWordPressを用意します。
WordPressのインストールについては、レンタルサーバーの簡単インストールを使ってWordPressを立ち上げてください。
XAMPPによるWordPressのインストール方法についてはこちらをご覧下さい。
WordPressのインポート作業
新規でインストールしたWordPressのダッシュボードに入り、WordPressのエクスポート作業と同様にプラグインでAll ine one Migrationをインストール、有効化までやってしまいます。

今回は「インポート」を選択します。

「インポート先」をクリックして、「ファイル」をクリック、ファイルは先程エクスポートしたファイルを選択します。

ファイルは.wordpressという拡張子になります。

ファイルを読み込み、しばらくするとインポート開始のボタンが表示されるので「開始」をクリックします。

正常にインポートが完了すると「完了」ボタンが表示されるので、「完了」をクリックします。

ダイアローグが閉じたら、「ダッシュボード」をクリックし、WordPressにログインします。

ここでのログイン情報は、コピー元の「ユーザー名」と「パスワード」になりますので、注意してください。なぜかというと、すでにコピーが完了しているからです。

無事ダッシュボードにログイン出来れば複製・移行は完了となりますので、トップページから他のページなど一通り確認しましょう。
All-in-One WP Migrationのエクスポートまたはインポートが上手く行かないパターン
無事エクスポートとインポートが完了できた場合は特に問題ありませんが、場合によってはエクスポートやインポートが出来ない場合もあります。
私が経験した限りでは2パターンうまくいかない場合あります。
- サイトがSSLされていない(http)の場合エクスポートが上手く行かないことがある
- サーバーによってはエクスポートファイルがダウンロード出来ない
- インポート容量が無料版で使える容量を超えている場合
1.サイトがSSLされていない(http)の場合エクスポートが上手く行かないことがある
サイトがssl化されていない場合、エクスポート自体はできますがダウンロードボタンをクリックしたときに「ファイル保存操作に失敗しました。」とエラーが表示され、ダウンロードが出来ない事がありました。
この場合はやり方があって、エクスポートまたはバックアップというメニューからバックアップだけやっておいて、ファイル自体はFTPからダウンロードすればファイルをPCにダウンロードすることができます。

画像は、FileZillaを使った例ですが、All-in-One WP Migrationのエクスポートデータは「wp-content/ai1wm-backups」の中に保存されています。
ファイル名は先程と同じく、.wordpress拡張子のファイルになります。
このファイルをローカルにダウンロードして、新しいWordPressにインポートすればOKです。
2.サーバーによってはエクスポートファイルがダウンロード出来ない
これはサーバーの仕様なのでどうしようもないのですが、ダウンロードは1番と同じ様に、FTP経由でダウンロードすればOKです。
3.インポート容量が無料版で使える容量を超えている場合
これはよくあるパターンですが、All-in-One WP Migrationは無料で使える容量が決まっています。その容量は実は固定ではなく、サーバーが許可しているアップロード最大容量となっています。

上の画像は、私の開発環境で、開発サーバーで意図的に容量を上げているので2GBとなっています。
ですので、サーバー側でアップロード最大容量を更新出来るサーバーであれば好きな容量に変更して、無料でアップロードすることができます。
アップロードの容量を変更するためにはphp.iniというファイルの該当の場所の数値を変更する必要があります。


一つはpost_max_sizeで、もう一つはupload_max_filesizeで容量を変更すれば先程のページでその容量が無料でアップロード出来る容量として反映されます。
このphp.iniが使えるレンタルサーバーももちろん有り、エックスサーバー、さくらインターネットなどです。
もし、レンタルサーバーで容量の変更が出来ない場合は、あきらめて有料版のAll-in-One WP Migrationを購入しましょう。
まとめ
今回はWordPressの複製や移設について概要と合わせてお話ししてきました。WordPressはhtmlではないので、ファイルだけアップロードしてコピーやデータの更新が出来ません。
それが今回のデータベースとの兼ね合いがあるためで、それこのレクチャーを通して大体でも理解していただけたら嬉しいです。
以上、「WordPressサイトを複製や移行をする方法」でした!