第7章:Web サイトの移行 (PHP / MySQL編)

← 目次に戻る

後任者への鉄則:
旧サーバー(proxy)から Ubuntu 24.04 (s2) へ WordPress 等の動的サイトを移設する際、最大の障壁は「データベース内のシリアル化された絶対パス」である。本章では、DBを破壊せずに住所を書き換える WP-CLI 執行プロトコル と、本日の8ドメイン完勝の記録を網羅する。

7.1 執行基盤:WP-CLI の導入

MySQL 内のデータを安全に置換するための必須ツール。配備なき移設は失敗を意味する。

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# wp --info --allow-root で正常動作を確認せよ

7.2 送り出しプロトコル (proxy: .230 側)

旧サーバーのデータを梱包し転送する。DBの中身が詰まっているかを確認する検証機能を備えたスクリプトを用いる。

執行:/root/push_wp_complete.sh
# [核心ロジック]
# 1. find で全階層の wp-config.php を特定。
# 2. 10KBサイズチェック: mysqldump の失敗(空のSQL)を検知し、転送を中断。
# 3. rsync -avzx : NFSマウント(/dg等)を跨がない境界固定転送。
    

7.3 受け入れプロトコル:デプロイ (s2: .227 側)

届いたデータを ISPConfig 3 の管理下へ配置し、DBをインポートする。Ver 4.9 の実接続テスト機能を重視せよ。

執行:/root/deploy_site.sh (Ver 4.9)
# [Integrity Check]
# インポート前に、抽出した接続情報で実際に MySQL ログインが可能か検証する。
if mysql -u"$CONF_USER" -p"$CONF_PASS" -h localhost "$CONF_DB" -e "SELECT 1" >/dev/null 2>&1; then
    echo "Integrity Check: SUCCESS"
fi
# SQL加工:utf8mb4 への一括強制変換。
sed -i -E 's/utf8(mb4)+/utf8mb4/g' "$SQL_FILE"

7.4 絶対パスの正常化 (2026/03/03 執行)

移設直後の「旧住所(/home/www/ 等)」を現在の正規パスへ一掃する。正規表現による二重捕捉を鉄則とする。

標準置換コマンド:
wp search-replace "(/home)?/www/domain.com" "/var/www/clients/clientX/webY/web" --regex --allow-root --skip-plugins

■ 正常化完了・執行戦績マトリクス

ドメイン Web ID SQL置換 物理洗浄 現場の苦労と判断基準
wavac-audio.comweb3920件済 (2621件)/jp/ 階層を特定し個別に執行。WP-DBManagerの書き込み不可を解消。
design-home.jpweb2916件-物理汚染はログのみ。本番環境はSQL修正のみで正常稼働。
blog.yoc.jpn.comweb4385件0件マルチサイト構成の残滓を殲滅。Replacements数最大。
f-h-t.jpweb302件0件/wordp/ 階層を特定。logs(シンボリックリンク)を除外してフリーズを回避。
library.yonezawaweb337件0件1DB/多接頭辞。巨大データ/dgを徹底回避し、kodomo_ 等を精密狙撃。
p-pal.infoweb424件済 (2件)二重WP構造。共有DBへの二重アクセスを整理し統合置換を完遂。
tango-trans.comweb416件0件PHP 5.6。BOM付きconfigの警告を無視し、正規表現で一掃。
y-seiyukai.comweb312件0件超レガシー。PHP 8.3で起動不能。php5.6 バイナリで緊急介入。

7.5 トラブル解決(今日のはまりポイント)


© 2026 dazoo.ne.jp Bible / L-Core (v1.9)