Elementorを使ったサイトはレンタルサーバーなどの簡単引っ越し機能を使うと移管時にエラーが発生することがあります。
そんなときはElementorの公式ページでも推奨されているDuplicatorというプラグインを使った移管がおすすめです。
ここではその方法について手順を実例を踏まえて解説しています。
バックアップをとる
Duplicatorで移管する際に、データベースの設定などをミスると古いWEBサイトも新しいWEBサイトもどちらも表示されないといった事象が発生します。
必ず事前にバックアップをとるようにしてください。
Duplicatorのインストール
WordPressのプラグイン「Duplicator」をインストールし有効化します。

サイトのスキャン(移行可能か調べる)
有効化が完了したら、WordPress管理画面の下の方にある「Duplicator」メニューをクリックします。

右上の「Create New」ボタンをクリックします。

設定はデフォルトのままで「Next」をクリックします。

すると、現在のサイトをスキャンして移行可能かどうか調べてくれます。
エラー対処:The database size exceeds the allowed mysqldump size limit.
エラーの内容
サイトをスキャンした場合に以下のようなエラーが発生する場合があります。
The database size exceeds the allowed mysqldump size limit.
The database size is larger than the PHP memory_limit value. This can lead into issues when building a package, during which the system can run out of memory. To fix this issue please consider doing one of the below mentioned recommendations.
データベースのサイズが、許可されている mysqldump サイズ制限を超えています。
データベースのサイズが PHP のmemory_limit値を超えています。これにより、パッケージの構築時に問題が発生し、システムのメモリが不足する可能性があります。この問題を解決するには、以下で説明する推奨事項のいずれかを実行することを検討してください。

実際にサイトを確認すると設定は以下のようになっており、問題の memory_limitは512MBになっています。
php_value memory_limit 512M
php_value max_input_vars 2000
php_value post_max_size 64M
php_value upload_max_filesize 32M
最低でも639.94MB以上ということなので、ここで問題が発生しています。
エラー対処法
エラーの対処法も親切に記載してくれています。
・RECOMMENDATIONS:
- Please change the setting SQL Mode to PHP Code. You can do that by opening Duplicator Pro > Settings > Packages.
- If you want to build the package with mysqldump, increase the PHP memory_limit value in your php.ini file to at least 639.94MB.
- SQL モードの設定を PHP コードに変更してください。これを行うには、[Duplicator Pro] > [設定] > [パッケージ] を開きます。
- mysqldump を使用してパッケージをビルドする場合は、php.ini ファイル内の PHP のmemory_limit 値を少なくとも 639.94MB に増やします。
memory_limit 値を少なくとも 639.94MB以上にするとのことなので、.htaccessを以下のように書き換えます。
php_value memory_limit 1024M
php_value max_input_vars 2000
php_value post_max_size 64M
php_value upload_max_filesize 32M
変更を保存したら、下部の「Rescan」ボタンをクリックします。

無事エラーがでなくなりました。
ビルドする
サイトをスキャンして問題がなければ「Build」ボタンをクリックします。

ビルドが完了すると次の2つのファイルがダウンロードされます。これをPCに保存しておきます。
- zipファイル
- installer.php


データベースの作成
続いて移動先のサーバー上に移管用のデータベースを作成します。
レンタルサーバーなどに入ってデータベースを生成します。

※ユーザーにすべての権限を付与してください。
以下情報を使用するのでメモっておきます。
- データベース名
- ユーザー名
- パスワード
ファイルのアップロード
先ほどDuplicatorプラグインを使ってダウンロードした2つのファイルを移行先のディレクトリにアップロードします。
- zipファイル
- installer.php

サーバにファイルをアップロードする方法
サーバにファイルをアップロードする方法は以下をご参考ください。個人的にはWebDAVがとても簡単なのでお勧めです。(サーバーがWebDAVに対応しているのであれば)
- 【超簡単】WebDAVを使ってレンタルサーバーのディレクトリをローカルのフォルダ(エクスプローラー)に表示する方法
- 【画像で解説】WinSCPの使い方。無料FTPソフトでサーバーと接続しファイルをダウンロード・アップロードする方法
Duplicatorインストーラーを開く
サーバーへのファイルのアップロードが終わったら、ファイルをアップロードしたディレクトリのURLの末尾に「installer.php」をつけてURLをたたきます。
- ドメイン/installer.php
サブディレクトリに保存した場合は以下のようになります。
- ドメイン/サブディレクトリ/installer.php
例えば、「example.comのtempディレクトリ」にファイルを保存した場合は、https://example.com/temp/installer.phpとなります。
URLをたたくと下記のDuplicatorの画面が表示されます。

OverviewはなにもいじらずでOKです。

データベースの設定
データベース接続情報の入力
Setupを開くとデータベースの接続情報が表示されます。
ここに移管用に作成したデータベースの情報を入力します。
↓

HOSTはレンタルサーバーによってはサーバーと表示されていることもあります。lolipopの場合は「~.phy.lolipop.lan」が該当します。
データベースの「Action」で何を選択するかは非常に重要です。Empty Databaseは対象のデータベースの中身を一旦削除(Empty)してから、移管するというものです。
完全に新しいデータベースを選択している場合は「Empty Database」でいいですが、そうでない場合は「Buckup Exsiting Tables」を選択してください。
右下の「Validate」をクリックします。

通知の確認:utf8とutf8mb4の違い(Notice:Character Set and Collation Support)
データベースの検証で以下のような警告が表示されました。

このサーバーのデータベースはソース サイトの文字セット [utf8] をサポートしていないため、インストーラーはデフォルトの文字 [utf8mb4] を使用します。
現在のインストールで使用されている設定
DB_CHARSET = utf8mb4
DB_COLLATE = utf8mb4_0900_ai_ci
DB_CHARSET と DB_COLLATE は wp-config.php で設定されます (参照: wp-config.php の編集)。
ソース サイトの文字セットまたは照合順序がターゲット サイトのデータベースでサポートされていない場合、デフォルトが自動的に設定されます。
デフォルトの文字セット/照合順序が望ましいものではない場合は、詳細インストール モードで設定を変更できます。
MySQLではデータベースのデフォルトの文字コードとして「utf8」と「utf8mb4」を選ぶことができます。通常は「utf8mb4」を使用します。
上記通知では「utf8mb4」を使うといっているので、これでよしとします。
なお、これは一般的に呼ばれるUTF-8とは異っています。
文字コード | 概要 |
---|---|
UTF-8 | 1文字を1〜4バイトで表現 |
utf8 | mysqlで使用。1文字を1〜3バイトで表現 |
utf8mb4 | mysqlで使用。1文字を1〜4バイトで表現 |
インストール実行
「I have read and accept all terms & notices*」にチェックを入れたら「Next > 」をクリックします。

インストール前の最終確認が表示されるので「OK」をクリックします。

Duplicatorの最終テスト
サイトの複製が完了すると自動でテストを実施してくれます。

問題がなければ「Admin Login」をクリックします。
インストールに使用したファイルを削除する必要がありますが、「Auto delete installer files after login to secure site (recommended!)」にチェックを入れておけば、管理画面にログインした際に自動でファイルを削除してくれます。

WordPressの管理画面にログインすると、移管が無事完了したと表示されます。

ただし、まだ完了ではありません。WordPressの管理画面で最後の仕上処理が残っています。
ページが見つからない場合
もとのサイトでSecurity Guardなどのプラグインを使ってWP管理画面のログインURLを変更している場合、「Admin Longin」をクリックしたときにページが見つかりませんと表示されることがあります。
このときログインURLが「https://ドメイン名/login_1234」のようになっていることがあります。
その場合は末尾のアンダースコア以下を消して「https://ドメイン名/login」としてください。
注意点:.htaccessは初期状態になる
Duplicatorを使ってサイトを複製すると、複製先のディレクトリに生成される.htasscessはWPを初期構築した状態のものになります。
もとのサイトでメモリリミットの変更や転送設定などを.htaccessに書き込んでいた場合は、移転先のディレクトリにある.htaccessに追記してください。
Elementorの処理
ElementorでURLを置換する(Replace URL)
Duplicator はサイトのコンテンツのほとんどの URL の置換を処理してくれますが、Elementorの場合はElementorの組み込みツールを使用してURLを置換する必要がある場合があります。
管理画面で「Elementor > Tools」をクリックします。

上部の「Replace URL」タブを選択します。
ここに旧サイトのURLと移管後のサイトのURLを入力し「Replace URL」をクリックします。

CSSとデータの再生成(Regenerate CSS & Data)

重大なエラーや500サーバーエラーが発生した場合の対処法
WordPressでDuplicatorなどの移管ツールを使ってサイトを移管した後に、WordPressの管理画面は表示されるのにWEBサイトが表示されないことがあります。
このページは動作していませんsaporal.net では現在このリクエストを処理できません。HTTP ERROR 500

この原因はとても簡単で、.htaccessが新規作成されたために、もともと追記していたphp_memory_limitなどの、PHPサーバーの設定の記述がなくなってしまったためです。
修正は、もともとのコードを追記すればOKです。
詳細は下記記事をご参考ください。