てっきんの具。

「てっきん」と呼ばれて40年のおっさんが書くブログ

『Varying Vagrant Vagrants』でサイトを増やす方法(『WP-CLI』を使うよ)

WordPressに特化したVagrantの設定ファイル『Varying Vagrant Vagrants』(以下『VVV』)で環境構築できたところで、オリジナルのサイトを一つ増やしてみることにします。オフィシャルのマニュアルでは、nginxのバーチャルホスト設定しか書かれてないので改めて、ということで。
(『Varying Vagrant Vagrants』導入までの手順は、「WindowsでVagrant+WordPressの環境作ったよ(導入編)」にて書きましたので、よろしければぜひ)

せっかくなので、WordPressをコマンドラインから設定できるツール『WP-CLI』を使ってみることにしましょう。『WP-CLI』は『VVV』に含まれているのでご安心を。

なお本記事は、MacBook Air(Mid 2013)上のBoot Campで動かしているWindows 7 Professional(64bit版)にて構築した流れを紹介してるので、記事を参考にしてくださるMacな方は適宜読み替えてくださいね。


[2013.11.8追記]
ということで、コマンドラインでのインストール方法をこの後つらつらと書いているわけですが、我ながら「コマンド打つのがメンドい」との結論に達しまして、WordPressやよく使うプラグインのインストールを自動化するスクリプトをつくりました。
(ご利用は計画的に)

WordPressインストールのシェルスクリプト作ってみたよ(『VVV』用意してね)


ターミナルソフトを使ってセットアップ

最初にやることは『VVV』で構築された仮想マシンに、SSH接続して作業するための環境作りです。仮想マシン(IPアドレスは127.0.0.1)に接続できれば何でもよいので、ターミナルソフトのインストールをすませておきましょう。私は長らく『Tera Term』を使ってますが、今どきの選択なら『Rlogin』あたりでしょうか。インストールできたら、

  • ホスト……127.0.0.1
  • ポート……2222
  • ユーザー名……vagrant
  • パスワード……vagrant

で仮想マシンにつないでみます。

capture_27102013_155700

こんな感じで仮想マシンにログインできればオッケイです。

『WP-CLI』を0.12.1にダウングレード(2013.10.27現在)

執筆時点で、『VVV』では『WP-CLI』の最新バージョン(0.13-alpha2)が有効化されています。ところが、このまま『WP-CLI』でWordPressをインストールしようとすると

Warning: rename(): The first argument to copy() function cannot be a directory in /srv/www/wp-cli/php/commands/core.php on line 114
PHP Warning:  rename(/tmp/{tmp_file}/wordpress/wp-content,/srv/www/{dest_dir}//wp-content): Permission denied in /srv/www/wp-cli/php/commands/core.php on line 114

Warning: rename(/tmp/{tmp_file}/wordpress/wp-admin,/srv/www/{dest_dir}//wp-admin): Permission denied in /srv/www/wp-cli/php/commands/core.php on line 114
PHP Warning:  rmdir(/tmp/{tmp_file}/wordpress): Directory not empty in /srv/www/wp-cli/php/commands/core.php on line 116

のようなエラーに見舞われて作業が進みません。そこで、下記のコマンドにて『WP-CLI』を以前のバージョン(0.12.1)に戻します。

cd /srv/www/wp-cli/
git checkout v0.12.1

以前のバージョンに戻っているか確認してみます。

wp --info

とコマンドを実行して

PHP binary:     /usr/bin/php5
PHP version:    5.4.21-1+debphp.org~precise+1
php.ini used:   /etc/php5/cli/php.ini
WP-CLI root:    /srv/www/wp-cli
WP-CLI config:
WP-CLI version: 0.12.1

と返ってきたら問題なしです。


[2013.11.1追記]

『WP-CLI』の中の人から「0.13-alpha3でバグフィックスしたんで試してみるがヨロシ」という回答がありました。試してみたところ、エラーなくインストールできるようになりました。


一度体感したら手放せない、ブラウザ不要のWordPressサイト構築ツール

では、試しに sample というディレクトリを作り、その中にWordPressをインストールしてみましょう。

mkdir /srv/www/sample
cd /srv/www/sample
wp core download --locale=ja

とコマンドを打って

Downloading WordPress 3.7 (ja)...
Success: WordPress downloaded.

と返ってきたらOKの合図。sample ディレクトリ内にWordPressのファイル一式が展開されています。もう、オフィシャルサイトからZIPファイルをダウンロードして展開して……なんて手順は不要です。はー、なんて便利な。

つぎに、WordPressのお約束 wp-config.php の生成。これまたコマンドラインでサクサクと。「sample」というデータベースを使う場合のコマンド例です。ユーザー名とパスワードの「root」は『VVV』のデフォルト値です。

wp core config --dbname=sample --dbuser=root --dbpass=root --locale=ja

というコマンドを実行すると

Success: Generated wp-config.php file.

と返ってきて wp-config.php が生成されました。もう wp-config-sample.php を開いて書き換えて wp-config.php に保存……なんてしなくていいんですよ奥さん!

データベースの作成も、もちろんコマンドラインで。phpMyAdmin? いりませんいりません。

wp db create

ほらね。

Success: Database created.

あとはインストールあるのみ。『My First Vagrant Site』という名前のサイトを http://local.sample.dev/ というURLでブラウザから閲覧できるようにしてみましょうか。

wp core install --url=http://local.sample.dev --title="My First Vagrant Site" --admin_user={任意のユーザー名} --admin_password={任意のパスワード} --admin_email={管理者のメールアドレス}

ふだん、ブラウザでやっている作業がバックグラウンドで進んで

Success: WordPress installed successfully.

キター!と喜びたいところですが……

見つかりませんでした

あれ? 何かが足りないようです。

仕上げはバーチャルホスト設定と hosts ファイルへの追記で

サイトが見られないのは http://local.sample.dev/ というURLでサイトを見るための

  • バーチャルホストの設定
  • hosts ファイルの設定

が足りないため。その設定まで一気にコマンド一発でいければ申し分ないのですが(上から目線)、ここのプロセスだけちょっと手作業で進めるとしましょう。

ターミナルソフトからいったん離れて、何か適当なテキストエディタを用意してください(『メモ帳』以外で)。

『VVV』を C:\vagrant-local 内で展開した場合、バーチャルホストの設定は C:\vagrant-local\config\nginx-config\sites 内に置くことになります。ディレクトリ内に local-nginx-example.conf-sample というひな形があるので、テキストエディタで開きます。

書き換えるのは、基本的に2ヵ所でよいかとおもいます。

    # Tells nginx what domain name should trigger this configuration. If
    # you would like multiple domains or subdomains, they can be space
    # delimited here. See http://nginx.org/en/docs/http/server_names.html
-    server_name  testserver.com;
+    server_name  local.sample.dev;

    # Tells nginx which directory the files for this domain are located
-    root         /srv/www/wordpress-local;
+    root         /srv/www/sample;

    # Includes a basic WordPress configuration to help with the common
    # rules needed by a web server to deal with WordPress properly.
    include /etc/nginx/nginx-wp-common.conf;

書き換えたら「local.sample.dev.conf」というファイル名で C:\vagrant-local\config\nginx-config\sites 内に保存します。

こんどは hosts ファイルへの追記です。C:\Windows\System32\drivers\etc\hosts 内に下記を追記します。『VVV』が自動的に追記した箇所があるので、それを消さないように注意してください。

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

+ 192.168.50.4 local.sample.dev

[2013.11.17追記]
『VVV』 を導入する際に、Vagrantのプラグイン『Hostsupdater』を一緒に入れているなら Vagrantfile に以下のように追記してコマンドプロンプトから vagrant reload してもよいでしょう。

    config.hostsupdater.aliases = [
      "vvv.dev",
      "local.wordpress.dev",
      "local.wordpress-trunk.dev",
      "src.wordpress-develop.dev",
-      "build.wordpress-develop.dev"
+      "build.wordpress-develop.dev",
+      "local.sample.dev"
    ]

[2013.11.29追記]
その後 Vagrantfile の構成が大きく変わり、ホスト名の一覧を /vagrant/www/vvv-host に記述する形となりました。
GitHubにおけるdiff

VVVのドキュメント『Add New Domain』にもあるように、新たにサイトを追加する際は /vagrant/www/vvv-hosts に追記した上でコマンドプロンプトから vagrant provision と実行しないといけないようです。


ここでふたたびターミナルソフトに戻り、下のコマンドを実行してください。

sudo service nginx restart

すると

 * Restarting nginx nginx
   ...done.

と返ってきて、仮想マシン内のウェブサーバ(nginx)が再起動しました。さて http://local.sample.dev は見られるでしょうか……

My First Vagrant Site

おおお! 『WP-CLI』には豊富なコマンドが用意されているので、最低限必要なものから自分なりのチートシートをまとめておくとよいかとおもいます。

ところで。

ツール群豊富な『VVV』ではありますが、WordPressサイトを構築していくにあたり、デフォルトでは決定的に足りていない機能が一つあります。続きは次の記事で

カテゴリー:

,

タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください