DOCUMENT · 6.4 KB
skills/wordpress-maintenance/references/UPDATE-RUNBOOK.md
Workspace snapshot · 09/04 13:33
月次保守 実行手順(Phase 0〜9)
SKILL.md の正本手順。定期保守(型M1)を想定し、緊急(M2)・長期停滞(M3)の差分を各Phaseに注記する。
目次
Phase 0 作業前の合意 / Phase 1 環境の確定 / Phase 2 状態の記録 / Phase 3 バックアップ / Phase 4 更新候補 / Phase 5 更新 / Phase 6 束ごとの確認 / Phase 7 全体確認 / Phase 8 記録 / Phase 9 後片付け
Phase 0. 作業前の合意(作業日の前)
更新は「いつ」「誰が」「何を確認するか」を決めてから始める。ここを飛ばすと、 壊れたときに連絡先が分からず復旧が遅れる。
- 作業時間帯を決める。ECと会員制サイトは営業時間中に更新しない。
- 壊れたときの連絡先と、判断できる人を確認する。
- ステージング環境の有無を確認する。無い場合、無いという事実を伝えてから進む。
- 更新後に確認してもらう項目(フォーム送信、ログイン、決済)と、誰が確認するかを決める。
- 作業内容が「更新」だけか、「PHPバージョン変更」等を含むか確認する。 含む場合は別日程へ分ける。
M3(長期停滞)の場合: ここでステージング必須を伝える。無いまま進めない。 M2(緊急)の場合: 時間帯の制約は緩めてよいが、連絡先の確認は省略しない。
Phase 1. 環境の確定
- WP-CLIが使えるか(
wp --version)。無ければ管理画面経路(SKILL.md Step 7)。 - PHPバージョンとWordPressバージョンを控える。
- マルチサイトかどうか。マルチサイトなら
--networkの考慮が要る。 - キャッシュ系・セキュリティ系プラグインの有無。更新後の確認結果を汚す。
Phase 2. 状態の記録(省略禁止)
SKILL.md Step 2 を実行し、~/wp-maint/<日付>/ へ保存する。
-
plugins-before.csvが空でないこと -
themes-before.csvcore-version.txtblog_public.txt - 更新前のトップページのHTTPステータスとバイト数
保存できていない状態で Phase 5 へ進まない。
Phase 3. バックアップと復元可能性
-
wp db exportが空でなく、末尾まで書けている - 更新対象のコードアーカイブまたはホスティング側スナップショットを復元できる
- wordpress.org 以外配布のプラグインを
cp -aで退避した - 戻し方を書き出した(
references/ROLLBACK.mdのどの手順を使うか) - バックアップの置き場所が公開ディレクトリ配下でないこと
- 保管期限を決めた(DBダンプは個人情報を含む。作業後に残し続けない)
Phase 4. 更新候補の提示
-
wp plugin update --all --dry-run/wp theme update --all --dry-run/wp core check-update - メジャー更新を識別した
- 中核プラグイン(EC・フォーム・会員・ビルダー・キャッシュ・セキュリティ)を識別した
- 戻す手段が無い対象が含まれていないか確認した
- この一覧を利用者へ提示し、束の分け方に同意を得た
M2(緊急)の場合: 対象を該当プラグインだけに絞る。ついでに他も上げない。
Phase 5. 束に分けて更新
順序: コア → 中核以外 → 中核(1つずつ)→ テーマ。
- 各束の実行直前に、変わる内容を提示した
- 束ごとに Phase 6 を挟んだ(まとめて全部やってから確認しない)
- 失敗した束があれば、そこで止めて ROLLBACK.md へ
M3(長期停滞)の場合: 一気に最新まで上げない。中間バージョンを刻む。 特にコアは複数メジャーを飛ばさず、段階的に上げる。
Phase 6. 各束の直後の確認
- トップページが200を返す
-
wp core verify-checksums - 新しいPHPエラーが出ていない(
wp-content/debug.logとサーバーのエラーログ) - 管理画面にログインできる
ここで異常があれば、次の束へ進まずに戻す。
Phase 7. 全体の確認(200を返したまま壊れる箇所)
自動では判定できない。確認できない項目は未確認と記録する。
- 問い合わせフォームの送信 → 受信箱まで届いたか
- 管理画面へのログイン(別ブラウザ / シークレットウィンドウでも)
- ページビルダーの編集画面が開くか
- 決済・カート(ECの場合、テスト注文)
- 会員ログイン(会員制の場合)
-
wp option get blog_publicが 1 のまま - 下層ページ 2〜3枚
- 予約投稿・定期処理(
wp cron event listが Phase 2 の内容と比べて欠けていない) - キャッシュをクリアしてから再確認(
wp cache flush)
Phase 8. 記録と報告
-
diffで「何のバージョンが何から何へ変わったか」を出した - 確認した項目と結果を書いた
- 未確認の項目を未確認と書いた
- 戻す手順と、バックアップの場所・保管期限を書いた
- 保留した更新があれば、保留した理由を書いた
報告に書いてはいけないもの: DB名、DBユーザー名、パスワード、管理画面のURL(変更している場合)、 バックアップファイルの完全パス。報告はメールやチャットで共有される。
Phase 9. 後片付け
- 一時的に有効化したデバッグ設定(
WP_DEBUG等)を戻した - 切り分けのために停止したプラグインを、Phase 2 で記録した一覧どおりに戻した
- 作業用ディレクトリの扱いを決めた(保管するなら場所と期限、しないなら削除)
- 戻したプラグインがある場合、その自動更新を停止した(再発防止)
- 次回の保守日と、今回保留した更新の扱いを決めた
この手順が守っていること
- 戻せない状態で更新しない(Phase 2・3)
- 原因が特定できない形で更新しない(Phase 5の束分け)
- 確認していないことを確認したと言わない(Phase 7・8)
この3つを外すと、作業量は同じでも保守の価値がなくなる。