【サルベージ記録】解約済みサーバーからブログを救出し、新環境へデプロイせよ

なかま活動
代表
代表

昔のブログのバックアップがあるから、今のサーバーで動かしてみたいなぁ。

レガシー資産のマイグレーション

諸兄らにおかれては、バックアップという名の聖域をいかに保守されているだろうか。 昨日、筆者のローカル環境に眠っていた「旧ブログ」のアーカイブを、新サーバー(シンフリーサーバー)へと移管・再稼働させるミッションを遂行した 。

単なるファイルの転送に留まらない、PHP 8.3環境下での非互換性やリダイレクトループとの死闘を、スタックトレース風に記録する


移転フェーズ1:データベースのインポートと文字化けの懸念

まずは旧mixhost環境のDB(MySQL)を新環境 シンフリーサーバーのDB へマウントした 。

代表
代表

「テーブル接頭辞がデフォルトの wp_ ではなく wpky_ に変更されているな。wp-config.php の修正が必要だ。」

案の定、初期設定ではデータベース接続エラーが発生したため、wp-config.php をバイナリ修正(エディタ編集)し、接頭辞と認証情報を正しく紐付けた


移転フェーズ2:ERR_TOO_MANY_REDIRECTSとの遭遇

インポート完了後、ブラウザでアクセスを試みたところ、悪名高き無限ループ(リダイレクトループ)が発生した

ERR_TOO_MANY_REDIRECTS

これは、シンフリーサーバーのプロキシ環境がHTTPSを正しく認識できず、WordPress側が「まだHTTPだ」と誤認してリダイレクトを繰り返す、いわゆる「認識の不一致(Mismatch)」である

代表
代表

「プロキシからの HTTP_X_FORWARDED_PROTO ヘッダーを監視し、HTTPSが on であることを明示的に宣言するコードを wp-config.php に注入する。」

このパッチを適用した瞬間、ログイン画面のレンダリングに成功した


移転フェーズ3:PHP 8.3の高負荷とプラグインの排除

ログインはできたものの、今度は致命的なエラー(Fatal Error)がコンソールを埋め尽くした 。 原因は、新環境のランタイム(PHP 8.3.21)に対し、古いプラグインが非互換を示したことにある

  • Invisible reCAPTCHA: PHP 8.3非対応につき、FTP経由で物理削除を実行 。
  • SiteGuard: ログインURLの競合回避のため、こちらも一旦パージ 。
代表
代表

「依存関係の解消(クリーンアップ)完了。これでランタイムは安定した。」


仕上げ:Better Search ReplaceによるURLの正規化

最後に、記事内のハードコーディングされた旧ドメイン(旧ブログ.com)を新URLへと一括置換する 。

代表
代表

Better Search Replace を起動。Run as dry run? で影響範囲を確認してから、一気に wpky_posts テーブルを書き換える。」

パーマリンク設定を再保存し、.htaccess が正常に生成されたことを確認して、全工程を「Exit Code: 0」で終了した


稼働継続(HTTP 200 OK)

移管後の「旧ブログ」は、現在以下のエンドポイントで正常にサーブされている。

いえびねブログ
どうしよう、定年しちゃった!

今回の教訓は、**「環境が変われば、プロキシの設定一つでシステムは沈黙する」**ということだ。


コメント

タイトルとURLをコピーしました