レンタルサーバー『ColorfulBox(カラフルボックス)』の「WordPress簡単移行ツール」を使用してサーバー移転作業をした際の備忘録記事です。
基本情報
カラフルボックスの「WordPress簡単移行ツール」は、他社のサーバーで運用しているWordPressサイトのデータを、カラフルボックスのサーバーへと移行できる無料のオプション機能。
移行できるデータは、WordPressの基本的な構成データ「データベース、メディアファイル、プラグイン、テーマ」。
WordPressをインストールしているディレクトリ外のファイルは移行できない。
一部の設定ファイルの中身(wp-config.phpや.htaccess)は、WordPressデフォルトの内容になっていた(移行されず新たに生成?)。これらは移行後に手動で修正・再設定する必要があった。
大まかな手順
- カラフルボックス
に申し込む
30日の無料お試し期間中でも使えた。 - 移行元WordPressサイトの追加ログインセキュリティを解除
ベーシック認証、TOTP、画像認証などの二要素認証。IP制限など。
簡単移行ツールでのデータ移行が完了したら各種セキュリティ設定を有効化しておく。 - カラフルボックスのマイページから「WordPress簡単移行ツール」を実行
「マイページ」→「オプション」→「WordPress簡単移行ツール」
容量が50GB以上などで大きいメディアファイルは手動(FTP)で移行する。 - 正常に移行できているか移行先サイトにログインして動作確認・再設定
hostsファイルを一時的に書き換えて移行先のサイト(サーバー)にアクセスできるようにする。
この時点では移行先サイトをSSL化できていない。サイトをブラウザのセキュリティの例外に指定してログイン&動作確認&再設定。 - DNSを設定する(他社管理ドメインの場合)
カラフルボックスの「マイページ」→「ドメイン」→「DNSの管理」にアクセス。DNS Managerで新しいDNSゾーンを追加する。
他社のドメイン管理ページで、ネームサーバーの設定をカラフルボックスが指定するサーバーに変更する。 - DNSが浸透・伝播するのを待つ
設定完了後、数時間~3日くらいの間に切り替わるらしい。
DNSが浸透すると10~30分でAutoSSL機能が働き、自動でSSL証明書が発行されサイトがSSL化される。 - 移転完了
時期と必要に応じて、移行元のWordPressをアンインストール。
環境メモ
- 移転するサイトはマルチサイトでない単一のサイト
- 移行元サーバー『mixhost』、スタンダードプラン
- 移行後『カラフルボックス』、BOX2プラン
- 独自ドメインを使用
- ドメインの管理には他のドメイン管理会社を使用
- SSL化(https)している
- サイトのサイズは約7.7GB
- 時期:2023年7月
- WordPressバージョン:6.2.2
雑多メモ
一時的に解除したログインセキュリティ
WordPress簡単移行ツールを使用するために、一時的に無効にしたWordPressのログインセキュリティ。
- ログインページ(wp-login.php)などのベーシック認証
- WordFence:設定は保持したままプラグインごと無効化(WAF、TOTP解除のため)
- SiteGuard:画像認証のみOFF(未確認だが、ログインページ変更とフェールワンスのOFFも必要?)
IDとパスワードだけでの認証だと不安になっちゃう。移行処理完了後はすぐに有効化!
SiteGuardのログイン履歴を確認したところ、ツール側は2分くらいの間に3回ログインしていました。
移行完了にかかった時間
WordPress簡単移行ツールを実行して、開始から完了までにかかった時間について。
移行元サイトのデータサイズは、WordPressのサイトヘルス情報によると約7.7GB。移行前後のプラン・サーバーは、「mixhostのスタンダードプラン」→「カラフルボックスのBOX2プラン」。
サーバーへの移行処理にかかった時間は約1時間30分だった。
移行処理にかかる時間は、移行元や移行先のサーバーの性能・状態・回線にもよりそうです。
ツール使用中のサーバー負荷
WordPress簡単移行ツールの実行中は、メモリと、ディスクへの読み込み・書き込みにそれなりの負荷がかかるようだった。
cPanelの「リソースの使用量」で確認してみたところ、数分程度の間、一時的にメモリ使用量が制限いっぱい8GBくらいになっていた。
1時間の平均使用量データでみると最初の1時間は4GB、残りの30分を含む分は2GBになっていた。普段のメモリ使用量は1GB弱だったから、平均するとプラス1~3GBくらい?
一つのサーバーで複数のサイトを運用していたりスペックに余裕がない場合は、アクセスの少ない時間帯に実行するのが無難?
『All-in-One WP Migration』の機能?
WordPress簡単移行ツールの実行後、移行元と移行先の「wp-content」ディレクトリに「ai1wm-backups」というディレクトリが自動で作成されていた。
移行元の方のディレクトリの中には、移行用にまとめられたと思わしき約8.7GBのファイル(バックアップファイルぽい)が作成されていた。これはWordPressプラグイン『All-in-One WP Migration』の機能と一致する。
カラフルボックスのWordPress簡単移行ツールは、『All-in-One WP Migration』の有料版機能を使っているのかも(無料版はインポート可能なサイズが512MBまでらしい)。
謎のディレクトリが作成されていたのでちょっと気になりました。
もしかしたら、移行元のサーバーには上記ファイルを作成するための空きが必要?未確認です。
移行前後のPHPバージョンを一致させる
cPanelの「MultiPHP マネージャー」で、移行前後のPHPバージョンを同じものにする。
.htaccess
WordPress簡単移行ツールで移行後の各ディレクトリの.htaccessファイルについて。
ドメインディレクトリ直下
移行後のドメインディレクトリ直下の.htaccessファイルは、移行前の内容が消えて(或いは移行されず)デフォルト状態になっていた。
移行前のバックアップから必要な内容をコピペするなりして手動で修正した。
wp-adminディレクトリ直下
wp-adminディレクトリ直下に配置していた.htaccessファイルは、移行後に一時的に有効にしていたcPanelのディレクトリプライバシーの記述のみで、移行前の内容は消えていた。
移行されなかったか、上書きされたと思われる。こちらも手動で修正。
uploadsディレクトリ
/wp-content/uploadsディレクトリ直下の.htaccessファイルは、移行前の内容そのままで移行されていた。
その他
public_htmlディレクトリ直下やその他のディレクトリの.htaccessファイルは移行されない。手動で移行する。
wp-config.php
WordPress簡単移行ツールで移行後のwp-config.phpは、基本的な記述のみのデフォルトな状態で生成されていた。
IDとパスワードは自動で設定され、データベースの接頭辞はデフォルトになっていた。
その他、移行前に書き込んでいた内容も消えていたので追記・修正した。
手動で移行するファイル
- ドメインディレクトリ直下のads.txt
- ウェブサービス登録時のサイト所有確認用ファイル
- ベーシック認証用のファイルとフォルダ
SSL化前の動作確認
WordPress簡単移行ツールでの移行後、DNSの設定をする前(ネームサーバーを移行先のサーバーに変更してサイトをSSL化する前)に、サイトにログインして動作確認する方法について。
hostsファイルを書き換える
まずは、hostsファイルを書き換えて移行先のサーバーにアクセスできるようにする。
下記リンク参照。
セキュリティ例外設定でログイン
hostsファイルを書き換えて移行先のサーバーにあるサイトにアクセスできるようになる。
ただし、この時点ではSSL証明書が発行されていない(サイトがSSL化していない)ため、ウェブブラウザでアクセスすると警告が出て表示できない。管理画面へのログインもできない。
対策として、Firefoxでサーバー証明書のエラー例外を設定してアクセスした。
エラー表示の「詳細」→「危険性を承知で続行」でアクセス、サイト表示できた。
Google ChromeとMicrosoft Edgeでも可能だと思われるが、エラー画面の「詳細設定」ボタンから進んでも、例外としてアクセスできるボタンが表示されなかった(検索すると情報が色々出てくる)。
LiteSpeed Cacheのキャッシュ不具合
プラグイン『LiteSpeed Cache』のページキャッシュが有効にならなかった。
症状は、プラグイン側の設定画面と.htaccessの設定では有効になっているが、キャッシュが生成・hitしないというものだった。プラグイン設定画面での「変更を保存」ボタンを押しての設定更新、「すべてをパージ」でも症状変わらず。
「管理画面」→「LiteSpeed Chache」→「データベース」→「すべてのTransients(すべてのトランジェントオプションを消去)」&「テーブルの最適化」を試すと改善した。
キャッシュが有効になっているかの確認は下記サイトが簡単。ブラウザのデベロッパーツールでも確認できる。
投稿済み記事を更新できない
不具合の症状は、投稿済みの記事(投稿)の内容を編集(変更)して更新ボタンを押しても、編集した内容が反映・適用されないというもの。記事を正常に更新できない。
不具合に気づいて何度か更新を試みた当初はエラー表示されなかったが、ある時エラーが表示された「更新に失敗しました。データベースに投稿を追加できませんでした。」
新規投稿・更新など色々と試していく中で、更新できる記事とできない記事があることを発見。両者の違いは記事内の絵文字の有無だった。エラー表示と合わせてネット検索してみると対策情報が見つかった。
この不具合は、データベースの文字コードの設定によるものだった。絵文字以外にも、特殊文字が含まれていると発生する場合があるらしい。
対処方法
wp-configとデータベースの修正で対処した。
WordPress管理画面のサイトヘルスで確認してみると、データベースの文字セットは「utf8mb4」、データベース照合は「utf8mb4_unicode_520_ci」になっていた。
wp-config.phpの「DB_CHARSET」の設定を確認すると「utf8」になっていたので、以下のように修正。
define( 'DB_CHARSET', 'utf8mb4' );
次は、cPanelのphpMyAdminを開いて、サイトで使用しているデータベースを選択して開く。
WordPressの標準テーブル(wp_postsなど)を確認してみると、照合順序(collation)は「utf8mb3_general_ci」になっていた。他、テーマやプラグインのテーブルでは「utf8mb4_unicode_ci」となっていた。
「操作」→「照合順序」→「utf8mb4_unicode_520_ci」→「すべてのテーブルの照合順序を変更」をチェック→「すべてのテーブルのカラム照合順序を変更する」をチェック→「実行」。
これでひとまず改善した。
参考記事・参考サイト
移行前には発生していなかった不具合でした。
文字コードと照合順序の設定はややこしい。WordPressの実用上、何に、どのように影響するのか把握しきれていないので、さらなる不具合がちょいと心配です🤔
DNS浸透にかかった時間
DNS設定でネームサーバーの設定を移行先に変更してから1時間おきに確認したところ、4時間後までは移行元のサーバーのサイトが表示されていた。その後は寝てしまったので未確認。
ネームサーバーの設定変更から11時間後くらいに確認したところ。移行先のサーバーに切り替わっていて、SSL証明書も発行されてサイトがSSL化していた。
cPanelの「SSL/TLS Status」にある説明書きによると、「レコードの反映完了後、10~30分でAutoSSLが稼働」とあった。
自分が使っている回線で移行後のサーバーが表示されていても、他所では移行元が表示されている場合があるらしいので、移行後3日は移行元サーバーを稼働させていました。
移転に伴うサイトダウンタイムがちょっと心配でしたが、SSL証明書の発行待ちで30分程度なら、特段気にしなくても良かったかも🤔
その他
- 電子メールアカウントを再設定
- Cronジョブを再設定
- cPanelログインの2要素認証を設定
- cPanelの「Webサイトの最適化」を再設定
あとがき
なんやかんやと戸惑い・躓きながらも、なんとか無事にサーバー移転できました。移転後のカラフルボックスでのレスポンス・使用感は、移行前のmixhostと特に変わらず快適でした。
それにしても、疲れた🤣🤣🤣
サーバー移転は結構大変でした。移転用のツールを利用して、基本的な手順を覚えてしまえば、特別に難しくはないのかもしれませんが、それでもやっぱり面倒だし時間もかかる感じでした。
カラフルボックスでも提供されていますが、有料でのWordPress移行代行サービスもあるので、予算や状況に合わせて利用するのもアリだと思います。