[{"data":1,"prerenderedAt":173},["ShallowReactive",2],{"content-/wordpress-cutover-postponed":3,"all-pages-for-dir":156,"related-/wordpress-cutover-postponed":157,"og-image-/wordpress-cutover-postponed":172},{"id":4,"title":5,"body":6,"category":138,"concepts":139,"description":140,"extension":141,"meta":142,"navigation":143,"ogImage":139,"path":144,"project_name":145,"published":146,"publishedAt":147,"seo":148,"stem":149,"tags":150,"todo":139,"unpublished":146,"updatedAt":139,"__hash__":155},"pages/2026-07/2026-07-24/wordpress-cutover-postponed.md","WordPress本番切替を土壇場で止め、旧サーバーの畳み方を決めた",{"type":7,"value":8,"toc":126},"minimark",[9,13,17,20,24,27,30,34,37,40,43,47,50,53,56,59,63,66,69,72,76,79,82,85,89,92,96,99,102,105,108,111,114,117,120,123],[10,11,5],"h1",{"id":12},"wordpress本番切替を土壇場で止め旧サーバーの畳み方を決めた",[14,15,16],"p",{},"知人から連絡が来た。\n旧WordPressサイトを動かしているVPSを見てくれている人で、PHPの期限が切れていること、バックアップの仕組みが入っていないことを指摘してきた。\n保守を引き受けてもいい、という申し出だった。",[14,18,19],{},"言われるままに頷いてもよかった。\nだが提案を鵜呑みにする前に、まず自分の目で確かめることにした。",[21,22,23],"h2",{"id":23},"指摘は当たっていた",[14,25,26],{},"PHPのバージョンを見ると、セキュリティサポートはすでに切れていた。\nバックアップの設定を探しても、自動で取得する仕組みはどこにも見当たらなかった。",[14,28,29],{},"指摘の2点は、どちらも事実だった。\nここまでは、まだ想定どおりだった。",[21,31,33],{"id":32},"バックアップの前に権限がないことに気づいた","バックアップの前に、権限がないことに気づいた",[14,35,36],{},"WordPress本体とデータベースの手動バックアップを取ることにした。\nサーバー上でファイルを固め、ローカルへ落とし、ハッシュ値を突き合わせ、圧縮ファイルの中身まで壊れていないことを確かめた。\nここまでは順調だった。",[14,38,39],{},"つまずいたのは、その先だ。\nサーバーに残っている管理者権限のあるアカウントが、手元に見当たらない。\n心当たりのあるパスワードを一つずつ試したが、全部弾かれた。",[14,41,42],{},"正面から入れないなら、別の入り口を探すしかない。",[21,44,46],{"id":45},"別のcliに任せて管理者権限を取り戻す","別のCLIに任せて、管理者権限を取り戻す",[14,48,49],{},"サーバーの起動プロセスを経由すれば、今のパスワードを介さずに管理者権限を取り戻せる手段が残っていた。\nただし手順を一歩間違えると、サーバーごと起動しなくなる作業でもある。",[14,51,52],{},"この作業はブラウザ越しの遠隔コンソールを使う必要があった。\n自分では手を出さなかった。\nCodex CLIに手順ごと委譲し、結果だけを見守った。",[14,54,55],{},"しばらくして、権限を取り戻したという報告が返ってきた。\n既存のサービスは無停止のまま動き続けていることも、あわせて確認できた。",[14,57,58],{},"鍵が全滅した先に、起動プロセスから回り込むという道が残っていた。\nそこに気づけたことで、詰みを避けられた。",[21,60,62],{"id":61},"延命ではなく畳むと決めた","延命ではなく、畳むと決めた",[14,64,65],{},"権限を取り戻したあと、判断すべきことが一つ残っていた。\n自動バックアップの仕組みまで、恒久的に整えるかどうかだ。",[14,67,68],{},"このサーバーは、別のプロジェクトで近く退役させる予定になっている。\n恒久的な保守契約を結んでまで維持する意味は薄い。\nワンショットのバックアップは、もう手元にある。",[14,70,71],{},"延命ではなく、畳む。\nそう決めた。",[21,73,75],{"id":74},"確かめる過程で設定の穴が見つかった","確かめる過程で、設定の穴が見つかった",[14,77,78],{},"作業の途中、接続時のログに出ていた失敗ログインの累積回数に、思わず二度見した。\n公開サーバーによくある雑音だろう、と最初は考えていた。",[14,80,81],{},"念のため認証まわりの設定を辿ってみると、雑音では済まない状態だった。\n外部から総当たりを受けやすい設定が残ったままになっていたので、その場で締め直し、反映まで確かめた。",[14,83,84],{},"新しいパスワードそのものが実際に機能するかを、別の経路で二重に確かめる作業も検討した。\nだが接続がうまく繋がらず、これ以上時間を使う理由がないと判断して見送った。\n退役が決まっているサーバーに、保険の保険までかける必要はない。",[21,86,88],{"id":87},"同じ日のうちに本番切替の番が回ってきた","同じ日のうちに、本番切替の番が回ってきた",[14,90,91],{},"保守提案は、もともと本題ではなかった。\n本題は、旧WordPressサイトをNuxt Contentへ移す、もっと大きな移行プロジェクトのほうだ。\nその本番切替が、同じ日のうちに回ってきた。",[21,93,95],{"id":94},"確認画面の一歩手前で自分の判断で止めた","確認画面の一歩手前で、自分の判断で止めた",[14,97,98],{},"記事の変換もアセットの移設も、残っていた懸案の決着も、別セッションによる検証も、すべて済んでいた。\n残るは本番切替そのものだった。",[14,100,101],{},"DNSを向け替えれば、旧サイトの代わりに移行先サイトが世に出る。\n不可逆で、しかも現役で動いている事業サイトの話だ。\n各ステップの直前に必ず立ち止まって確認する、という条件だけをつけて進めることにした。",[14,103,104],{},"準備は淡々と進んだ。\nコミットを済ませ、現在のDNS設定とロールバックの手順を書き残し、切替の確認画面まで辿り着いた。\n旧サイトを指すレコードを、移行先を指すレコードへ置き換える。\nその一歩手前だった。",[14,106,107],{},"画面の裏側で、移行先サイトのトップページを開き直してみた。\n挨拶文が一枚あるだけで、200本を超えるはずの記事への入り口が、どこにもなかった。",[14,109,110],{},"手が止まった。\n止めた。設定は何も変えていない。",[14,112,113],{},"読者が最初にたどり着く場所に、読むべきものへの道がない。\nそれを本番と呼ぶわけにはいかない。",[21,115,116],{"id":116},"次の条件が決まった",[14,118,119],{},"中止した作業は、そのまま記録に残した。\n到達した画面の中身、設定値、ロールバックの手順、すべてを手順書に書き写し、コミットした。\n旧サーバーは止めず、切替後もロールバック先として当面残す、という前提も変えていない。",[14,121,122],{},"代わりに、次へ進むための条件が一つ、はっきりした。\nトップページに全記事のインデックスを作ること。\nそれができて初めて、確認画面の続きに進んでいい。",[14,124,125],{},"保守提案から始まった一日は、権限を失っては取り戻し、畳む対象を見極め、切替の手前で自分から手を止めるところまで進んだ。\nどちらのときも、最後に手を止めるかどうかを決めたのは自分だった。",{"title":127,"searchDepth":128,"depth":128,"links":129},"",2,[130,131,132,133,134,135,136,137],{"id":23,"depth":128,"text":23},{"id":32,"depth":128,"text":33},{"id":45,"depth":128,"text":46},{"id":61,"depth":128,"text":62},{"id":74,"depth":128,"text":75},{"id":87,"depth":128,"text":88},{"id":94,"depth":128,"text":95},{"id":116,"depth":128,"text":116},"dev",null,"旧WordPressサーバーの保守提案を自分で裏取りし、失った管理者権限を取り戻して退役前提の一括バックアップ方針を固めた話。本番切替も確認画面の直前で、移行先サイトの完成度を理由に自分の判断で止めた記録。","md",{},true,"/wordpress-cutover-postponed","eurekapu",false,"2026-07-24T00:00:00.000Z",{"title":5,"description":140},"2026-07/2026-07-24/wordpress-cutover-postponed",[151,152,153,154],"WordPress移行","サーバー運用","本番切替","意思決定記録","Bu4QtgkTlX93_DV93LsJpgLkFYbY5fveXCVyTHHxDfw",[],[158,161,164,168],{"title":159,"path":160,"publishedAt":147},"2026年7月24日の開発日記 - 進める判断より、止める判断のほうが多かった日","/2026-07-24-diary",{"title":162,"path":163,"publishedAt":147},"WordPress移行サイトのカテゴリとナビゲーションを作り直した一日","/wordpress-migration-category-redesign",{"title":165,"path":166,"publishedAt":167},"2026年7月23日の開発日記 - 音声入力の誤変換を辞書で潰し、WordPressの出口を決めた日","/2026-07-23-diary","2026-07-23T00:00:00.000Z",{"title":169,"path":170,"publishedAt":171},"2026年7月21日の開発日記 - 会計アプリの誕生と、サブエージェントが吐いた一つの嘘","/2026-07-21-diary","2026-07-21T00:00:00.000Z","https://log.eurekapu.com/og/blog/wordpress-cutover-postponed.png?v=2026-07-24T00%3A00%3A00.000Z&title=WordPress%E6%9C%AC%E7%95%AA%E5%88%87%E6%9B%BF%E3%82%92%E5%9C%9F%E5%A3%87%E5%A0%B4%E3%81%A7%E6%AD%A2%E3%82%81%E3%80%81%E6%97%A7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E7%95%B3%E3%81%BF%E6%96%B9%E3%82%92%E6%B1%BA%E3%82%81%E3%81%9F&author=Kei%20Komatsu&sig=f000e8255f294b7f",1785099304127]