Appearance
本番環境移行手順(概要)
本番環境へ移行する際の全体像と実行順序をまとめたドキュメントです。各ステップの具体的な手順は、リンク先の個別ファイルを参照してください。
今回の移行では PHP バージョンアップが必要なため、作業中はサイトを停止します。 停止・PHP アップグレード・再開の手順および懸念点は サーバー停止・PHP バージョンアップ手順 を参照してください。
Issue #1485: テーブル作成は
dbDeltaベースの Installer(core_src/Infrastructure/Database/)が自動実行するため、通常運用では手動 CREATE TABLE は不要 です。管理画面初回アクセス時にスキーマが自動で揃います。ただし.maintenanceによる停止中はwp-adminも 503 になりadmin_initが実行されないため、停止中に DB 変更を終える場合は下記「緊急時の手動テーブル作成」の SQL を使用してください。
前提
- 本番サーバーへの接続方法・WP-CLI の有無確認は 本番環境への接続方法 を参照してください。
実行順序の一覧
事前準備・サーバー停止(バックアップ取得 → サイト停止 → PHP バージョンアップ) 詳細は サーバー停止・PHP バージョンアップ手順
コード・デプロイ 詳細は 本番環境デプロイ
PHP-DI キャッシュ削除 デプロイ手順(activate.sh)にキャッシュ削除が含まれている場合は自動で実行される。activate.sh を使わない場合は、管理画面アクセス前に手動で PHP-DI キャッシュを削除すること。対象: イベントマスタ、機種表示マッピング、ヒートマップ島図、P-WORLDメールアーカイブ。
テーブル作成 通常運用では WordPress 管理画面を開くと、
AdminDatabaseInstaller::ensure_all()がadmin_initで実行され、管理画面経由で ensure する全テーブルが自動作成される。各 Installer はバージョン管理付きで冪等に動作する。.maintenance停止中に作業する場合は管理画面アクセスが 503 で止まるため、下記「緊急時の手動テーブル作成」の SQL を実行する。初期データ投入(Installer 対象外・手動)
- イベントマスタ: イベントマスタ導入手順(本番) に従い初期データを投入
- 機種表示マッピング: 管理画面から「登録データに反映」を実行。詳細は kishu-display-mapping-table-production.md を参照
- ヒートマップ島図: 既存ファイルベースの島図は管理画面から任意でDBに取り込む。詳細は ヒートマップ島図テーブル 本番移行手順 を参照
P-WORLDメールアーカイブ設定
wp-config.phpに IMAP 定数(PWORLD_IMAP_HOST/PWORLD_IMAP_USER/PWORLD_IMAP_PASSWORD)を設定。 詳細は P-WORLDメールアーカイブ 本番環境でのテーブル作成手順日別記事の下書き自動作成(任意 / 5b) WordPress 管理画面で「日別記事」→「自動作成(21:00)」を開き、有効にするをオンにする。サイトのタイムゾーンで毎日 21:00に、翌日の考察日付(
kousatsu_date)の投稿がまだ無い場合のみ、下書きが 1 件追加される。WP-Cron はアクセス発火のため遅延しうる。本番ではサーバー cron によるwp-cron.phpの呼び出しやDISABLE_WP_CRONと代替スケジューラの併用を検討すること。サイト再開(動作確認 →
.maintenanceファイル削除) 詳細は サーバー停止・PHP バージョンアップ手順
緊急時の手動テーブル作成
Installer による自動作成が何らかの理由で失敗した場合、または .maintenance 停止中にテーブル作成を完了する場合は、各 *Installer.php 内の dbDelta 用 CREATE 文字列を接頭辞に合わせて MySQL で実行するか、手順書本文の CREATE TABLE ブロックを参照して手動実行できる。
| テーブル | DDL 正本・手動実行の参照先 |
|---|---|
db_event_master | EventMasterInstaller.php |
db_what_day_master, db_daily_article_what_day | WhatDayMasterInstaller.php、DailyArticleWhatDayInstaller.php、what-day-tables-production.md の CREATE ブロック |
db_daily_article_emoji | DailyArticleEmojiInstaller.php、daily-article-emoji-table-production.md |
db_daily_article_consideration | DailyArticleConsiderationInstaller.php |
db_kishu_display_mapping | KishuDisplayMappingInstaller.php、kishu-display-mapping-table-production.md |
db_heatmap_layout | HeatmapLayoutInstaller.php、heatmap-layout-migration.md |
pworld_mail_archive | PworldMailArchiveInstaller.php、pworld-mail-archive-table-production.md |
pworld_capture_image | PworldCaptureImageInstaller.php(v2、source_mail_ids_json を含む) |
関連
- 目次・対象テーブル一覧は 本番移行手順(参考・目次)
- 既存テーブル
db_birthdayの UNIQUE 適用は 誕生日テーブル UNIQUE 自動移行 を参照(UNIQUE(month, day, chara, divi, title)。管理画面初回読み込み時に BirthdaySeedInstaller が自動適用。月日や作品名が異なる同名キャラは別エントリとして登録可能) - 本番接続は 本番環境への接続方法
- サーバー停止・PHP アップグレード・懸念点は サーバー停止・PHP バージョンアップ手順