WordPress開発において、ローカル環境と本番サーバー間のファイルやデータベースの手動同期は非効率かつエラーを誘発しやすい作業です。WordMoveはこうした課題を解決するためのRuby製CLIツールで、rsyncとwp-cliを活用してファイルとDBの双方向同期を自動化します。本記事では、インストールから高度な運用まで、実践的な使い方を解説します。
WordMoveの主な機能
- ファイル同期:SSH経由のrsyncまたはFTPで効率的にミラーリング
- データベース移行:mysqldump/wp-cliによるエクスポート・インポートとURL置換の自動化
- 複数環境対応:local/staging/productionなど複数ターゲットを一元管理
- フックシステム:push/pull前後に任意コマンドを実行可能(例:ビルド、キャッシュクリア)
- セキュア設定:.envファイルや環境変数による認証情報の分離
環境構築
以下の依存パッケージを事前にインストールしてください:
# Ubuntu/Debian
sudo apt install ruby-full rsync mysql-client lftp
# macOS (Homebrew)
brew install ruby rsync mysql lftp
その後、GemでWordMoveをインストール:
gem install wordmove
wordmove --version # バージョン確認
基本設定:movefile.ymlの作成
WordPressプロジェクトのルートディレクトリで初期化:
cd /path/to/wordpress
wordmove init # movefile.yml を生成
以下は最小限の設定例です(YAML形式):
global:
sql_adapter: wpcli
local:
vhost: "http://localhost/mysite"
wordpress_path: "/home/user/dev/mysite"
database:
name: "local_db"
user: "db_user"
password: "db_pass"
host: "127.0.0.1"
production:
vhost: "https://mysite.com"
wordpress_path: "/var/www/mysite.com"
database:
name: "prod_db"
user: "prod_user"
password: "<%= ENV['PROD_DB_PASS'] %>"
host: "localhost"
ssh:
host: "mysite.com"
user: "deploy_user"
デプロイ操作の実行
設定後、以下のコマンドで同期が可能:
# 全てを本番環境にプッシュ
wordmove push -e production --all
# データベースのみプッシュ
wordmove push -e production -d
# テーマファイルのみプッシュ
wordmove push -e production -t
# 本番からローカルにデータをプル(注意:上書きされる)
wordmove pull -e production -d
セキュリティ対策:.envファイルの活用
パスワードなどの機密情報をmovefile.ymlに直接記述せず、.envファイルで管理します:
# .env(.gitignoreに追加必須)
PROD_DB_PASS="s3cr3t_p@ssw0rd"
PROD_SSH_KEY_PATH="~/.ssh/prod_key"
movefile.yml内では<%= ENV['VAR_NAME'] %>で参照可能です。
フックによる自動化拡張
デプロイ前後にカスタム処理を挿入できます:
production:
# ...(省略)...
hooks:
push:
before:
- command: "npm run build"
where: local
after:
- command: "wp cache flush"
where: remote
よくある問題と対処法
| エラー内容 | 原因 | 解決策 |
|---|---|---|
| rsync: command not found | rsync未インストール | sudo apt install rsync |
| Permission denied (publickey) | SSH鍵認証失敗 | 鍵の権限(600)と~/.ssh/configを確認 |
| Database connection failed | DB接続情報誤り | ホスト名・ユーザー・パスワードを再確認 |
大規模サイト向け最適化
- 除外ルールの強化:node_modules, .git, ログファイルなどを明示的に除外
- DB分割エクスポート:large tablesは
exclude_tablesでスキップ - rsyncオプション調整:
rsync_options: "-az --delete --progress"
WordMoveを導入することで、WordPressのデプロイワークフローは劇的に効率化され、ヒューマンエラーも大幅に削減されます。特に中小規模プロジェクトや個人開発者にとって、CI/CDパイプライン構築前の有力な選択肢となるでしょう。