2017年6月30日金曜日

【備忘録】WP-CLI エイリアスを利用したリモートサーバーの WordPress 管理 #wckyoto2017

WordCamp Kyoto 2017 のセッション「WP-CLI入門」で miya0001 氏が、「WP-CLIのエイリアスを使ったら管理楽だよ〜」っておっしゃっていたのをついに実現。そのときのスライドは下記の通り。



発表動画はこちら(wordpress.tv) >>> 

これ知っていたら、バックアップ > プラグイン更新 > コア更新 という一連の流れについてわざわざ独自スクリプト作る必要なかったじゃんって感じですね。

以下前提として、WP-CLI の wpコマンドの最新版が入ってることを前提とします。

準備(パスワード確認をスルーして ssh接続)




ssh 経由でリモートの wp を実行することになるので、サイトが沢山あると一々 ssh ログインしていられません。ので、パスワード確認をスルーしないといけませんね!
MacOS Sierra では、

  • $HOME/.ssh/config 

ファイル(なければ作成)に
AddKeysToAgent yes
UseKeychain yes
を追加します。

これで ssh で一度でもログインできると(一度目はパスワード入力必要)、次回からパスワード不要になります。ノートPCのセキュリティが弱くて紛失するなどしてログイン状態で使われるとサーバーに容易にログインできちゃいますので、そのあたりは自己責任で。
この設定を消すとsshログインするたびにパスワード聞いてきます。

$HOME/.wp-cli/config.yml に設定


設定方法は、miya0001 氏がかかれたブログ

に詳しく説明されているので、それに沿って設定すればOK。

入れ子にも出来ますね。


@server1-1: 
  ssh: user@server1.example.com:22/hogege/wordpress1
@server1-2: 
  ssh: user@server1.example.com:22/hogege/wordpress2
@server1-3: 
  ssh: user@server1.example.com:22/hogege/wordpress3

@server2-1: 
  ssh: user@server2.example.com:22/hogege/wordpress1

@server3-1: 
  ssh: user@server3.example.com:22/hogege/wordpress1
@server3-2: 
  ssh: user@server3.example.com:22/hogege/wordpress2

@server1:
 - @server1-1
 - @server1-2
 - @server1-3

@server2:
 - @server2-1

@server3:
 - @server3-1
 - @server3-2

@alls
 - @server1
 - @server2
 - @server3

とか。

wp @all core version


これ結構つかうと思います。
WordPress の現在利用中のバージョンを一括で表示できますしね。 設定したすべての WordPressのバージョン確認が一括でできます。
wp @all core version で全部のサーバーの設定が手元の端末からサーバーにログインすることなくできちゃうってことです。

エイリアスには @all があり、
wp @all core version なので全チェックをしてくれるみたいですが、入れ子も再度チェックされるようなので、@alls を作成してみたのでした。

wp @all plugin  list


管理している WordPress のプラグインリストを確認するもので、これも多様すると思います。とりあえず、まずは一度走らせてみて下さい。プラグインリストが白紙なら、 wp-content/plugins のフォルダに対する READ権限がないということになります。たとえば、WordPress を管理するユーザーでないユーザー(WordPress側からみたら、otherのグループ権限に属する)が wpコマンドを叩いたらそうなります。

他にも何かエラーがでるかもしれません。ここでエラーがでるということは、正しく wp コマンドが使えないということになるので、原因を探しましょう。

WordPress のアップデート


WordPressのインストールされているサーバー上でエイリアスを利用するには、 
@server4: 
  path: /hogege/wordpress1

だけでよく、いずれにしてもスライドにあるように

wp @all  plugin update --all
wp @all  core update
wp @all  theme update --all
wp @all  core language update

だけで更新自体はサーバーにログインせずに一気にできちゃいますね!
あとはバックアップだけです。
WordPress に BackWPUPプラグインが導入されていて、設定が1つでもされていれば

wp backwpup start --jobid=1

のjobid が WordPress ごとに異なる場合があるってことですね。
そこだけはスクリプトが必要かなと思います。

jobid は、BackWPUPプラグインの各ジョブ編集画面にいくと、URLの末尾あたりに &jobid=1& .. のように分かります。場合によってはジョブ番号の同じものを1つのグループに設定(config.yml)してあげると分かりやすいかもしれません。

全部 jobidが1なら、

wp @all backwpup start --jobid=1
wp @all  plugin update --all
wp @all  core update
wp @all  theme update --all
wp @all  core language update

でBackWPUPでプラグイン本体とデータベースをバックアップした上で、プラグイン更新、コア更新、テーマ更新、言語更新を一括でやっちゃえそうですね!

いずれにせよ自前端末でメンテナンスが必要な WordPress のバージョンやプラグインチェック、バックアップぐらいができると格段にメンテナンスしやすくなります。

WordPress の立ち上げまで簡単にできるよ


※ wb db create が成功するためには、 --dbuserで指定した DBユーザーが、 --dbnameで指定した DB名を作成できることが条件です。そのあたりは手動でしたければ、 wp db create は飛ばして、あらかじめ phpmyadmin 等でデータベースを作成しておいてください。

wp core download --locale=ja
wp core config --dbname=DB名  --dbuser=DBユーザー名  --dbpass=DBパスワード
wp db create
wp core install --url=サイトのURL   --title=サイトのタイトル  --admin_user=初期管理者ユーザー --admin_password="初期管理者ユーザーパスワード" --admin_email=初期管理者のメールアドレス 

までが WordPress のインストールから設定(ログインできるまで)

wp plugin delete hello
wp plugin update --all

wp plugin install backwpup

wp plugin activate wp-multibyte-patch
wp plugin activate backwpup

wp core language update

あたりでhelloプラグインを削除し、一旦プラグイン更新し、backwpupプラグインをインストールし、wp-multibyte-patch(日本語版 WordPressには初期導入されてるはず)と、backwpup プラグインを有効化する。そしてそれらの言語アップデートがあるかもしれないので、アップデートする。

とまでざっくりですが出来ちゃいますよね。
ユーザー作成も

wp user create "Hogehoge1"  Email   --role=administrator
wp user create "Hogehoge2"  Email   --role=editor

とかでできちゃうとか。

このように WP-CLI は WordPress のメンテナンスをとても容易にしてくれる 管理者によって無くてはならないツールですね!

2017年6月30日 @kimipooh

0 件のコメント:

コメントを投稿