wordmove – WordPressサイトを一発デプロイ


この記事の所要時間: 452
WordPressをベースにWebサイトを構築する場合、

  • ローカルにPHPやApacheを用意して開発用サーバを立ち上げ
  • ローカルで動作を確認しながら開発
  • リリース時に本番環境にアップロード

という流れで開発する場合が多いのではないでしょうか。

このとき問題になるのが、ローカル環境で行ったデータベースの変更をどうやって本番環境のデータベースに反映させるか、ということです。基本的には mysqldump でダンプしたSQLファイルを本番環境のMySQLに食わせればいいのですが、ローカル環境のデータベースには http://localhost/foo/bar というように、ローカルホストのホスト名が入り込んでいる場合があります。さらに、一部の文字列は文字列長と文字列の組でシリアライズされているため、単純にホスト名を置き換えるだけでは不十分です。このようなデータベースの変換を自動で行い、リモートの本番サーバへアップロードしてくれるCUIツールが wordmove です。

設定ファイルである Movefile (後述)を用意し、端末から、

$ wordmove push --all

と実行すると、ローカルのWordPressディレクトリおよびデータベースが一発でリモートのサーバへアップロードされます。簡単ですね!

$ wordmove pull --all

と実行すると、逆に今後はリモートのデータをダウンロードし、ローカルに反映させます。

インストール

wordmove はRuby製のツールです。例によって Rubygems からインストールします。

$ gem install wordmove

Movefile の準備

wordmove でデプロイできるようにするためには、設定ファイルである Movefile を用意する必要があります。

$ wordmove init

で以下のようなMovefileの雛形が生成されます。

local:
  vhost: "http://vhost.local"
  wordpress_path: "~/dev/sites/your_site"
  database:
    name: "database_name"
    user: "user"
    password: "password"
    host: "127.0.0.1"
staging:
  vhost: "http://remote.com"
  wordpress_path: "/var/www/your_site"
  # paths: # you can customize wordpress internal paths
  #   wp_content: "wp-content"
  #   uploads: "wp-content/uploads"
  #   plugins: "wp-content/plugins"
  #   languages: "wp-content/languages"
  exclude:
    - ".sass-cache"
    - ".git"
    - "bin"
    - "tmp/*"
    - "wp-content/*.sql"
    - "Gemfile*"
    - "Movefile"
  database:
    name: "database_name"
    user: "user"
    password: "password"
    host: "host"
  # ssh:
  #   host: "host"
  #   user: "user"
  #   password: "password" # password is optional, will use public keys if available.
  #   port: 22 # Port is 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
#   [...]

localブロックでローカル側の環境設定を行います。雛形ではデプロイ先としてstagingブロックが定義されています。デプロイ先は複数設定可能で、-e オプションで切り替えることが可能です。

デプロイ方法はSSHとFTPが選択できますが、SSH+公開鍵認証の組み合わせを使用することが推奨されています。デプロイ中は何回かSSH認証が入りますが、いちいちパスフレーズを入力するのが面倒な場合は ssh-agent を有効にしておくと幸せになれます。

まとめ

wordmove 使うと、面倒なファイルアップロードやデータベースのエクスポートがコマンド一発でできる!楽!

投稿者紹介

齊藤 潤
サーバ運用もできるプログラマと化した、2013年入社の元新人エンジニアです。

人気の記事

コメント

コメントを残す

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

PAGE TOP