mcpField
W
wp-wpengine

wp-wpengine

github.com/kylebrodeurクラウド・DevOps149 回インストール1 週間前に更新
リポジトリ

wp-wpengine について

SSH、WP-CLI、デプロイワークフローを使ったWP EngineへのWordPressコードのデプロイと環境管理を説明するスキルガイドです。GitHub Actions、git push、リモート運用、利用状況レポートを扱います。

主な機能

  1. 01GitHub Actionsによるデプロイ
  2. 02git pushによるデプロイ
  3. 03リモートでのWP-CLI操作
  4. 04SSHとファイル転送の手順
  5. 05インストール、ドメイン、キャッシュ、バックアップ、ユーザー管理
  6. 06利用量と帯域幅のレポート

活用シーン

  1. 01環境ごとのWordPress変更のデプロイ
  2. 02リモートでのプラグイン更新やキャッシュ消去
  3. 03search-replaceによるドメイン移行
  4. 04月次アカウント利用状況レポートの作成

MCP 対応

`wpe-labs` Claude Code skillsを使い、自然言語でWP Engineのインストール環境などを管理する方法に触れていますが、MCPサーバーについては説明していません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/kylebrodeur/wordpress-agent-kit --skill wp-wpengine

インストール後、Claude Code で/wp-wpengineを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
ci-gate.md
github-actions-deploy.md
scripts/
ci-gate.sh
wpe-check.sh
wpe-preflight.sh

詳細

WP Engine

使用する場面

  • git push または GitHub Actions を使って、WordPress のコードを WP Engine 環境にデプロイします。
  • ブランチで制御する CI/CD パイプラインを設定します。develop → dev、staging → staging、main → production。
  • WP Engine のインストール環境で、WP-CLI コマンド(プラグインの更新、キャッシュのフラッシュ、DB 操作、検索と置換)をリモート実行します。
  • WP Engine のインストール環境、ドメイン、キャッシュ、バックアップ、ユーザーを自然言語で管理します。
  • WP Engine アカウント全体の月次使用量/帯域幅レポートを生成します。
  • LargeFS のメディアオフロード設定を管理します。

前提条件

  • 1Password の Employee 保管庫に SSH キーが保存されていること(アイテム名 wpengine_ed25519)。

    キータイプに関する注意: RSA 4096 ビットは、WP Engine の git push で長年実績のあるキータイプです。 Ed25519 はより新しい方式で、現在の WP Engine インフラストラクチャでも動作しますが、 新しいキーを設定する場合は RSA 4096 が最も安全です:ssh-keygen -t rsa -b 4096 -f ~/.ssh/wpengine_rsa

  • SSH キーが WP Engine ポータルの Git Push と SSH Keys の両方に登録されていること(登録箇所は別々ですが、同じキーを使用します)。
  • 1Password の Employee 保管庫に WP Engine API 認証情報が保存されていること(アイテム名 WP Engine API)。
  • op CLI で認証済みであること(op whoami が動作すること)。
  • SSH ゲートウェイへのアクセスには、Professional プラン以上が必要です。
  • 自然言語で管理するために、wpe-labs Claude Code スキルがインストールされていること(~/.claude/skills/wpe-labs:*)。

手順

1) 新しいマシンで初めて SSH を設定する

1Password から秘密鍵を取得し、SSH を設定します。

op read "op://Employee/wpengine_ed25519/private key" > ~/.ssh/wpengine_ed25519
chmod 600 ~/.ssh/wpengine_ed25519

# Trust WP Engine git push host (RSA — what WP Engine's git.wpengine.com serves)
ssh-keyscan -t rsa git.wpengine.com >> ~/.ssh/known_hosts
# Gateway: scan the specific install hostname (each install has its own subdomain)
# Do this once per environment you connect to:
ssh-keyscan -H <install>.ssh.wpengine.net >> ~/.ssh/known_hosts
# e.g.: ssh-keyscan -H mysite.ssh.wpengine.net >> ~/.ssh/known_hosts

~/.ssh/config に追加します(Host * ブロックより前に記述してください)。

# WP Engine git push
Host git.wpengine.com
  User git
  IdentityFile ~/.ssh/wpengine_ed25519
  IdentitiesOnly yes

# WP Engine SSH gateway (WP-CLI + file transfer)
Host *.ssh.wpengine.net
  IdentityFile ~/.ssh/wpengine_ed25519
  IdentitiesOnly yes
  ControlMaster auto
  ControlPath ~/.ssh/wpe-%r@%h:%p
  ControlPersist 10m
  StrictHostKeyChecking accept-new

StrictHostKeyChecking accept-new:初回接続時にホストキーを自動的に受け入れて保存し、以降はそのキーの変更を拒否します(MITM 保護)。no より安全で、インストール環境のホスト名ごとに手動で ssh-keyscan を実行する必要もありません。

ControlMaster / ControlPersist:SSH 接続を多重化し、同じゲートウェイ経由の後続コマンドで既存の接続を再利用します。WP-CLI を繰り返し実行する際、コマンドごとの遅延を約 2 秒から約 100 ミリ秒に短縮できます。

git push のアクセスを確認します。

ssh [email protected] info
# Expected: hello <username> / R W <install-name>

SSH ゲートウェイへのアクセスを確認します(<install> を WP Engine のインストールスラッグに置き換えてください)。

ssh <install>@<install>.ssh.wpengine.net wp --info
# Expected: WP-CLI version + paths

2A) 公式 WP Engine GitHub Action でデプロイする(推奨)

公式 WP Engine GitHub Action は SSH 経由の rsync を使用します。git push より高速で柔軟性が高く、WP Engine が開発・保守しています。

リポジトリ:wpengine/github-action-wpe-site-deploy@v3

必須のシークレット

公式 Action は WPE_SSHG_KEY_PRIVATE(SSH 秘密鍵)を使用します。known_hosts は Action が自動で処理するため、keyscan は不要です。

# .github/workflows/deploy-production.yml
name: Deploy → Production
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Build assets
        run: npm ci && npm run build

      - name: Deploy to WP Engine
        uses: wpengine/github-action-wpe-site-deploy@v3
        with:
          WPE_SSHG_KEY_PRIVATE: ${{ secrets.WPE_SSHG_KEY_PRIVATE }}
          WPE_ENV: <install-name>
          PHP_LINT: true
          CACHE_CLEAR: true
          # Optional: deploy only a subdirectory (e.g., a theme)
          # SRC_PATH: "wp-content/themes/my-theme/"
          # REMOTE_PATH: "wp-content/themes/my-theme/"
          # Exclude files via rsync flags:
          FLAGS: -azvr --inplace --delete --exclude=.* --exclude-from=.deployignore
          # Post-deploy WP-CLI script (runs on the remote server):
          SCRIPT: "scripts/post-deploy.sh"

scripts/post-deploy.sh(リポジトリにコミットされ、デプロイ後に WP Engine 上で実行されます):

#!/usr/bin/env bash
set -e
wp cache flush --skip-plugins --skip-themes
wp rewrite flush --skip-plugins --skip-themes
wp cron event run --due-now --skip-plugins --skip-themes
echo "✅ Post-deploy WP-CLI complete"

.deployignore(rsync の除外リスト。リポジトリのルートにコミットします):

.git
node_modules
.env
.env.*
README.md
.github
package.json
package-lock.json
pnpm-lock.yaml
composer.json
composer.lock
*.test.*
tests/

主なオプション:

オプション説明
WPE_ENVインストールスラッグ。別名:複数環境のワークフローで使用する PRD_ENV、STG_ENV、DEV_ENV
SRC_PATHリポジトリ内のデプロイ対象サブディレクトリ(末尾にスラッシュを付けると内容のみをデプロイ)
REMOTE_PATHWP Engine 上のデプロイ先(デフォルトは WP ルート)
PHP_LINTデプロイ前に PHP lint を実行する場合は true
FLAGSrsync フラグ。デフォルト:-azvr --inplace --exclude=.*
SCRIPTデプロイ後に実行する bash スクリプト(サーバー上の WP ルートからの相対パス)
CACHE_CLEARデプロイ後にページキャッシュと CDN キャッシュをクリアする場合は true(デフォルト:true)

複数環境のワークフロー:

# Branch → environment mapping
on:
  push:
    branches: [develop, staging, main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm run build
      - uses: wpengine/github-action-wpe-site-deploy@v3
        with:
          WPE_SSHG_KEY_PRIVATE: ${{ secrets.WPE_SSHG_KEY_PRIVATE }}
          # Branch → env: develop=dev, staging=stg, main=prod
          DEV_ENV: ${{ github.ref == 'refs/heads/develop' && '<install>dev' || '' }}
          STG_ENV: ${{ github.ref == 'refs/heads/staging' && '<install>stg' || '' }}
          PRD_ENV: ${{ github.ref == 'refs/heads/main' && '<install>' || '' }}
          CACHE_CLEAR: true

シークレット名の違い: 公式 Action は WPE_SSHG_KEY_PRIVATE を使用します。独自の git-push ワークフローでは WPE_SSH_KEY を使用します。どちらも同じ秘密鍵ですが、異なるシークレット名で保存されています。


2B)git push によるデプロイ(代替方法)

WP Engine ポータルから正確なリモート URL を必ず取得してください — 環境のプレフィックスが含まれています。 https://my.wpengine.com/installs/<ENV>/git_push

URL の形式は次のとおりです:[email protected]:<environment>/<install-name>.git
ここで、<environment> は production、staging、または development です。

# Production (copy exact URL from portal)
# ⚠️  Always copy the exact URL from the WP Engine portal — formats vary by account:
#    https://my.wpengine.com/installs/<ENV>/git_push
#
# Modern accounts (most common):
git remote add wpengine-prod [email protected]:<install-name>.git
# Legacy accounts (some plans add an environment prefix):
# git remote add wpengine-prod [email protected]:production/<install-name>.git

# Staging (check portal for exact URL)
git remote add wpengine-staging [email protected]:<install-name>stg.git

# Development (check portal for exact URL)
git remote add wpengine-dev [email protected]:<install-name>dev.git

デプロイします:

git push wpengine-prod main
# WP Engine expects the branch name 'main' on its remote
git push wpengine-staging staging:main
  • WP Engine は、プッシュされたブランチを自動的にデプロイします。
  • プッシュされるのは WordPress のファイルのみです — node_modules、ビルド成果物、.git/ は含まれません。
  • プッシュ後、反映まで 1~2 分お待ちください。

リモート URL を確認してください:git remote -v に [email protected]:production/<install>.git が表示されている必要があります。 [email protected]:<install>.git(環境のプレフィックスがない)が表示される場合は、更新してください。これは古い形式で、現在は機能しない可能性があります。


3)SSH ゲートウェイ経由の WP-CLI

WP Engine の SSH ゲートウェイのホストは {install}.ssh.wpengine.net、ユーザー名は {install} です。
サーバー上の WordPress のルートディレクトリは /home/wpe-user/sites/{install} です。

方法 A — SSH コマンドを直接実行(最も簡単)
ssh <install>@<install>.ssh.wpengine.net wp <command>

WP Engine 上の WP-CLI は WordPress のパスをすでに認識しているため、通常 --path は不要です。必要な場合は次のように指定します:

ssh <install>@<install>.ssh.wpengine.net wp plugin list --path=/home/wpe-user/sites/<install>

本番環境では、安全のため常に --skip-plugins --skip-themes を使用してください:

ssh <install>@<install>.ssh.wpengine.net \
  wp cache flush --skip-plugins --skip-themes
方法 B — WP-CLI の --ssh フラグ

WP-CLI のネイティブな --ssh フラグを使うと、事前にログインせずにリモートのインストールに対して任意のコマンドを実行できます:

# Format: --ssh=user@host/path
wp --ssh=<install>@<install>.ssh.wpengine.net:/home/wpe-user/sites/<install> plugin list

# Shorthand — omit path if WP-CLI finds WP at the SSH user's home:
wp --ssh=<install>@<install>.ssh.wpengine.net cache flush
方法 C — wp-cli.yml エイリアス(繰り返し使う場合に最適)

ローカルリポジトリのルートに wp-cli.yml を作成するか、既存のファイルを更新します:

# wp-cli.yml
@production:
  ssh: <install>@<install>.ssh.wpengine.net
  path: /home/wpe-user/sites/<install>

@staging:
  ssh: <install>stg@<install>stg.ssh.wpengine.net
  path: /home/wpe-user/sites/<install>stg

その後、任意のコマンドでエイリアスを使用します:

wp @production plugin list --format=json
wp @staging cache flush
wp @production db export - > backup-$(date +%F).sql
wp @production search-replace 'old-domain.com' 'new-domain.com' --dry-run

すべてのチームメンバーと CI パイプラインで同じリモートエイリアスを共有できるよう、wp-cli.yml をリポジトリにコミットしてください。

方法 D — ファイル転送に SCP/rsync を使用

SSH ゲートウェイでは SCP と rsync(ポート 22)も利用できます。git push をすべて実行せずにファイルを取得/送信する場合に使用します:

# SCP: download a file from the server
scp -P 22 <install>@<install>.ssh.wpengine.net:sites/<install>/wp-content/uploads/large-file.zip ./

# SCP: upload a file to the server
scp -P 22 ./my-patch.php <install>@<install>.ssh.wpengine.net:sites/<install>/wp-content/plugins/my-plugin/

# rsync: sync wp-content/uploads from production to local (read-only pull)
rsync -avz --progress \
  -e "ssh -p 22" \
  <install>@<install>.ssh.wpengine.net:sites/<install>/wp-content/uploads/ \
  ./local-uploads/

# rsync: push a theme to staging (careful with --delete)
rsync -avz --dry-run \
  -e "ssh -p 22" \
  ./my-theme/ \
  <install>stg@<install>stg.ssh.wpengine.net:sites/<install>stg/wp-content/themes/my-theme/

WP Engine サーバーのパス:WordPress のルートディレクトリは、SSH ホームからの相対パスでは sites/<install>/、絶対パスでは /home/wpe-user/sites/<install> です。wp-content/ はそのルートディレクトリ内にあります。

方法 E — heredoc による複数コマンドの実行

再接続せずに、1 つの SSH セッションで複数のコマンドを実行します:

# Heredoc over SSH (most efficient — one connection for all commands)
ssh <install>@<install>.ssh.wpengine.net bash -s << 'EOF'
  set -e
  wp cache flush --skip-plugins --skip-themes
  wp rewrite flush --skip-plugins --skip-themes
  wp cron event run --due-now --skip-plugins --skip-themes
  wp core version --skip-plugins --skip-themes
EOF

# Interactive WP-CLI commands need -t (pseudo-TTY allocation)
# e.g. wp shell for a REPL session
ssh -t <install>@<install>.ssh.wpengine.net wp shell
SSH ゲートウェイの環境に関する注意事項
  • 制限付きシェル:ゲートウェイが提供するシェル環境には制限があります。WP-CLI、PHP、基本的な POSIX ユーティリティ(echo、cat、stat、du、find、grep)、rsync/SCP を使用できます。パッケージのインストール(apt、yum)、sudo、任意のサービス管理は利用できません。
  • PHP バージョン:その WP Engine インストールに設定されている PHP バージョンと一致します。確認するには php --version を実行してください。
  • WordPress のパス:~/sites/<install>/(SSH ホームからの相対パス)または /home/wpe-user/sites/<install>(絶対パス)。
  • --path フラグ:WP-CLI が「not a WordPress installation」を返す場合は、--path=/home/wpe-user/sites/<install> を明示的に追加してください。
  • 旧式のゲートウェイ:ssh.wpengine.net(サブドメインなし)は、以前使われていた汎用ゲートウェイアドレスです。現在の規則では、常に <install>.ssh.wpengine.net を使用します。

4)一般的なリモート WP-CLI 操作

必ず最初に --dry-run を実行するか、読み取り専用の確認を行ってください。すべての例で方法 C のエイリアスを使用します。

環境の確認
wp @production cli info
wp @production option get siteurl
wp @production option get home
wp @production core version
プラグインとテーマの管理
# List all plugins with status
wp @production plugin list --format=json

# Update a specific plugin
wp @production plugin update woocommerce

# Update all plugins (preview first)
wp @production plugin update --all --dry-run
wp @production plugin update --all

# Activate/deactivate
wp @production plugin activate <slug>
wp @production plugin deactivate <slug> --skip-plugins --skip-themes
キャッシュのフラッシュ(デプロイ後は常に安全)
wp @production cache flush
wp @production rewrite flush
wp @production transient delete --all
データベース操作
# Export to local file (streams via SSH)
wp @production db export - > backup-$(date +%F-%H%M).sql

# Check DB size
wp @production db size --tables --format=table

# Run a specific query
wp @production db query "SELECT option_name, option_value FROM wp_options WHERE autoload='yes' LIMIT 20"
検索と置換(移行/ドメイン変更)
# Always dry-run first
wp @production search-replace 'http://old-domain.com' 'https://new-domain.com' \
  --dry-run --report-changed-only

# Then apply (--precise handles serialized data safely)
wp @production search-replace 'http://old-domain.com' 'https://new-domain.com' \
  --precise --report-changed-only

# Flush after replace
wp @production cache flush && wp @production rewrite flush

検索と置換のパターンの詳細については、wp-wpcli-and-ops スキル → references/search-replace.md を参照してください。

ユーザー管理
# List admin users
wp @production user list --role=administrator --format=table

# Create a temporary admin (disable after)
wp @production user create tempagent [email protected] --role=administrator --user_pass=<strong-pass>
# ... do work ...
wp @production user delete tempagent --reassign=1
Cron の確認と実行
wp @production cron event list --format=table
wp @production cron event run --due-now
wp @production cron event run <hook-name>

5)リモートデータベースへのアクセス

WP Engine は、リモートデータベースにアクセスするための 3 つの方法を提供しています。IP の許可リスト設定は不要です。

方法 A — SSH ゲートウェイ経由の wp db query(最も簡単で推奨)

追加のツールや認証情報は不要です — 認証済みの SSH トンネル経由で接続します:

# Interactive query
ssh <install>@<install>.ssh.wpengine.net wp db query 'SELECT post_title FROM wp_posts LIMIT 10;'

# Export full DB (streams to local file)
ssh <install>@<install>.ssh.wpengine.net wp db export - > backup-$(date +%F).sql

# Or via wp-cli.yml alias
wp @production db export - > backup-$(date +%F).sql
wp @production db query 'SELECT option_name, option_value FROM wp_options WHERE autoload="yes" LIMIT 20;'
方法 B — SSH トンネル + GUI ツール(MySQL Workbench、Sequel Ace、TablePlus)

まず、サーバーから DB パスワードを取得します。

# Get DB password from wp-config.php
ssh <install>@<install>.ssh.wpengine.net \
  wp config get DB_PASSWORD --skip-plugins --skip-themes

# Or from the private config file
ssh <install>@<install>.ssh.wpengine.net \
  "grep WPENGINE_SESSION_DB_PASSWORD ./sites/<install>/_wpeprivate/config.json"

ローカルポートフォワーディングを使って SSH トンネルを開始します。

ssh -L 3307:127.0.0.1:3306 <install>@<install>.ssh.wpengine.net
# Keep this terminal open while using your GUI tool

GUI ツールを次の設定で接続します。

項目値
接続方法SSH 経由の TCP/IP(または、トンネルを開いた後は通常の TCP)
SSH ホスト名<install>.ssh.wpengine.net
SSH ユーザー名<install>
SSH キーファイル~/.ssh/wpengine_ed25519
MySQL ホスト127.0.0.1
MySQL ポート3306(Workbench/Sequel Ace)または 3307(トンネル経由のその他のツール)
データベースのユーザー名<install>
データベースのパスワードDB_PASSWORD/WPENGINE_SESSION_DB_PASSWORD から取得
データベース名wp_<install>

MySQL Workbench:接続タイプに Standard (TCP/IP) over SSH を使用します。トンネルは内部で処理されるため、別途 ssh -L を実行する必要はありません。 Sequel Ace:接続タイプに SSH を使用します。接続がタイムアウトする場合は、Network 設定でタイムアウトを 60s に延長してください。 TablePlus、DBeaver、DataGrip:ssh -L 3307:... トンネルを手動で開いてから、TCP モードを使用します。

サーバー上の DB 認証情報の場所
# From wp-config.php
ssh <install>@<install>.ssh.wpengine.net grep "DB_" sites/<install>/wp-config.php

# From WP Engine private config (includes session password)
ssh <install>@<install>.ssh.wpengine.net cat sites/<install>/_wpeprivate/config.json

DB 名の形式:wp_<install>(例:wp_mysite)。config.json の WPENGINE_SESSION_DB_PASSWORD として設定されているセッションパスワードはローテーションされる場合があります。継続的なアクセスには、wp-config.php の DB_PASSWORD を使用してください。


6) WP Engine 環境をローカルの Playground に取り込む

ローカル開発用の DB 全体の取得と検索・置換のワークフロー:

# 1. Export DB from WP Engine dev
wp @development db export - > /tmp/wpe-dev-$(date +%F).sql

# 2. Import into local WordPress
wp db import /tmp/wpe-dev-$(date +%F).sql

# 3. Search-replace remote domain with local
wp search-replace 'https://dev.yoursite.wpengine.com' 'http://localhost:9400' \
  --precise --report-changed-only

# 4. Flush caches
wp cache flush && wp rewrite flush

# 5. Remote media — set upload_url_path so images load from the live server
#    (no rsync of wp-content/uploads needed)
wp option update upload_url_path 'https://dev.yoursite.wpengine.com/wp-content/uploads'
# Images and attachments now load from the remote server transparently.
# To revert when done:  wp option delete upload_url_path

upload_url_path:すべてのアップロード済みメディアのベース URL を上書きする WordPress のオプション(wp_options)です。リモートサーバーのアップロードパスを設定すると、ファイルを同期しなくても、ローカルの WordPress で本番/ステージング環境の実際の画像を読み込めます。数 GB のメディアを扱う場合、rsync よりもはるかに高速です。デプロイ前に wp option delete upload_url_path でリセットしてください。

部分同期の代替手段:最近のアップロードファイルを一部ローカルにコピーして(画像サイズの再生成などに使用)古い月のファイルは本番環境から読み込むようにしたい場合は、BE Media from Production を使用してください。すべてをリダイレクトするのではなく、日付範囲で画像 URL をフィルタリングします。ローカルにアップロードファイルがまったくない場合は、upload_url_path のほうがシンプルで適しています。

URL だけでなくローカルファイルへのアクセスも必要な場合に、アップロード済みファイルも同期するには:

# rsync uploads from WP Engine (large — use --dry-run first)
rsync -avz --dry-run \
  -e "ssh -p 22" \
  [email protected]:sites/myinstall/wp-content/uploads/ \
  ./wp-content/uploads/

自動化された完全版については、wp-bootstrap スキルの scripts/pull-wpe-env.sh を参照してください。


安全ガード、デプロイ前バックアップ、スモークテスト、自動ロールバックを備えた、ブランチに応じた完全なデプロイについては:

参照先:references/github-actions-deploy.md

CI ゲートのポリシー — --no-verify の使用禁止:

  • push がデプロイブランチに到達する前に、すべての lint、型チェック、テスト、ビルドチェックに合格する必要があります。
  • --no-verify は明示的に禁止されています。フックは問題を早期に検出するためにあります。回避した場合、発生した不具合は自分で責任を負うことになります。
  • CI ゲートは、保護されたブランチへの push ごとに 2 つのジョブ(php-gate + js-gate)を並行して実行します。必須のステータスチェックです。
  • すべてのデプロイワークフローでは、最初の依存ジョブとして verify ジョブが実行されます。合格しない限り、デプロイは開始されません。

参照先:references/ci-gate.md

エージェントから実行できるスクリプト:

スクリプト目的使用するタイミング
scripts/ci-gate.shローカルで CI ゲート全体(PHP + JS/TS)を実行デプロイブランチに push する前
scripts/wpe-preflight.shデプロイ前の健全性チェック(SSH、WP、HTTP)デプロイを開始する前
scripts/wpe-check.sh設定済みのすべてのインストール環境への SSH 接続を確認マシンのセットアップ後、または SSH のデバッグ時

CI ゲートをローカルで実行します:

bash {baseDir}/scripts/ci-gate.sh

デプロイ前チェックを実行します:

INSTALL=mysite bash {baseDir}/scripts/wpe-preflight.sh production

すべての SSH 接続を確認します:

bash {baseDir}/scripts/wpe-check.sh

10) wpe-labs スキル(自然言語による管理)

API 認証情報を読み込んでから、任意の /wpe-labs:* スキルを使用します。

# Load credentials from 1Password for the session
eval $(op run --env-file ~/.config/op-ssh/.env.1pass -- env | grep ^WPE | sed 's/^/export /')
スキル機能リスク
/wpe-labs:account-usageアカウント間の帯域幅、訪問数、ストレージ🟢 読み取り専用
/wpe-labs:monthly-reportクライアント向けの月次利用レポート🟢 読み取り専用
/wpe-labs:backupsオンデマンドバックアップと進行状況の監視🟡 書き込み
/wpe-labs:cacheオブジェクト/ページ/CDN キャッシュの消去🟡 書き込み
/wpe-labs:usersユーザーの一覧表示、招待、ロールの更新、削除🟡/🔴
/wpe-labs:domainsドメイン、DNS、SSL の管理🟡/🔴
/wpe-labs:installsWordPress インストールの一覧表示、作成、コピー🟡/🔴
/wpe-labs:offloadLargeFS メディアオフロードの設定🟡 書き込み

プロンプトの例:

/wpe-labs:account-usage which accounts are closest to their bandwidth limit?
/wpe-labs:cache purge all cache for uofdev production
/wpe-labs:backups back up uofdev production before deployment
/wpe-labs:installs copy uofdev production to staging
/wpe-labs:monthly-report last month
11) wpe-labs スキルの再インストール
curl -fsSL https://raw.githubusercontent.com/wpengine/wpe-labs-platform-skills/main/install.sh | bash

検証

チェック項目コマンド
Git の SSH プッシュssh [email protected] info → hello <user> / R W <install>
SSH ゲートウェイssh <install>@<install>.ssh.wpengine.net wp --info
WP-CLI エイリアスwp @production core version
API 認証情報`op run --env-file ~/.config/op-ssh/.env.1pass -- bash -c 'curl -s -u "$WPE_USERNAME:$WPE_PASSWORD" https://api.wpengineapi.com/v1/user

リモート操作の安全対策

  • 検索・置換や破壊的な DB 操作を行う場合は、必ず最初に --dry-run を実行してください。
  • スキーマ変更や大規模な検索・置換の前には、必ず DB のバックアップをエクスポートしてください。
  • 本番環境でキャッシュのフラッシュ、無効化、プラグインの不具合で処理が中断する可能性のある操作を行う場合は、--skip-plugins --skip-themes を使用してください。
  • 本番環境で実行する前に、WP-CLI コマンドのテストにはステージング環境を優先してください。
  • ControlMaster は安全です。既存の認証済みセッションを再利用し、新たな認証情報は保存しません。
  • wpe-labs の書き込み操作(backups、cache、installs、users、domains)は、実行前に確認してください。

失敗時の対処

症状対処方法
Host key verification failed(git)ssh-keyscan git.wpengine.com >> ~/.ssh/known_hosts
Host key verification failed(ゲートウェイ)対象のインストールホスト名に対して、ssh-keyscan -H <install>.ssh.wpengine.net >> ~/.ssh/known_hosts を実行してください。または、*.ssh.wpengine.net の SSH 設定ブロックに StrictHostKeyChecking accept-new を追加してください。初回接続時に自動で受け入れられます。
Permission denied~/.ssh/wpengine_ed25519 にキーがあることを確認し、chmod 600 を実行してください。WP Engine ポータルの SSH Keys にキーが登録されていることを確認してください(git プッシュキーとは別です)。
git push rejectedポータルから正確な URL(https://my.wpengine.com/installs/<ENV>/git_push)を取得してください。URL の形式はアカウントによって異なるため、そのままコピーしてください。
SSH ゲートウェイが応答しない古い ControlMaster ソケットを終了します:ssh -O stop <install>@<install>.ssh.wpengine.net
ゲートウェイで wp: command not foundWP Engine の WP-CLI パスを使用します:php /usr/local/bin/wp を試すか、WP Engine サポートに問い合わせてください。
WP-CLI が誤ったサイトを返す--path=/home/wpe-user/sites/<install> を明示的に追加してください。
401 Unauthorized(wpe-labs)https://my.wpengine.com/api_access で API 認証情報を再生成し、1Password の項目を更新してください。
storage shows zero(wpe-labs)「refresh storage」を依頼してください(非同期で再計算されます。所要時間は約 30~60 秒です)。

参考資料

  • WP Engine SSH ゲートウェイのドキュメント:https://wpengine.com/support/ssh-gateway/
  • WP Engine git プッシュポータル:https://my.wpengine.com/installs/<ENV>/git_push
  • WP Engine SSH Keys ポータル:https://my.wpengine.com/ssh_keys
  • WP Engine API アクセス:https://my.wpengine.com/api_access
  • WP-CLI --ssh のドキュメント:https://make.wordpress.org/cli/handbook/guides/running-commands-remotely/
  • wpe-labs スキルのソース:https://github.com/wpengine/wpe-labs-platform-skills
  • SSH セットアップログ(最初のマシン):gist 602d6a16ddfea438c0611a8e5cc31d5e

コメント