アリババクラウドECSへのWP-CLIのインストールと正しい権限とユーザーロールの準備

この3部構成のチュートリアルでは、WP-CLIを使用してWordPressの高度な管理を設定する方法を説明します。パート1では、**アリババクラウドECS**上でのWP-CLIの設定に焦点を当てています。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/advanced-wordpress-management-using-wp-cli-on-alibaba-cloud-ecs---part-1_590770)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

[Alibaba Cloud Tech Share](https://www.alibabacloud.com/ja/campaign/techshare)執筆者のJeff Cleverley著。[Tech Share](https://www.alibabacloud.com/ja/campaign/techshare)は、技術的な知識やベストプラクティスをクラウドコミュニティ内で共有することを奨励するAlibaba Cloudのインセンティブプログラムです。

WordPressは、ウェブ上でダイナミックなコンテンツを持つウェブサイトを開発するために使用される最も人気のあるコンテンツ管理システムです。WordPressの人気の多くは、グラフィカル・ユーザー・インターフェース（GUI）による使いやすさに起因しています。WordPressは常に、初心者が簡単に始められるようなパッケージで、充実した機能を提供してきました。

ブログプラットフォームとしての初期の頃から、WordPress はより広く利用されるリソースへと進化し、大規模な E コマースサイトや企業サイト、ソーシャルネットワークなどで利用されることが多くなりました。より本格的な開発者が使用するプラットフォームへの進化の一部として、WordPress の公式コマンドラインインターフェイスである WP-CLI が導入されました。

コマンドラインインターフェイス（CLI）は、自分のマシン上でタスクを実行できるスピードと効率の良さから、開発者の間で長い間人気を博してきました。様々なツールを使って、開発者は生産性を高め、開発プロセスをスピードアップさせてきました。WP-CLI は、WordPress 開発者とサイトメンテナにも同じメリットと効率を提供します。

[WP-CLI ](https://wp-cli.org/?spm=a2c65.11461447.0.0.46ae7c1cMaZicD)は、WordPress Foundation の公式サポートプロジェクトであり、独自のサイトや[開発者ハンドブック](https://make.wordpress.org/cli/handbook/?spm=a2c65.11461447.0.0.46ae7c1cyR2lp0)を持っています。すべてのコマンドとツールの完全なリストは[ここ](https://developer.wordpress.org/cli/commands/?spm=a2c65.11461447.0.0.46ae7c1ckx9DWu)で見つけることができます。

今回は、WP-CLI が提供する高度な WordPress 管理機能を深く掘り下げていく 3 部構成のシリーズの第 1 回目です。このチュートリアルでは、あなたのインスタンスに WP-CLI をインストールし、それが正しく動作するように正しいパーミッションとユーザーロールを準備し、その後、WordPress コンテンツの管理にどのように使用できるかを見ていきます。次のチュートリアルでは、テーマやプラグイン、メディア、ユーザー、データベースの管理など、より高度な機能について掘り下げていきます。最後に、インスタンス全体で数百のサイトを管理したり、カスタムプラグインやテーマの開発をスピードアップしたり、さらには独自のコマンドを作成してカスタム機能を提供するために拡張したりするために、どのように活用できるかをご紹介します。

WP-CLI を効果的に使用することで、広く使用されているいくつかのプラグインを削除することで、WordPress サイトの肥大化を減らすことができることがわかります。

このチュートリアルでは、すでに Alibaba Cloud [ECS インスタンス](https://www.alibabacloud.com/ja/product/ecs)がプロビジョニングされており、その上で 1 つ（または複数）の WordPress サイトが稼働していることを前提としています。

このシリーズでは、私は自分のスーパーユーザ 'new_user' を使い、sudo コマンドを使って 'root' コマンドを発行します。コマンドを実行する際には、私のユーザーを自分のユーザーに置き換えることを忘れないでください。

私はまた、コード例で私のテストドメイン'an-example-domain.com'と'another-example-domain.com'を使用していますが、コマンドを発行するときに私のサイトドメインをあなた自身のものに置き換えることを覚えておいてください。

###1. アリババインスタンスにWP-CLIをインストール
SSHでサーバにログインします。

`# ssh new_user@an-example-domain.com`

wp-cli.phar」PHPアーカイブファイルをダウンロードします。

`$curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar`

では、ファイルが動作しているかどうかを確認してみましょう。

`$ php wp-cli.phar —info`

ターミナルには、PHP のバージョン、設定ファイル、WP-CLI のインストールに関する情報が表示されているはずです。

php wp-cli.phar' の代わりに 'wp' と入力するだけで WP-CLI を使用できるようにしたいのですが、そのためには PHP アーカイブファイルを実行可能にする必要があります。また、どこからでも 'wp' コマンドにアクセスできるようにしたいので、それを PATH に移動させる必要があります。

この両方を行うには、以下のコマンドを実行します。

```
$ chmod +x wp-cli.phar
$ sudo mv wp-cli.phar /usr/local/bin/wp
```

あなたの端末は以下のようになっているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/ea003104-0635-1119-ee3f-b8eafa5ee4a7.png)



【WP-CLI PHPのアーカイブファイルをダウンロードしてテストする】

ここで、同じ WP-CLI の '--info' コマンドを実行して動作していることを確認することができますが、今回は 'wp' のみを使用しています。

`$ wp —info`

wp-cliの更新情報を確認したい場合は、以下のようにします。

`$ wp cli update`

あなたの端末は以下のようになっているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/5384ec57-6dd7-3152-9015-7b17bd466438.png)


【WPコマンドを使用するためのアーカイブ実行ファイルを作成する】

####すべての WP-CLI コマンド

利用可能なすべての WP-CLI コマンドとグローバルパラメーターの完全なリストを取得するには、次のように入力します。

`$ wp`

或いは

`$ wp help`

###2. WordPressのインストールとユーザー権限の準備
WP-CLIコマンドをユーザーとして発行することになります。このとき、ディレクトリとユーザーグループを用意しておかないと、Webサイトのディレクトリに書き込む必要があるコマンドで問題が発生する可能性があります。

ディレクトリを '/var/www' ディレクトリに変更してください、または WordPress のインストールが含まれているディレクトリ、およびディレクトリとその所有権とパーミッションをリストアップします。

```
$ cd /var/www
$ ls -l
```

あなたのウェブサイトのルートディレクトリが「www-data」ユーザーとグループに属していることがわかるはずです。これはウェブサーバーが実行するユーザーです。

ディレクトリのパーミッションは 'drwxr-xr-x' または似たようなものかもしれませんが、これは0755で、所有者 (www-data) にのみ書き込み権限を与えます。

www-data'グループのメンバーも書き込み権限を持つように、これを'drwxrwxrxr-x' / 775に変更したいと思います。

これを実行してから、以下のコマンドで再びディレクトリをリストアウトします。

```
$ sudo chmod -R 775 /var/www/an-example-domain.com
$ ls -l
```

これで、ディレクトリのパーミッションが変更されていることがわかるはずです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/740bea19-4ed6-2244-bd1a-b75efc4ec5bc.png)


【WordPressのディレクトリのパーミッションを775に変更】

あとは、ユーザーが 'www-data' グループのメンバーであることを確認して、WP-CLI コマンドを使ってこれらのディレクトリに書き込むことができるようにするだけです。

`$ sudo usermod -a -G www-data new_user`

ユーザーがどのグループに所属しているかは、'groups' コマンドで確認できます。

`$ groups`

あなたの端末はこのようになっているはずです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/7184dc08-d5bd-90eb-994d-ec3244b938b0.png)

【ユーザーがwww-dataグループに入っていることを確認してください】

###3. WordPressのコアコマンド
####WordPressコアのインストール

WP-CLI は、WordPress コアのインストールと更新を管理するための強力なツールのセットを提供しています。

これを行う前に、バーチャルホストとサイトのルートフォルダと同様に、WordPress のサイトドメインを設定し、WordPress が使用するためのデータベースを作成して空にしておく必要があります。

私はここの別のチュートリアルですべてを詳細に説明しています。

これらは、'--version' と '--locale' パラメータを使用して、異なるバージョンとローカライゼーションの WordPress をダウンロードする機能を含んでいます。

例えば、以下のようになります。

`$ wp core download --version=4.8.4 --local=en_GB`

WordPress v.4.4.8.4 をダウンロードして、正しい（イギリスの）英語版をダウンロードしてください。

また、「core config」を使って「wp-config.php」ファイルを作成するなどの方法もあります。

`$ wp core config --dbname=tutorial --dbuser=new_user --dbpass=new_users_password --dbhost=localhost --dbprefix=tut_`

そして、「core install」コマンドを使ってWordPressをインストールします。

`$ wp core install --url=an-example-domain.com --title="WP-CLI Tutorials" --admin_user=new_user --admin_password=new_user_admin_password`

これであなたのWordPressサイトは、通常のインストールプロセスを経ることなく、立ち上がることができるようになります。WP-CLI を使用してインストールすると、WordPress の「有名な」（彼ら自身がそう言っている場合）5 分間のインストール手順よりもはるかに速いことがわかります。

####WordPress コアの更新

WordPressのインストールを最新の状態に保つことは、セキュリティの観点から非常に重要です。

WordPressのバージョンを確認するには、WordPressのファイルやディレクトリが入っているディレクトリにディレクトリを変更して、以下のコマンドを実行します。

`$ wp core version`

ご覧のように、私の'an-example-domain.com'のWordPressサイトは古く、WordPress 4.8.4のみを実行しており、最新の4.9.1バージョンではありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/dbc63431-566c-05df-4f14-aeef36a71666.png)

【WP Coreのバージョンを確認 - 4.8.4は最新版ではありません】

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/bb2e381a-b163-8c2d-3a26-ea6c6862f30f.png)

【WordPressにはアップデートが必要】です。

WordPress Core を更新する前に、必ずデータベースのバックアップを取るように警告されています。

多くの人がこの重要なステップを実行しないのは、ワークフローから外れてしまうからです。

WP-CLI を使用すると、信じられないほど簡単で高速なので、今は言い訳はできません。

`$ wp db export backup.sql`

サードパーティのGUIベースのツールを使ってデータベースをエクスポートしたことがある人は、このコマンドの実行と完了の速さに驚くでしょう。

すぐに「Success」のメッセージが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/ff1ca817-553b-6a25-8293-2bb05e159821.png)

【Coreアップデート前のデータベースのバックアップは、これまでになく簡単になりました】

あとはコアのアップデートをして、再度バージョンを確認します。

```
$ wp core update
$ wp core version
```

あなたの端末では、表示されているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/0673ccac-1dc4-6d12-acce-0257ab0a3c50.png)

【WPCLIを使ってWordPressコアの更新を素早く行う】

データベースの更新も簡単にできます。

`$ wp core update db`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/c8d17ba8-c5c6-8ed4-f41b-a1395cf04192.png)

【WordPressデータベースの更新について】


Coreのアップデートに続いて問題が発生しても安心してください...。

また、WordPress を以前のバージョンに戻すのは信じられないほど簡単です。パラメータに「--version」と「--force」を追加するだけです。

`$ wp core update -version=4.9 —force`

###4. WordPressのコンテンツを管理する
投稿やページのリスト化、作成、削除、編集

自分の投稿やページ、その内容を端末から直接管理することができます。おそらく最適なコンテンツ作成方法ではないかもしれませんが、それでも信じられないほど便利です。

これらのコマンドにはパラメータ '--post_type' があり、デフォルトでは '--post_type=post' となっていますが、すべてのコマンドは '--post_type=page' を使用してページを操作することができます。簡潔にするために、'post'コマンドを'--post_type=post'として説明します。

使えるポストの種類をすべてリストアップするには

`$ wp post list`

新規インストールしたので、IDが1の「Hello World」の投稿しかないので、それを削除してみます。

`$ wp post delete 1 `

そして、再び書き込みをリストアップすると、それがなくなっていることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/f0711fa2-8c90-c5cb-70ed-727ca68f6350.png)

【投稿を一覧にしてから「ハローワールド！」の投稿を削除してください】

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/8c827f34-6c2b-cf4e-9dd0-1f829eb1f9ed.png)

【投稿のないチュートリアルサイトのご案内】

タイトル、内容、ステータスにパラメータを指定して、コマンドで投稿とその内容を作成することができます。

`$ wp post create --post_title='Your title' --post_content=“Your most interesting post content” --post_status=‘publish;`

再度、投稿をリストアップします。

`$ wp post list`

これで新しい投稿が一覧で見れるようになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/d2f63a72-1ba4-d24b-72bb-6e697895c11f.png)

【ターミナルに表示されているWP-CLIが作成した記事】の場合

WordPress のテーマやプラグインを開発するときに、テストのためにたくさんの投稿を作成しなければならないことがよくあります。ブラウザやGUIを使った処理は時間がかかりますが、WP-CLIには「post generate」コマンドがあります。

`$ wp post generate --count=4`

そして、一瞬にして4つの新しい投稿があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/0f5c5de1-6655-30d7-2078-579b6e51f275.png)

【WP-CLIを使ってダミーの投稿を生成する】 - 端末で表示する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/79e85178-0b30-17be-d5bd-c8e294c2dde0.png)

【WP-CLIを使ってダミーの投稿を生成する】 - ブラウザで見る

バッチを削除するのは簡単で、IDをリストアップするだけでバッチを削除することができます。

`$ wp post delete 8 9 10 11`

簡単に来て、簡単に行く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/0a4c2b3c-5c38-fea5-bc34-8fec14d9bfcf.png)

【WP-CLIによる投稿の一括削除について】

システムエディタを使ってWP-CLIで投稿を編集することもできます。先ほど作成した投稿を編集して、新しい内容を追加してみましょう。

`$ wp post edit 7`


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/a9909fb4-f8c4-b6e1-e21b-0eff0a600e2c.png)

【WP-CLIとシステムエディタを使った投稿の編集について】

あなたの端末はこのようになっているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/b2a043ea-1e00-eda6-ddfd-a9031ba2da7e.png)

【投稿が正常に編集されました】

編集した投稿をブラウザで見る：

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/69e89963-5e0f-968b-b081-5a8bcb565f9b.png)

【a WP-CLI作成・編集した投稿について】

**Post Metaの管理**

WP-CLIの「post meta」コマンドを使って、カスタムフィールドを含むメタデータを「追加」することもできます。

ここでは、「post_type」というカスタムメタフィールドを新たに追加し、「tutorial」という値を与えてみましょう。

`$ wp post meta add 7 post_type tutorial`

そして、'post_type'の値を'get'します。

`$ wp post meta get 7 post_type`


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/013eea02-27e5-9f32-5b11-a167f5b6534b.png)


【WP-CLIでのポストメタの設定と取得】について

また、用語を追加したり、「セット」したりすることもできます。

`$ wp post term set 7 category wpcli`

そして、それらを「削除」します。

`$ wp post term remove 7 category wpcli`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/12401427-72f7-785d-efbc-a6ed6bd0b46f.png)

【WP-CLIで用語を作成して削除する】

**Revisionsの管理**

WordPress は、投稿のリビジョンをすべて投稿として Posts テーブルに保存します。これは膨大な量のデータベースの肥大化につながる可能性があります、これらのリビジョンを管理するのに役立つ多くの便利なプラグインがあります。

しかし、WP-CLI を使用すると、それはさらに簡単です。WP-CLI を使えばもっと早く簡単にできるのに、なぜあなたの WordPress サイトに別のプラグインを追加するのでしょうか？

WP-CLI の美しさの一つは、その拡張性にあり、他の開発者は常にその機能を拡張するためにコマンドクックブックやプラグインを開発しています。これらのプラグインの一つが[ WP Revisions CLI ](https://github.com/trepmal/wp-revisions-cli?spm=a2c65.11461447.0.0.46ae7c1cbGDI3e)プラグインです。このシリーズの最後には、このようなプラグインで独自のカスタムコマンドを作成することもあります。

プラグインをwp-cliパッケージとしてインストールします。

`$ wp package install trepmal/wp-revisions-cli`

それはインストールされ、必要な依存関係をインストールするためにcomposterを使用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/3649cab0-566c-1c09-af59-8d4d99e74694.png)

【WP Revisions CLIをWP-CLIのパッケージとしてインストールする】

これで、WordPressの投稿リビジョンをすべてリストアップすることができるようになりました。

`$ wp revisions list`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/28fb140c-fd37-c835-2a9d-65e97d7c1814.png)

【WP Revisions CLIを使用してWordPressのリビジョンを一覧表示する】

私の場合は7つのリビジョンがあります。これらは必要ないと思うので、クリーンコマンドで削除しようと思います。私は '-1' を使ってすべてのリビジョンを削除し、'--post_type=post' ポストリビジョンのみを指定しています。

```
$ wp revisions clean -1 --post_type=post
$ wp revisions list
```

今、私たちは、私のデータベースを肥大化させるリビジョンを持っていないことがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/75138569-67a2-b5cd-c692-695db045e058.png)

【すべての投稿リビジョンをクリーンアップ】

を使って「wp_post_revisionss」オプションの値を確認することもできますね。

`$ wp revisions status`


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/ba735e9d-b0ba-8f09-f690-bbd7e514aa2e.png)

【WP_POST_REVISIONS】の値を確認してください。

WP Revisions CLI には 'wp revisions dump' コマンドもあり、リビジョンを削除する前に各投稿を照会しないので、クリーンコマンドよりも高速です。[コマンドとそのパラメータの完全なリストはここで見ることができます。](https://github.com/trepmal/wp-revisions-cli?spm=a2c65.11461447.0.0.46ae7c1cNTWzI3)

次回は、WordPress のインストール、ユーザー、プラグイン、データベースを管理するための便利なコマンドや、多くのサイトを一度にインスタンス上で管理するためのより高度な設定について掘り下げていきます。

シリーズ最終回では、これらのコマンドを再設定して、ローカルマシン上のいくつかのコマンドで、いくつものアリババクラウド[ECSインスタンス](https://www.alibabacloud.com/ja/product/ecs)にまたがる何百ものWordPressサイトを管理できるようにしていきます。また、WordPress の開発とデプロイのワークフローで WP-CLI を使用して開発をスピードアップする方法を学び、最後にカスタムコマンドを使って拡張します。

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*