KDDI Web Communications

wp-cli を利用した WordPress の管理
株式会社イー・ネットワークス 前川 昌幸

第 2 回 wp-cli を利用する

wp-cli を利用した WordPress のインストール

第 2 回では、実際に wp-cli を利用して、WordPress を操作してみましょう。

wp-cli での WordPress のインストールは、以下の手順になります。

  1. データベースの設定
  2. インストールするディレクトリへ移動
  3. WordPress のダウンロード
  4. wp-config ファイルの生成
  5. WordPress のインストール
  6. 必要なプラグインのインストール

1. データベースの設定

まず、コントロールパネルにアクセスし、MySQL でデータベースを作成します。
データベース設定のオンラインヘルプ

文字コードは UTF-8 で作成します。

2. インストールするディレクトリへ移動

その後、WordPress をインストールする予定のディレクトリへ移動します。
今回は html ディレクトリにインストールします。

% cd ~/html

3. WordPress のダウンロード

ここから wp-cli を利用します。まずは WordPress をダウンロードしましょう。
ダウンロードのコマンドは wp core download ですが、このコマンドだと英語版がダウンロードされるので、--locale=ja のコマンドを追記し、日本語版を指定します。

% wp core download --locale=ja

WordPress のダウンロード

4. wp-config ファイルの生成

ダウンロードが完了したら、データベースと接続するために wp-config.php ファイルを生成します。
「1.」で作成したデータベースの情報をここで指定します。

% wp core config --dbhost=127.0.0.1 --dbname=[データーベース名] --dbuser=[ユーザーID] --dbpass=[パスワード]

問題なく生成されると、下記のようなメッセージが表示されます。

Success: Generated wp-config.php file.

5. WordPress のインストール

次に、WordPress をインストールします。
その際にさまざまな情報を入れる必要があるので注意してください。

% wp core install --url=[公開するURL] --title=[サイト名] --admin_user=[管理者ユーザーID] --admin_password=[管理者パスワード] --admin_email=[メールアドレス]

を入力して実行すると WordPress のインストールは完了です。

  • ※WordPress をインストールしたディレクトリに index.html が存在する場合、ウェブでアクセスするとそちらが優先されるので、index.html は移動するか名称を変更してください。

インストールされた WordPress

6. 必要なプラグインのインストール

引き続き、プラグインをインストールします。

その前に、有効化されていない WP Multibyte Patch を有効化します。

有効化されていない状態の WP Multibyte Patch

% wp plugin activate wp-multibyte-patch

有効化された状態の WP Multibyte Patch

次は Contact Form 7Advanced Custom Fields のインストールをおこないます。

% wp plugin install contact-form-7 --activate
% wp plugin install advanced-custom-fields --activate

対象となるプラグインの名称ですが、Plugin Directory で利用されている slug がキーになっています。他にも、zip ファイルのローカルでのパスや URL などでも指定できるので、独自プラグインの場合も対応が可能です。

Contact Form 7 と Advanced Custom Fields がインストール済み

上記のスクリーンショットを見ると Akismet に新しいバージョンが出ているようです。プラグインのアップデートコマンドで新しいバージョンにアップデートします。

% wp plugin update –all

アップデートがおこなわれました

ここではプラグインのアップデートをおこないましたが、テーマでも同様の操作が可能です。

セットアップスクリプトを作成する

ここまで解説しましたが、WordPress をインストールするたびに、これらの操作をおこなうのは面倒です。
なので、wp-cli の取得から WordPress のインストールに関しては、スクリプトを作成してそれを実行することで完結できるようにします。

setup_wp.sh

#!/usr/local/bin/bash

### path

PATH="/usr/home/**********/html"

###DataBase

DBNAME="**********"
DBUSER="**********"
DBPASS="**********"
DBHOST="127.0.0.1"

###WordPress

URL="http://example.jp"
TITLE="サイトタイトル"
ADMIN_USER="**********"
ADMIN_PASSWORD="**********"
ADMIN_EMAIL="**********@**********"

###Plugin

INSTALL_PLUGINS=("contact-form-7" "advanced-custom-fields")
ACTIVATE_PLUGINS=("wp-multibyte-patch")

#############

/usr/local/bin/curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

/usr/local/bin/php-5.5.27 ~/bin/wp-cli.phar core download --locale=ja --path=${PATH}

/usr/local/bin/php-5.5.27 ~/bin/wp-cli.phar core config --dbhost=${DBHOST}--dbname=${DBNAME} --dbuser=${DBUSER} --dbpass=${DBPASS} --skip-check --path=${PATH}

/usr/local/bin/php-5.5.27 ~/bin/wp-cli.phar core install--url=${URL} --title=${TITLE} --admin_user=${ADMIN_USER} --admin_password=${ADMIN_PASSWORD} --admin_email=${ADMIN_EMAIL}--path=${PATH}

for plugin in ${INSTALL_PLUGINS[@]}
do
/usr/local/bin/php-5.5.27~/bin/wp-cli.phar plugin install $plugin --activate --path=${PATH}
done

for plugin in ${ACTIVATE_PLUGINS[@]}
do
/usr/local/bin/php-5.5.27 ~/bin/wp-cli.phar plugin activate $plugin --path=${PATH}
done

/usr/local/bin/php-5.5.27 ~/bin/wp-cli.phar plugin update --all --path=${PATH}

それぞれの変数を入れて、このスクリプトを作成した ~/bin/ ディレクトリに配置し、

% chmod 755 setup_wp.sh
% ./setup_wp.sh

を実行すれば wp-cli のダウンロードと、「PATH」で設定したディレクトリに対して WordPress をインストールすることができます。

setup_wp.sh を実行した結果

これでスクリプト 1 本で WordPress のインストールから、プラグインの設置までおこなえるようになりました。
いかがでしょうか?

SmartRelease での wp-cli の利用

さて、このようにテストサーバー上で、wp-cli を用いたセットアップを解説しましたが、公開サイトへ同期する時にも wp-cli が利用できるポイントがあります。
WordPress でテスト/公開の領域が分かれている時に必ずと言ってよいほど問題になるドメインの置換を機能として提供しているのです。

  • テストサイトドメイン:http://ad172zssl9.smartrelease.jp/
  • テストサイトデーターベース:ad172zssl9_wp01
  • 公開サイトドメイン:http://ad172002.secure.ne.jp/
  • 公開サイトデーターベース:ad172zssl9_wppub

公開サーバーへの WordPress の反映作業については 以前に阿部さんが書かれている 手順で対応できますが、データーベースの内容をテストから本番に引き継いだ際の、ドメイン書き換えに関する機能が wp-cli にはあるので紹介しましょう。

まずは、上記の記事に書いている、データーベースの移行とテストサーバーから公開サーバーへのリリース作業をおこないます。
その際にデータベースの作業についてはリストア(「公開サイトで使用するデータベースの準備」の手順 5.)までで、それ以降の作業はおこなわないでください。

SmartRelease でのリリース完了後、wp-config.php で公開サーバーが参照しているデーターベース名の編集および除外リストへの追加をおこないます。

参照する DB の書き換え後、除外リストへ

その段階で SSH ログインし、WordPress の設置しているディレクトリで、

% wp search-replace 'http://ad172zssl9.smartrelease.jp' 'http://ad172002.secure.ne.jp'

を、実行します。

search-replace の結果表示

この、search-replace の機能は、ドキュメントにもあるとおり サニタイズされているデータの中の書き換えにも対応しており、ダンプデータなどを置換するよりも安全性が格段に高いという利点があります。

さいごに

WordPress の初期構築と、SmartRelease での公開時のドメインの書き換えを主軸に、wp-cli の活用法について紹介しました。CLI に普段から触れていない人にはあまりピンと来ない内容だったかもしれませんが、うまく使えば WordPress でのサイト制作初期段階の工数をそれなりに削減してくれるので、よろしければ頭に置いておいてください。
他にも、CMS インストーラーで導入した WordPress を手早く最新版にするといった方法や、cron と組み合わせて運用に利用するなど、多機能な面を活かした活用法がありますのでまた機会があれば紹介します。

参考
WP-CLI で Wordpress の簡単セットアップできるシェルスクリプトを書いてみる - WebDelog
WordPress の引っ越しに便利な wp search-replace | Gatespace's Blog

前川 昌幸(まえかわ まさゆき)

前川 昌幸(まえかわ まさゆき)
株式会社イー・ネットワークス

1972 年、兵庫県生まれ。2000 年より広告制作会社に所属し、ウェブ制作・デザイン・DTP 補佐・プログラミング・職業訓練校派遣講師などを経験、2006 年にウェブ専業の会社に移籍。それまでの経歴は、VIDEO ショップ店長、バーテンダー兼会社役員、コミュニティ FM パーソナリティなど。大学での専攻は考古学。

現在は岡山県でウェブ制作会社に勤務。okayama-js 主宰。主にマークアップ、フロントエンド、サーバサイドプログラミングを担当。また、okayama-js などのウェブに関連した勉強会の企画や主催も行う。

2010 年より登壇活動を開始。岡山WEBクリエイターズ、岡山・高松・東京の CSS Nite、okayama-js などで主に JavaScript、マークアップなどのテーマで登壇。

著書に『 レスポンシブWebデザイン入門〜モバイルファーストの考え方からのアプローチ 』(技術評論社)、『 Web制作者のためのSublime Textの教科書 』(インプレスジャパン/共著)、『 現場のプロが教えるWeb制作の最新常識 』(MdN /共著)等がある。

トップに戻る