1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPressのメンテナンスといえば、管理画面にログインしてプラグインの更新ボタンをポチポチ押す作業。
1サイトログインして、本体・プラグイン・テーマを確認して、更新して、表示確認して、次のサイトへ。
とにかく時間がかかる。

でも、SSHとWP-CLIという2つの技術知ってからWordPressメンテナンスが劇的に変わりました。

そもそもSSHとWP-CLIって何?

SSH(エスエスエイチ)
レンタルサーバーに対して、自分のPCから直接コマンドを送り込める窓口です。
FTPでファイルをアップロードしたことがある人ならイメージしやすいかもしれません。FTPがファイル転送専用だとすると、SSHは「ファイル転送もできるし、サーバー上でコマンドも実行できる」、より万能な接続方法という感じです。

WP-CLI(ダブリューピーシーエルアイ)
WordPressをコマンドで操作するための仕組みです。
普段ブラウザで管理画面に入ってボタンをクリックしている操作のほぼ全部を、コマンド1行で実行できます。

この2つが揃うとどうなるか。
自分のPCから、サーバー上のWordPressに、管理画面を開かずに命令できるようになるんです。

管理画面が「お客様用の受付窓口」だとすれば、SSH+WP-CLIは「社員用の通用口」みたいなもの。
ボタンを探さなくていい。クリック待ちもない。命令を投げれば、サーバーが直接WordPressに対して処理を実行してくれます。

SSH+WP-CLIで世界がどう変わったか

具体的にどう変わるのか。

① DBバックアップが1行

更新前のDBバックアップって、管理画面からやろうとするとプラグインを入れたり何かと手間がかかります。

WP-CLIの場合

wp db export backup.sql

これだけ。サーバー上に丸ごとSQLファイルが出力されます。

② プラグイン一覧の取得

「このサイト、何のプラグインが入ってたっけ?」を確認するために管理画面に入る必要すらない。

wp plugin list --format=json

これでプラグイン名・バージョン・有効/無効状態がJSONで全部返ってきます。
50サイト分のプラグイン棚卸しを、ループ処理で一気に取得できる。

③ プラグインを1件ずつ更新

wp plugin update plugin-name

特定のプラグインだけを狙い撃ちで更新できます。
管理画面だと「全部更新」か「個別にチェックボックス」のどちらかですが、コマンドなら 1件更新 → 表示確認 → 次の1件 というステップ実行が組めます。

④ ピンポイントロールバック

これがすごい。

wp plugin install plugin-name --version=1.2.3 --force

--version で旧バージョンを指定して --force で上書きインストール。これでそのプラグインだけを以前のバージョンに戻せます。

「更新したらサイトが壊れた → 該当プラグインだけ前のバージョンに戻す」が自動でできる。
管理画面でこれをやろうとすると、FTPで該当プラグインフォルダをまるごと差し替える必要がありますが、WP-CLIなら1行で完結します。

⑤ ループで全部自動化

ここまでの操作を、シェルスクリプトやPythonからループで回せば、

for サイト in 50サイト:
    SSHで接続
    DBバックアップ
    コア更新
    プラグインを1件ずつ更新(毎回HTTPチェック)
    壊れたらロールバック
    結果をメール送信

これがボタン1つで全自動になります。
2〜3日かかっていた作業が、自分は何もしなくてもバックグラウンドで進む状態になりました😊

やってみてわかった注意点

ただ、SSH+WP-CLIを実際に運用に組み込んでみると、いくつかつまずいた点もあります。

注意① すべてのレンタルサーバーがSSH対応ではない

主要な国内レンタルサーバーの中で、SSH対応状況を整理するとこんな感じ。

  • Xserver : 対応・WP-CLIもデフォルトで wp コマンドが使える
  • さくらインターネット : 対応・標準WP-CLIあり
  • Heteml : 対応・ただし wp コマンドのフルパス指定が必要
  • ConoHa WING : 対応(プランによる)

逆に格安系のサーバーや一部の共用サーバーではSSH自体が提供されていません。
「クライアントが契約しているサーバーがSSH対応かどうか」を最初に確認するのが運用設計の第一歩です。

注意② wp コマンドのパスがサーバーごとに違う

Xserverならそのまま wp plugin list で動きますが、Hetemlだとこう。

/usr/local/bin/wp plugin list

サーバーごとにフルパスが違うので、自動化するときは「サーバー別のWP-CLIパス設定」を持っておく必要があります。

注意③ PHPバージョンが古いとWP-CLIが動かない

WP-CLIは新しいバージョンほど最近のPHPを要求してきます。
古いPHPで動いているサイトでは、コマンドを叩いた瞬間にエラーで落ちる。

注意④ SSH非対応のクライアントサイトはどうする?

これは現実問題として残ります。
クライアントが契約しているレンタルサーバーがSSH非対応だったり、ログイン情報を共有してもらえなかったり。

その場合は、ブラウザ自動操作(Playwright)でフォールバックする選択肢を用意しておくと運用に組み込みやすいです。
ただしブラウザ自動操作だとピンポイントロールバックや高度なバックアップは難しいので、やれることに制限はあります。


SSH+WP-CLIを知る前と後で、WordPressメンテナンスに対する認識は完全に変わりました。

「ボタンを1つずつポチポチ押すこと」しか知らなかった頃は、月初の作業が憂鬱でしたが、今はストレスなくメンテナンスができます。

このSSH+WP-CLIによる自動化処理はWP Maintenance Managerにも組み込んであります。
自分でコマンドを覚えなくても、SSH+WP-CLIの恩恵だけを受け取れるように設計しています。

WordPress自動メンテナンスアプリ
WP Maintenance Manager

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?