FTP経由でWordPressのテスト環境と本番環境を同期させる!WordMoveを使ってみる!

WordPressを使っていると、ふとした設定ミスやプラグインのバグで表示できないどころか、ログインすらできなくなってしまうことがある。
空白のページをユーザーに見せてしまうのは機会の損失になる。
テスト環境を作っておけばそのような事態を未然に防ぐことができる。

テスト環境は構築しても作業が増えないのが理想だ。
ローカル環境で記事を書いて、データベースをエクスポートして、本番環境にインポートして・・・OTL
とかやってると、ストレスが溜まる。
WordMoveというツールを使えば、以下のコマンド一つで同じことができる。

$ sudo wordmove push -d

このWordMoveはVVVとかVCCWなどと一緒に語られることが多いが、単体でも使うことができ、なんと・・・。

SSHなしで、FTP経由で同期できる!Σ(・∀・;)
「よかった〜、これでライトプランのままですんだー(´∀`)」

WordMoveでできること

WordMoveで同期できるのはデータベースだけではない。
プラグインや画像やテーマファイルなど、基本的にWordPressをまるまる同期できる。

アップロードだけでなく、本番環境をダウンロードしてくることもできるので、
今現在すでに運用をしている人でも、割りと簡単に本番環境をダウンロードしてきてテスト環境を構築することが可能。
割りとね・・・(・∀・)

lftpインストール

WordMoveをFTPで使う場合はlftpというFTPクライアントツールが必要になる。

$ brew install lftp

Homebrewでlftpは廃止されていて、うまくインストールできない場合がある。
そんなときは、以下のコマンドでインストールできる。

$ brew install homebrew/boneyard/lftp

WordMoveのインストール・設定

$ gem install wordmove

インストールが完了したらローカル環境上のブログのディレクトリへ移動して、設定ファイルを作成。

$ wordmove init

生成されたMovefileを以下のように編集。

local: # ローカル環境の設定
  vhost: "http://localhost/wordpress" # テスト環境のブログのURL
  wordpress_path: "/Library/WebServer/Documents/wordpress/" # ブログを設置している場所

  database:
    name: "database_name"
    user: "user"
    password: "password"
    host: "localhost" # IPアドレスで動かない場合はlocalhostに書き換える

production: # 本番環境の設定
  vhost: "http://rikson.net" # ブログのURL
  wordpress_path: "/" # 本番環境でブログを設置する場所

  database:
    name: "database_name"
    user: "user"
    password: "password"
    host: "host"
    # port: "3308" # Use just in case you have exotic server config
    # mysqldump_options: "--max_allowed_packet=1G" # Only available if using SSH

  exclude: # 本番環境と同期したくないファイル
    - ".git/"
    - ".gitignore"
    - ".sass-cache/"
    - "node_modules/"
    - "bin/"
    - "tmp/*"
    - "Gemfile*"
    - "Movefile"
    - "wp-config.php"
    - "wp-content/*.sql"
    - ".htaccess" # 必要に応じて追加

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

  # 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
    scheme: "ftp" # ftpsだと動かなかった

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

今回はFTPを利用して同期するので、ftpの項目のコメントアウトを外す。
yamlファイルはスペースの数が違うだけでエラーになるので、気をつけること。

FTPSの方がセキュリティ的に良いが、僕の環境では動かなかった。
FTPだとセキュリティ的に不安なので、パスワードは複雑なものを設定して、レンタルサーバー側でIPアドレスの制限をかけた。
この辺は自分で判断してほしい。

デプロイ

では、アップロードしてみよう。

$ wordmove push --all -e production

・・・どうですか?
うまくいかなかったでしょう?笑

理由は分からないが、僕は以下のようにバラバラにアップロードすることでうまくいった。

WordPressの本体
wordmove push -w
メディアファイル
wordmove push -u
テーマファイル
wordmove push -t
プラグインファイル
wordmove push -p
言語ファイル
wordmove push -l
データベース
sudo wordmove push -d

データベースは最後にアップロードしないとプラグイン等の設定が適用されなかったりするので順番にも気を使うこと。

参考

コメントを残す

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