WordPressサーバー引っ越し備忘録とエラーまとめ
WordPressでサーバー引っ越しするときの手順備忘録と、ついでに色んなエラーと戦ったのでその解決策まとめ。
新しく契約したサーバーは「Mixhost」。今まで使っていたサーバーは「さくらサーバー」「Xサーバーwpx」「スターサーバー」の3つ。
サーバーが変わることでそれぞれを引っ越しさせるときに違ったエラーと戦うはめに…WordPressのお引っ越しは大変。
WordPressのサーバー引っ越し手順
引っ越したいブログのバックアップとエクスポート
旧サーバーのワードプレスを最新に更新して、プラグイン「All-in-One WP Migration」をインストール。
All-in-One WP Migrationを有効化して「エクスポート→ファイル」を選んでエクスポート、ファイルを分かりやすいところに置いておく。
このファイルはブログ内全てのコンテンツが入っているので、簡単に復旧させることができるバックアップファイルにもなる。
Mixhostでドメインの追加
Mixhostの「cPanel」にアクセス。「ドメイン→アドオン ドメイン」にドメインを追加。
※ドメイン追加時に「サブドメイン」「ドキュメントルート」が自動で設定されるけどこれはデフォルトのままでOK。「このアドオン ドメインに関連付ける FTP アカウントを作成します。」にはチェックを入れないで放置。
サブドメインを追加したい場合は「cPanel」から「ドメイン→サブドメイン」で簡単に追加できる。サブディレクトリ型で追加したい場合はワードプレスインストール時に指定できる。
ドメインのSSL化
ドメインを手動でSSL化しておくことでダウンタイムなしノーリスクで引っ越しができる。
ちなみにMixhostは自動でSSL化してくれるので、この作業をしなくても数日エラーが出るだけでそのうち直る。それでも別にいいやって場合は省略可。
「SSLなう!」で先にドメインのSSL証明書を発行しておく
まずはSSLなう!にアクセス。
指定されたファイルを現在利用中のサーバー(旧サーバー)の指定された場所に設置することで所有権の確認を行う。
- メールアドレスを入力して規約に同意
- SSL証明書を発行したいドメインを入力
- 旧サーバーにて「ドメイン直下/.well-known/acme-challenge/」という形でフォルダを作成
- その中にファイル名と中身を指定された形で作成してアップロード
- 所有権の確認ができたら「RSAタブのまま→生成(2048bits)→証明書発行申請」、秘密鍵や証明書が発行されるのでそのページをそのまま開いておく
- 新しいタブなどでMixhost(新サーバー)の「cPanel」にアクセス、「SSL/TLS」→「SSL サイトを管理します。」と進み、ページ下部にて発行した証明書や秘密鍵を貼り付ける
- 「証明書:(CRT)」→「cert.pm(サーバー証明書)」
- 「秘密鍵(KEY)」→「サーバーで使用する SSL 秘密鍵」
- 「証明機関バンドル:(CABUNDLE)」→「chain.pem(中間証明書)」
もう一つ発行されている「fullchain.pem(サーバー証明書+中間証明書)」は使用しない。
hosts編集でローカル環境作成
ネームサーバーを変更して反映されるのを待ってもいいけど、それだとどうしてもサイトが正しく表示されない「空白の期間」ができてしまう。
それを防ぐために「hosts」というファイルにたった一行加えるだけで、「自分のパソコンでだけ特定のドメインにアクセスしたとき疑似的に新しいサーバーにあるものとして表示させる」ということができる。
- Windows左下の「スタート」から、「Windowsアクセサリ→メモ帳(その他→管理者権限で開く)→ファイル→開く C:\Windows\System32\drivers\etc\hosts とファイル名をコピペで指定して開く」と進むことで確実にhostsファイルを編集することができる。
- ファイル最下部に「123.45.67.890 hogehoge.com」というように、「新サーバーIPアドレス」と「ドメイン」をスペースかタブで区切って記入したら「ファイル→上書き保存」。
- 上書き保存をしてもファイルはしばらく開いたままにしておく(作業が終わったら必ず記述した行を削除して再び上書き保存しなければいけないため)。
※サーバーIPアドレスはサーバー管理画面の「サーバー情報」から見ることができる。
※ドメインがサブドメインの場合はhoge.hogehoge.comと入力するけど、hogehoge.com/hoge/のようなサブディレクトリの場合はhogehoge.comだけでOK。
新サーバーのドメインにWordPressをインストール
hostsで指定したことで自分のパソコンからは新しいサーバーの内容が見えるようになる。他の人からはいつも通りブログが表示されているので焦らなくても大丈夫。
最初はまだ新しいサーバーにWordPressをインストールしていないため、ここでは真っ白なページに「index」が表示されているだけの状態。
- まず「cPanel」最下部にある「WordPress」からワードプレスをインストール。
- プロトコルはhttps://のまま、インストールしたいドメインをリストから選ぶ。サブディレクトリを指定したい場合はここで指定、いらない場合はサブディレクトリを空白にしておく。
- サイト名とサイト説明を入力、「マルチサイトを有効にする(WPMU)」はマルチサイトにしたい場合以外はチェックを入れないでおく。
- 管理者アカウントの設定で「Username」「Password」「Eメール」を入力。
- あとはデフォルトのまま何も触らずに「インストール」を押す。
もしデータベースの接頭語を変更したり自動バックアップを有効化したい場合は「アドバンスドオプション」から設定できる。
新しいブログでファイルをインポート
新サーバーのワードプレスにアクセスできたら、新しいワードプレスでも同じようにプラグイン「All-in-One WP Migration」をインストールして、「All-in-One WP Migration」→「インポート→ファイル」で最初にダウンロードしておいたファイルをインポートする。
すると英語で「いろいろ上書きされちゃうけど大丈夫?」みたいな注意ポップアップが出るので「PROCEED」で実行。
さいごに「パーマリンク設定で変更を保存を2回押して」みたいなことを言われるのでその通りにパーマリンク設定画面で謎の2回変更を保存。しなくても普通にブログ見れたけどなんでそんなこと言うの?そんなこと言われたら気になってせずにいられないじゃないか。
ドメインネームサーバーの変更
ドメインを取得した管理会社のサイトにログインして「ネームサーバー1~5」を以下のように変更する。
- ns1.mixhost.jp
- ns2.mixhost.jp
- ns3.mixhost.jp
- ns4.mixhost.jp
- ns5.mixhost.jp
さいごに
さいごにhostsファイルに記述した1行を削除して上書き保存するのを忘れないように。
あとは数日様子を見て完全に移行が落ち着いたと思ったら旧サーバーのワードプレスとドメインを削除。これで完全にワードプレスのサーバー移行が完了。
プラグイン「All-in-One WP Migration」のおかげでかなり簡単なんだけど、ダウンタイムなしのノーリスクでサーバー引っ越しをしようと思ったら結構やることがあった。
WordPressサーバー引っ越しエラーまとめ
hostsを書き換えても反映されない
まず最初にハマったのが、hostsファイルの上書き保存時に「この場所に保存するアクセス許可がありません。管理者に連絡してアクセス許可を取得してください。代わりにドキュメントに保存しますか?」というエラー。
これは管理者権限でメモ帳を使わないとダメということで、普通にWindowsの左下スタートメニューを開いて出てくるプログラムのところから「Windowsアクセサリ→メモ帳→その他→管理者として実行」で開いたらいけた。
それでもhostsの変更が反映されない
それでもhostsの変更が反映されないな、と思っていたらブラウザのせいだった。
キャッシュクリアしたりShift+F5でスーパーリロードとかだけじゃダメだったらしい。シークレットモードで見てみたら普通に変更が反映されていて、その後すぐにノーマルの方でも変更が反映されてた。
基本的にはhostsに変更を加えた時点で即時反映されるんだけど、たまに少しタイムラグがあるときも。
SSL化が遅い?Mixhostに移行したらhttpエラー
Mixhostに新しく移行したブログが「保護されていません」と出てしまうsslのエラー。
一番最初のブログは比較的簡単に「もうできちゃった簡単だな」という感じでサーバーの引っ越しが終わったんだけど、なんとmixhostはドメインを設定してからssl化に少し時間がかかるとか。
そのまま放置していれば24~72時間程度でちゃんとssl証明書のエラーは解消されて綺麗に表示される(今回は意外と早く3時間くらいでSSL化してくれた)。だけどその間ずっと「この通信は保護されていません!」なんて言われたらアクセスが激減どころかまったくアクセスがなくなってしまう。
それを防ぐためには手動でssl証明書を発行してドメインに割り当ててあげればいいという解決策を見つけた。これでダウンタイムなしノーリスクでサーバー引っ越しができる。
↓こちらのブログを参考にさせてもらいました、助かりましたありがとうございますm(__)m
https://weblog.kotonoha.xyz/?p=2898
SSLなう!でLet’s Encrypt証明書発行時に所有者権限の確認が失敗する
SSLなう!はすごく簡単にLet’s Encrypt証明書の発行ができる。
ただ一つ勘違いしていてハマったことがあった。
SSL証明書発行時にメールアドレスとドメインを入力して「ドメインの所有者の確認」という作業があり、ここで何回も失敗した。
原因はものすごく簡単なことだったんだけど、ファイルをアップロードする先を新しいサーバーにしてしまっていたこと。
「新しいサーバーでドメインを使うためのSSL発行」という頭だったので、「所有者を確認するために現在のサーバー(旧サーバー)にファイルをアップロードしなければいけない」というものすごく当たり前なことを取り違えていた。
トップページは表示されるけど個別投稿など下位ページが全て404エラー
トップページが表示されて無事に引っ越し完了…と思ったらトップページ以外の全てのページが404エラー。
これは.htaccessの不整合でこうなってしまったらしい。
調べていると「パーマリンク変更するプラグイン入れて何もせずに保存すれば直る」というものを見たけど、やってみたら「何もせずにそのまま保存」ということができなかった。プラグインのアップデートがあったのか自分のブログが原因で表示されなかったのか、理由は分からないけど「保存とか何も表示されてないから何もできない」的な。
それで引き続き調べているとまたまた簡単に解決した。ありがたやー。
.htaccessを以下の内容で書き替えてアップロード。
もしなければ新たに作成してアップロードします。
ファイル名は「.htaccess」で保存してください。[php]
# BEGIN WordPress
<IfModule mod_rewrite.c>;
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule># END WordPress
[/php]これでページがすべて表示されるはずです!
それでも下位ページが404エラーになる
WordPressをサブディレクトリにインストールしている場合、上記のように.htaccessを設置してもまだ下位ページが404エラーになることがある。
そんなときは前述のコードに2か所追記。
[php highlight="4,7″]
# BEGIN WordPress
<IfModule mod_rewrite.c>;
RewriteEngine On
RewriteBase /hogehoge/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /hogehoge/index.php [L]
</IfModule>
# END WordPress
[/php]
サブディレクトリ(hogehoge)であることを.htaccessに記述しておくことで下位ページが表示されるようになる。
All-in-One WP Migrationのインポートファイルサイズ
All-in-One WP Migrationはサーバーの引っ越しにとても便利なプラグイン。
個別投稿記事だけじゃなく、プラグインやテーマ、画像や記事をすべて丸ごと引っ越しさせることができるのですごく楽。
ただインポートする際、最大アップロードファイルサイズが無料版だと512MBまでとなっている(ファイルサイズが大きくてもエクスポートすることはできる)。
つまり小さなブログだと問題ないけど、画像をたくさん使っていたりすると普通に2GBとかになるから無料版だとインポートすることができない。
ところがこのAll-in-One WP Migrationのインポート時の最大アップロードファイルサイズ、テンプレートを少し編集するだけで数値を変更することができる。笑
All-in-One WP Migration最大アップロードファイルサイズの編集方法
まずは新しいサーバーでAll-in-One WP Migrationをインストールしておく。まだここでは有効化せずインストールするだけ。有効化した状態でファイルを編集しようとしたらエラーが出たから。
そして、「プラグイン→プラグイン編集→編集するプラグインを選択:All-in-One WP Migration」と進み、「constants.php」を編集する。
[php]
// =================
// = Max File Size =
// =================
define( 'AI1WM_MAX_FILE_SIZE’, 2 << 28 );
[/php]
289行目あたりに最大アップロードファイル数の指定があるので、
「 2 << 28 」→「 20 << 28 」とかに変更しておく。 変更を保存したらプラグインを有効化して、インポート画面を見ると「 2 → 20 」にしたことで最大アップロードファイル数が「5GB」になっている。
ファイルサイズが大きくてAll-in-One WP Migrationのインポートが終わらない
小さなブログだとサクッとインポートが完了するんだけど、記事が多かったり画像が多かったりするとファイルサイズが大きくてAll-in-One WP Migrationのインポートが全然終わらないことがある。
終わらないどころか全然進まない。これは待ってたら何日かかるかな?くらい遅い。
どうやらAll-in-One WP Migrationのインポートはちょっとファイルサイズが大きくなるとこんな感じになるみたい。
ということで、ファイルサイズが大きいときはこのプラグインのインポート機能を回避してファイルマネージャー(もしくはFTPソフト)で直接エクスポートファイルをアップロードすることで解決。
アップロードする場所は「wp-content」フォルダ内に「ai1wm-backups」というフォルダが作られているので、その中にエクスポートしたファイルをアップロード。
アップロードが完了したらワードプレスに戻って「All-in-One WP Migration」→「バックアップ」と進むとアップロードしたファイル名が表示されているので、そのファイルの右の方にある「復元(グレーの丸いアイコン)」をクリック。ポップアップが出たら「PROCEED」で実行。
まとめ 大変だけどそれ以上のメリット
WordPressブログのサーバー移行は大変だけど、サーバーが変わることで得られるメリットはそれ以上に大きかったからよかったと思う。
Mixhostに乗り換えてワードプレスの速度が明らかに速くなった。ブログによっては爆速化した。
特に長く使っていたさくらサーバーと比べると差は歴然。さくらサーバーは月額料金が安いからこれはこれでいいんだけど、サイトを見てくれる人的にも編集する自分的にもサクサクページが動くことでかなり快適になっていると思う。
やっぱり速いっていいな。