【第2章】WP-CLI実戦編:サーバー別注意点・移行/保守テンプレ・マルチサイト・CI/CD(初心者〜中級)

【第2章】 WP-CLI実践完全ガイド: 移行・保守・マルチサイト・CI/CDの活用法 WordPress
この記事は約20分で読めます。
この記事の結論:WP-CLIの実践運用で押さえるべきは「サーバー別のPHP/権限の罠」「コピペで使える移行・保守テンプレート4種」「search-replaceの安全5原則」の3点です。特にXserverではCLI用PHPとWeb用PHPのバージョン不一致、さくらではプランごとの制限、Docker環境ではコンテナ内外の実行方法の違いが頻出のハマりポイントです。本記事のテンプレートは「dry-run → backup → maintenance → 本実行」の安全フローを組み込んでおり、そのままコピペして本番作業に使えます。

検証環境:WordPress 6.9.4 / PHP 8.3.2 / WP-CLI 2.12.0 / Xserver スタンダードプラン / ConoHa WING / Docker(wordpress:6.9.4-php8.3.2)/ macOS Tahoe 26.4 / GitHub Actions ubuntu-latest

第1章で「WP-CLIが動く」「基本コマンドが打てる」状態になっていることを前提に、この章では実践的な内容を扱います。この章は「現場でそのまま使える」コピペ用テンプレが多めです。サーバー環境ごとの注意点、移行・保守作業の定型スクリプト、マルチサイト運用のコツ、CI/CDパイプラインでのWP-CLI活用まで、実際の運用で役立つ知識を網羅しました。

サーバー別の注意点(Xserver / ConoHa / さくら / Docker)

WP-CLIが「動かない」「エラーになる」原因の大半は「CLIのPHPバージョンがWebと違う」「sudoが使えずインストール場所に困る」「WordPressのパス指定が間違っている」の3つで、サーバー環境ごとに対処法が異なります。

Xserver(エックスサーバー)

日本で最も利用者が多いレンタルサーバーです。WP-CLI自体は問題なく動作しますが、3つのハマりポイントがあります。

ハマりポイントと対処法

問題 原因 対処法
sudoが使えない 共用サーバーのため管理者権限なし ~/binにWP-CLIを配置してPATHを通す(第1章参照)
CLIのPHPバージョンが古い Web用とCLI用のPHPが別バイナリ php -vで確認し、必要なら別パスのPHPを指定
WordPressのパスがわからない マルチドメインでpublic_html/サブディレクトリ/に設置 --pathオプションで正確なパスを毎回指定

インストール手順

Xserver SSH接続後にwp --infoを実行した画面(PHPバージョンが表示されている状態)

CLIのPHPバージョン確認

よくある症状:「Webサイトは正常に動くのに、WP-CLIだけfatal errorになる」場合、ほとんどがCLI用PHPのバージョン問題です。コントロールパネルでPHP 8.2を選択していても、CLI用が7.4のまま、ということがあり得ます。Xserverサポートに問い合わせるか、フルパスで別バージョンのPHPを指定して実行してください。

ConoHa(WING)

ConoHa WINGでもWP-CLIは問題なく動作しますが、SSH接続の初期設定が必要です。コントロールパネルでSSHの有効化と公開鍵の登録を先に行ってください。

~/.ssh/config で接続を効率化

ローカルマシンの~/.ssh/configに以下を追加しておくと、接続が一気に楽になります。

複数サーバーを管理しているなら、それぞれにHost名を付けておくことで、サーバー間の切り替えがスムーズになります。

さくら(さくらのレンタルサーバ)

プランや契約時期によってSSHの利用可否や使えるコマンドに制限があります。WP-CLIがプリインストールされていない場合が多いので、Pharファイルで自前インストールが必要です。

容量やプロセスに制限があるプランでは、大きなDBのexport/importが中断されることがあります。大規模な作業は時間帯をずらしたり、分割して実行する工夫が必要です。

ローカルDocker(開発・検証)

Docker環境でのWP-CLI実行には3つのパターンがあります。

パターン 方法 特徴
A: コンテナ内で実行 docker compose exec wordpress wp ... 最もシンプル。ただしWP-CLIがコンテナ内に必要
B: wordpress:cli イメージ WP-CLI専用コンテナをボリューム共有で起動 WP-CLIの追加インストール不要
C: ホスト側から –ssh wp --ssh=docker-compose:wordpress:/var/www/html ... CI/CDや複数環境の統一管理向け。設定がやや複雑

パターンA:コンテナ内実行(最もシンプル)

パターンB:wordpress:cli コンテナ

まずはパターンAかBから始めて、CI/CD連携が必要になったらパターンCを検討するのがおすすめです。

コピペで使える移行・保守テンプレート4種

WordPress運用の定型作業を「安全なアップデート」「ドメイン移行」「障害復旧」「定期保守」の4テンプレートにまとめました。すべて「dry-run → backup → maintenance → 本実行」の安全フローを組み込んでおり、環境変数を書き換えるだけでそのまま使えます。

重要な注意事項:これらは「参考テンプレート」です。必ずステージング環境でテストしてから本番に適用してください。環境変数やパスは自分の環境に合わせて修正してください。

テンプレ1:安全なアップデート(基本形)

WordPress本体・プラグイン・テーマを一括更新する基本テンプレートです。メンテナンスモードのON/OFF、バックアップ、キャッシュクリアまで含んでいます。

テンプレ1のスクリプトを実行してメンテナンスモードON→更新→OFFの一連が完了した画面

set -euo pipefailは「エラーが発生したらスクリプトを停止する」安全装置です。|| trueを付けている箇所は「失敗しても止めない」例外処理で、メンテナンスモードやキャッシュクリアなど致命的ではない処理に使っています。

テンプレ2:ドメイン移行(URL置換つき)

旧ドメインから新ドメインへの移行テンプレートです。必ずdry-run(リハーサル)を挟んでから本実行します。

--dry-runは「実際には変更せず、何が変わるかだけを表示する」リハーサルモードです。--skip-columns=guidはRSSフィードの識別子であるguidカラムを除外します。read -pで確認入力を求めることで、うっかり本実行する事故を防いでいます。

テンプレ3:障害復旧(ログイン不可・真っ白画面)

「管理画面にアクセスできない」「サイトが真っ白」という緊急事態用です。原因調査は後回しで、とにかくサイトを復旧させることを最優先します。

復旧後は、プラグインを1つずつ有効化していき、有効化した瞬間にサイトが止まったものが原因プラグインです。「全部止めて1つずつ有効化」はWordPress障害対応の王道手法です。

テンプレ4:定期保守(cron向け)

cronで定期実行するテンプレートです。更新チェックとCronジョブ実行だけを行い、自動更新はしません。

運用のコツ:このテンプレートは「チェックと軽い掃除」のみです。自動更新は便利ですが更新でサイトが壊れるリスクがあるため、最初は手動更新をおすすめします。ログで更新可能なプラグインを確認し、手動で更新する運用から始めてください。

マルチサイト運用の実例

マルチサイトでWP-CLIを使う際は、--urlで操作対象サイトを毎回明示するのが鉄則です。--networkはネットワーク全体への操作に使い、全サイトへの一括処理はシェルのループで実現します。

サイト一覧を確認する

マルチサイトでは、作業前に必ずこの確認を行ってください。対象サイトを間違えると影響範囲が大きくなります。

特定サイトへの操作(–url)

ネットワーク全体への操作(–network)

全サイトへのループ処理

一括操作は便利ですがミスの影響も大きいです。最初は必ずoption getで現在値を確認してからoption updateを実行してください。

wp site listの実行結果(複数サイトのURL・ID・ステータスが見える状態)

スーパー管理者の管理

スーパー管理者権限は強力なので、必要最小限のユーザーにのみ付与してください。

CI/CDでWP-CLIを使う(GitHub Actions最小テンプレ)

GitHub ActionsでWordPress環境を構築してWP-CLIを実行する最小テンプレートを紹介します。PRごとに自動でWordPress環境を立ち上げ、プラグインの動作確認まで行えるため、マージ前に問題を発見できるようになります。

CI/CDで得られる3つのメリット

「毎回同じ手順」の自動化。人間が手動で行う作業では手順の抜けやミスが発生しますが、CI/CDなら設定した手順が確実に毎回実行されます。PRごとの自動検証。プルリクエストが作成されるたびにWordPress環境を構築し、基本的な動作確認を自動実行できます。段階的な自動化への足がかり。最初は検証の自動化から始めて、慣れてきたらステージングへのデプロイ自動化まで段階的に進められます。

最小テンプレート

MySQLはserviceコンテナとして起動し、WP-CLIはPharファイルをダウンロードして使用します。

GitHub Actionsでこのワークフローが成功した画面(緑のチェックマーク)

運用上の注意:本番への自動デプロイは、Secrets管理・権限設定・ロールバック手順など考慮事項が多くあります。まずは「検証の自動化」から始めて、段階的に範囲を広げてください。

search-replaceを安全に使いこなす

wp search-replaceはサイト移行で最も活躍するコマンドですが、雑に使うと取り返しがつきません。「backup → dry-run → 確認 → 本実行 → キャッシュクリア」の5ステップを必ず守り、guidカラムはスキップし、ステージング環境で先にテストするのが安全の鉄則です。

安全の5原則

# 原則 具体的な操作
1 必ずバックアップ wp db export before.sql
2 必ずdry-runを先に --dry-runオプションで変更内容を確認
3 guidカラムをスキップ --skip-columns=guidを付ける
4 最初はURLだけ置換 正規表現や複数パターンは慣れてから
5 ステージングで先にテスト 本番環境で一発勝負は絶対に避ける

基本の使い方

dry-runの実行結果

dry-runの結果には対象テーブル名と置換される行数が表示されます。異常に多い場合や予想外のテーブルが含まれている場合は、一度立ち止まって確認してください。

「置換されてない気がする」ときのチェックポイント

search-replaceを実行したのにURLが変わっていない場合は、以下を順番に確認してください。

siteurl / home オプション。wp option get siteurlwp option get homeで現在値を確認し、必要ならwp option updateで直接更新します。

wp-config.php のハードコード。WP_HOMEWP_SITEURLが定義されていると、DBの値より優先されます。ファイルを直接確認してください。

CDN設定。Cloudflareなどを使っている場合、CDN側の設定変更も必要です。

キャッシュ。単にキャッシュが残っているだけの場合もあります。wp cache flushを実行し、ブラウザのキャッシュもクリアしてから再確認してください。

本番作業前のチェックリスト

本番環境でWP-CLIを使う前に確認すべき項目を「事前チェック」「作業の安全装置」の2カテゴリにまとめました。このリストをコピーして作業記録として残しておくことで、多くの事故を未然に防げます。

事前チェック

wp --info でWP-CLIとPHPが正常動作しているか
wp core version が通り、WordPressが認識されているか
wp plugin list が通り、プラグイン読み込みに問題がないか
□ 実行場所のパスが正しいか(--pathオプション or 正しいディレクトリ)
□ ファイルの所有者・権限が適切か(ls -laで確認)

作業の安全装置

□ DBバックアップをwp db exportで取得した
□ search-replaceを行う場合、--dry-runで結果を確認した
□ メンテナンスモードのON/OFFコマンドを準備した
□ 失敗時の戻し手順(DB import)を把握している
□ 作業内容と結果を記録するログの準備ができている

参考リンク(公式情報)

WP-CLIの情報は公式ドキュメントが最も正確で網羅的です。困ったときはまず公式を確認する習慣をつけてください。

次にやると伸びること

第1章・第2章の知識を実践に変えるには「自分用テンプレートを1つ作る」「ステージングで繰り返し練習する」「マルチサイトなら–urlを体に染み込ませる」「CIでsmoke testを自動化する」の4ステップが効果的です。

ステップ1:自分の運用に合わせてテンプレートを1つ作る。この記事のテンプレートをベースに、環境変数やパスを自分仕様に書き換えたスクリプトを1つ作ってみてください。更新スクリプトでも移行スクリプトでも構いません。

ステップ2:ステージングで何度も練習する。作成したテンプレートをステージング環境で繰り返しテストし、エラーが出る条件と対処法を身につけてください。本番で「初めて」のコマンドを実行するのは避けましょう。

ステップ3:マルチサイトなら–urlを身体に染み込ませる。「対象サイトを間違えた」という事故を防ぐために、--urlを付けることを習慣化してください。

ステップ4:CIでWordPress環境を作ってsmoke testできるようにする。最初は簡単なチェックだけで構いません。自動テストの第一歩を踏み出すことが大切です。

WP-CLIは「使えるようになると、運用の景色が変わる」タイプの道具です。テンプレートを活用し、安全な手順を習慣化することで、「安全に、速く」WordPress運用ができるようになります。ぜひ日常のツールとして使いこなしてください。

WordPress
この記事を書いた人
rapls

Web開発歴6年超のフリーランスエンジニア。WordPress.orgにプラグインを2本公開中。「自分が3時間ハマった問題を、誰かが3分で解決できるように」がブログの原点。Xserver環境でのトラブルシューティングとAI駆動開発が得意分野です。

raplsをフォローする
raplsをフォローする

コメント

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