ゼロからできるWordPress開発〜VCCWでデプロイ編〜

こんにちは〜、マークアップエンジニアのCandyです。
前回に引き続き、VCCWを使ったWordPress開発について書きたいと思います。
前回の記事はこちら(『ゼロからできるWordPress開発〜VCCWでローカル開発環境構築編〜』)

今回はデプロイ編ということで、ローカルで開発したWordPressをステージング環境(と本番環境)にそれぞれSSH接続でデプロイする手順をまとめます。

事前準備

デプロイ後はローカルのWordPressのユーザ名、パスワードも移行されるので、ステージングや本番環境で使いたいパスワード等がある場合は事前にローカルで変更しておくと良いでしょう。

デプロイする環境にはWordPressをインストールしておきます。
またその環境のURLと、SSH情報、database情報を下記のようにまとめておきましょう。

【ステージング環境】
URL : http://dev.sample.com WordPressをインストールするパス: /var/www/wordpress
SSH情報 - host名 - user名 - password
database情報 - database名 - user名 - password - host名

デプロイ手順

デプロイにはVCCWをダウンロードした際に同梱されているMovefileを使います。

1. Movefileの編集

Movefileをテキストエディタで開くと、デフォルトは下記のようになっていると思います。
インデントされていない行を見ていくと、local、staging、そして最後の方にコメント化されたproduction(本番)があると思います。
インデントがずれるとうまくいかないのでこの注意して編集していきます。

localはそのままでOKです。stagingのvhost、wordpress_path、database情報の4点を編集し、ssh部分のコメント(#)を外してssh情報を書き換えます。
さらに本番環境へもデプロイする場合はproductionのコメントを外し、stagingと同様に情報を追記します。

local:
  vhost: "http://wordpress.local/"
  wordpress_path: "/var/www/wordpress/" # use an absolute path here

  database:
    name: "wordpress"
    user: "wordpress"
    password: "wordpress"
    host: "localhost"

staging:
  vhost: "http://example.com"
  wordpress_path: "/var/www/your_site" # use an absolute path here

  database:
    name: "database_name"
    user: "user"
    password: "password"
    host: "localhost"
    charset: "utf8"

  exclude:
    - ".git/"
    - ".gitignore"
    - ".sass-cache/"
    - "bin/"
    - "tmp/*"
    - "Gemfile*"
    - "Movefile"
    - "wp-config.php"
    - "wp-content/*.sql"

  # paths: # you can customize wordpress internal paths
  #   wp_content: "wp-content"
  #   uploads: "wp-content/uploads"
  #   plugins: "wp-content/plugins"
  #   themes: "wp-content/themes"
  #   languages: "wp-content/languages"
  #   themes: "wp-content/themes"

  # ssh:
  #   host: "host"
  #   user: "user"
  #   password: "password" # password is optional, will use public keys if available.
  #   port: 22 # Port is optional
  #   rsync_options: "--verbose" # Additional rsync options, optional
  #   gateway: # Gateway is optional
  #     host: "host"
  #     user: "user"
  #     password: "password" # password is optional, will use public keys if available.

  # ftp:
  #   user: "user"
  #   password: "password"
  #   host: "host"
  #   passive: true

# production: # multiple environments can be specified
#   [...]

2. 仮想環境ログイン

ファイルの設定がおわったらSSHで仮想環境にログインします。

$ vagrant ssh

3. データベースの置換

ローカル環境をステージング環境にまるごと同期させるため、まずデーターベースをステージングのURLに置換します。
下記のコマンドでWordPressでシリアライズされたデータも、正常に置換できます。
(dev.sample.comの部分をステージングのURLに書き換えてください。)

$ wp search-replace 'vccw.dev' 'dev.sample.com' wp_options wp_blogs wp_site

4. デプロイ実行

ステージングにデプロイする場合は下記のコマンドです。
本番にデプロイする場合は-e staging-e productionとすればOKです。
またオプションとして、テーマのみpushしたい場合は--allの部分を-tとしたり、データベースのみプッシュしたい場合は-dとしたりできるようです。

# ディレクトリ移動
$ cd /vagrant

# ファイルやデータの転送
$ wordmove push -e staging --all

以上でデプロイ完了です。サイトにアクセスして確認してみてください。

5. wp-config.phpの編集(戻すための準備)

デプロイ自体は完了しましたが、ローカルのデータベースはステージングURLのままなので、このままだとローカルが正常に機能しないので戻しておきましょう。
vccw.devの2箇所(マルチサイトの場合は3箇所)をdev.sample.comに置換します。
これをしないとデータベースの置換がうまくいきません。

define( 'WP_HOME', 'http://dev.sample.com' );
define( 'WP_SITEURL', 'http://dev.sample.com' );
*
*
*
# マルチサイトの場合はこちらも
define('DOMAIN_CURRENT_SITE', 'dev.sample.com');

6. detabaseの置換(ローカル環境を戻す)

# ディレクトリ移動
$ cd ..

# データベースの置換
$ wp search-replace 'dev-sample.com' 'vccw.dev' wp_options wp_blogs wp_site

7. wp-config.phpも戻しておく

データベースの置換をするために編集したローカルのwp-config.phpの値は元に戻しておきましょう。

define( 'WP_HOME', 'http://vccw.dev' );
define( 'WP_SITEURL', 'http://vccw.dev' );
*
*
*
# マルチサイトの場合はこちらも
define('DOMAIN_CURRENT_SITE', 'vccw.dev');

以上でステージング環境もローカルでも正常にWordPressが動いているんじゃないかと思います。
お疲れ様でした!