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年入社の元新人エンジニアです。
最近のエントリ
- 勉強会2017.03.10ユニキャストの勉強会のご紹介
- Ruby2014.05.16[ruby-install] Rubyのバージョン切替えスクリプトを書いた
- CentOS2014.05.14OpenLDAPサーバーを構築する
- Ruby2013.12.17AutomaticRubyとChatWorkを連携させる