SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ツールがなくてもサーバー構築でたじろがない! 一撃シェルスクリプト道場

WordPressとnginx+MySQL+memcached+wp-cliをインストールする一撃シェルスクリプト

ツールがなくてもサーバー構築でだじろがない! 一撃シェルスクリプト道場 最終回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード ICHIGEKI (9.5 KB)

WordPress運用にwp-cliを使ってみる

WordPressのテーマを変更してみる

 wp-cliが威力を発揮するのは、WordPressインストールの自動化だけではありません。WordPressの管理画面にブラウザからログインせずに、様々な処理を行うことができます。見た目に分かりやすいところで、テーマを変更してみましょう。その前に、wp-cliを引数なしで実行してヘルプを表示させます。

# wp
Error: YIKES! It looks like you're running this as root. You probably meant to run this as the user that your WordPress install exists under.

If you REALLY mean to run this as root, we won't stop you, but just bear in mind that any code on this site will then have full control of your server, making it quite DANGEROUS.

If you'd like to continue as root, please run this again, adding this flag:  --allow-root

If you'd like to run it as the user that this site is under, you can run the following to become the respective user:

    sudo -u USER -i -- wp <command>

# echo $?
1

 いきなりエラーとなってしまいました。どうやらrootでの実行は好まれないようです。しかし、引数に--allow-rootを付けると、rootユーザーでも実行できます。

# wp --allow-root | cat | head
NAME

  wp

DESCRIPTION

  Manage WordPress through the command-line.

SYNOPSIS

 それでは気を取り直して、まずは現在インストールされているテーマ一覧を見てみましょう。

# wp --allow-root theme list --path=/home/vhosts/www.example.com/public_html/
+----------------+----------+--------+---------+
| name           | status   | update | version |
+----------------+----------+--------+---------+
| twentyfifteen  | active   | none   | 1.2     |
| twentyfourteen | inactive | none   | 1.4     |
| twentythirteen | inactive | none   | 1.5     |
+----------------+----------+--------+---------+

 次に、springという名前を含んでいるテーマを検索してみます。

# wp --allow-root theme search spring --path=/home/vhosts/www.example.com/public_html/
Success: Showing 2 of 2 themes.
+---------------+---------------+--------+
| name          | slug          | rating |
+---------------+---------------+--------+
| Spring Song   | spring-song   | 100    |
| Tender Spring | tender-spring | 100    |
+---------------+---------------+--------+

 このように2件見つかりました。それでは、最初に見つかった「Spring Song」をインストールし、即有効化してみましょう。wp-cliに与える引数は、スラッグで指定します[3]

# wp --allow-root theme install stargazer --path=/home/vhosts/www.example.com/public_html/
Installing Stargazer (1.2.1)
https://downloads.wordpress.org/theme/stargazer.1.2.1.zip からインストールパッケージをダウンロードしています…
パッケージを展開しています…
テーマをインストールしています…
テーマのインストールが完了しました。
Success: Translations are up to date.

# wp --allow-root theme install spring-song --activate --path=/home/vhosts/www.example.com/public_html/
Installing Spring Song (1.0.0)
https://downloads.wordpress.org/theme/spring-song.1.0.0.zip からインストールパッケージをダウンロードしています…
パッケージを展開しています…
テーマをインストールしています…
テーマのインストールが完了しました。
Success: Translations are up to date.
Activating 'spring-song'...
Success: Switched to 'Spring Song' theme.

 上記のメッセージのように、インストールが完了し、アクティベートされると成功です。それではブラウザをリロードしてみましょう。図3のように、テーマが変更されたことを確認してみましょう。

図3:テーマが変更された

 

[3] 親テーマとしてstargazerが必要なので、先にこれをインストールします。

 

ブログに新しい記事を投稿してみる

 wp-cliは、WordPressができることの多くを網羅しています。何ができるかを知るために、wp-cliのビルトインコマンド一覧 を一読することをおすすめします。この一覧はサンプルも多く、やりたいこととコマンドが直感的に結びつくかと思います。

 それでは最後に、ブログに新しい記事を投稿してみましょう。その前に、現在の投稿一覧を表示してみます。

# wp --allow-root post list --path=/home/vhosts/www.example.com/public_html/
+----+--------------+-------------+---------------------+-------------+
| ID | post_title   | post_name   | post_date           | post_status |
+----+--------------+-------------+---------------------+-------------+
| 1  | Hello world! | hello-world | 2015-05-20 16:12:51 | publish     |
+----+--------------+-------------+---------------------+-------------+

 表示されたのは、WordPressがインストールされた直後、自動的に公開される投稿です。それでは、投稿の下書きをテキストファイルで生成して、これを読み込んで投稿してみましょう。

# cat << _EOL_ | tee post-content.txt
> 一撃シェルスクリプト is つよい
> 一撃シェルスクリプト is not 電撃ネットワーク
> _EOL_

# wp --allow-root post create ./post-content.txt --post_title='一撃シェルスクリプト 出撃!' --path=/home/vhosts/www.example.com/public_html/
Success: Created post 3.

 成功のメッセージが出ました。それでは投稿ステータスの詳細を見てみましょう。もちろん、コマンドラインから見てみます。

# wp --allow-root post get 3 --path=/home/vhosts/www.example.com/public_html/
+-----------------------+-----------------------------------------------+
| Field                 | Value                                         |
+-----------------------+-----------------------------------------------+
| ID                    | 3                                             |
| post_author           | 0                                             |
| post_date             | 2015-05-20 17:03:06                           |
| post_date_gmt         | 0000-00-00 00:00:00                           |
| post_content          | 一撃シェルスクリプト is つよい
一撃シェルスクリプト is not 電撃ネットワーク
 |
| post_title            | 一撃シェルスクリプト 出撃!                   |
| post_excerpt          |                                               |
| post_status           | draft                                         |
| comment_status        | open                                          |
| ping_status           | open                                          |
| post_password         |                                               |
| post_name             |                                               |
| to_ping               |                                               |
| pinged                |                                               |
| post_modified         | 2015-05-20 17:03:06                           |
| post_modified_gmt     | 0000-00-00 00:00:00                           |
| post_content_filtered |                                               |
| post_parent           | 0                                             |
| guid                  | http://www.example.com/?p=3                   |
| menu_order            | 0                                             |
| post_type             | post                                          |
| post_mime_type        |                                               |
| comment_count         | 0                                             |
+-----------------------+-----------------------------------------------+

 投稿はされましたが、post_statusがdraft(下書き)のままです。これをpublish(公開)に変更して、Webブラウザで読めるようにしてみます。

# wp --allow-root post update 3 --post_status=publish --path=/home/vhosts/www.example.com/public_html/
Success: Updated post 3.

# wp --allow-root post get 3 --path=/home/vhosts/www.example.com/public_html/ | grep post_status
post_status publish

 post_statusがpublishになったので、ブラウザで見てみましょう。図4のように、トップページの表示が変わりました。タイトルをクリックしてみると、図5のように投稿した記事が表示されます。

図4:トップページの表示が変わった

 

図5:投稿した記事が表示された

 

 1つだけ、注意事項があります。これまでに手動で実行したwpコマンドはすべてrootユーザーが--allow-rootを付けて実行しました。ですので、ダウンロードしたテーマファイルがすべてオーナー、グループともにrootになっています。このままにしておくと、ブラウザからテーマやプラグインのアップデートを行う際、書き込みエラーがおきてしまいますので、su - nginx --shell=/bin/bash --command="/usr/local/bin/wp ……"を付けて実行するか、ドキュメントルート以下のオーナーをnginxに、グループにWEB管理用の一般ユーザーに設定し、グループに書き込み権限を与えるなどの処置を行うとよいでしょう。

おわりに

 いかがでしたでしょうか。3回にわたり、シェルスクリプトで実用的なサーバー構築を行うというテーマを取り上げてみましたが、ほぼディストリビューション標準のコマンド群でサーバー構築の自動化ができることがお分かりいただけたかと思います。

 作業品質の向上、均一化はサーバー構築だけでなく、運用フェーズでこそ重要になるスキルです。極力人の手を介さず、どんな仕事も一撃で終わらせることこそ、我々エンジニアだけでなくユーザーも幸せになれるはずです。そのために、ぜひ運用スクリプトも一撃化していただければと願ってやみません。今までおつきあいいただきまして、有難うございました。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ツールがなくてもサーバー構築でたじろがない! 一撃シェルスクリプト道場連載記事一覧

もっと読む

この記事の著者

濱田 康貴(ハマダ ヤスタカ)

サーバーエンジニアとして主にLinuxのWEBサーバーを設計、構築、運用を行っています。運用ツールの相棒としてシェルスクリプトやワンライナーは心強いパートナーと信じて疑わず、ブログでTIPSを公開しています。2009年5月のUSP友の会活動開始より参画し、現副会長。最近では、USP友の会で「一撃サーバー構築シェルスクリプト勉強会」を開催しているほか、日本で唯一のシェルスクリプト総合誌『シェルスクリプトマガジン』(毎月25日発売)で、隔月(偶数月号)連載「教えて先輩 サーバー運用お助けTips」を執筆しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8703 2015/06/02 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング