ふつうのレンタルサーバーでも、VCCWとWordmoveを使って快適にローカル環境で開発しようぜ!

昨日VCCWにプルリクエストを投げたらマージされ、コントリビューターになりましたToro_Unitです。1行だけですけどね!!!

そのプルリクエストがWordmove周りのものだったのですが、プルリク投げたら宮内さんにブログを書けと言われたので書きます。

What’s Wordmove

そもそも、Wordmoveってなんぞやって話ですよね。僕もVCCWが対応したとかでそのとき初めて名前を聞きました。

https://github.com/welaika/wordmove

WordmoveはRuby製のWordPress用デプロイツールです。サーバー間でWordPressの環境をまるっと同期できます。プラグインとかテーマとか、データベースとか。本体も同期できますし、部分的にいろいろやれたりもします。言語ファイルだけとかも。

データベースの同期だと、画像のリンクがフルパスになっていて同期先で上手く表示できないとかいう問題が発生しがちなのですが、そこら辺も上手い事やってくれます。

要は、WordPressをサーバーやドメイン引っ越しとか、テスト環境から本番に公開するときなんかに、データベースをいろいろ書き換えたりとかしますよね。そこらへんも含めてコマンド一つでやってくれるものすごーい便利なツールです。

また、本番環境からテスト環境へデータを持ってくる等もできるので、運用中のサイトのメンテナンスなどからでも取り入れる事ができます。

VCCWでのWordmoveの使い方は、こちらの記事を参照してください。

WordMoveを使ってVagrant内のWordPressと本番環境を同期する! | Firegoby

なんか、便利そうですよね。触ってみたくなりませんか?

さくらのレンタルサーバーでWordmoveする

先ほど紹介した宮内さんのブログだとAWSの話なのですが、これをさくらのレンタルサーバーでやります。

Movefileはこんな感じです。

local:
  vhost: "http://wordpress.local"
  wordpress_path: "/var/www/vhosts/i-09798573b46965351"

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

staging:
  vhost: "http://example.com"
  wordpress_path: "/home/sakurauser/www/example.com"

  database:
    name: "database_name"
    user: "database_user"
    password: "database_pass"
    host: "database_host"
    charset: "utf8"

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

  ssh:
    host: "sakurauser.sakura.ne.jp"
    user: "sakurauser"
    password: "pass"
    port: 22
    rsync_options: "--verbose"

 

さくらのレンタルサーバーだと、データベースのdumpの文字コードがshift-jisになってしまうので、detabaseの項目に文字コードの指定を入れます。”utf-8″か”binary”にしておけば問題なく動きます。

参考:WordPress – wordmoveのMovefileのエラーを解決してみた – Qiita

$ vagrant ssh
$ cd /vagrant
$ wordmove pull --all

上記のコマンドを実行すればサーバーからローカルへデータを同期できます。ただし、一番最初に実行するときはサーバーの公開鍵のチェックなどで上手くいかなかったので、vagrant sshでログインした後に対象のサーバーにsshで入る必要があります。

$ ssh [email protected]

これで、公開鍵を登録しますかとかうんたらかんたら聞かれるので、yesとしておけば大丈夫です。

Movefileの設定等でなんとかなりそうな気はするんですけどね・・・。だれか教えてください。

hetemlでWordmoveする

hetemlの場合はsshは問題ないのですが、ファイルの同期をするrsyncが動かないので、FTPで行います。

local:
  vhost: "http://example.local"
  wordpress_path: "/var/www/vhosts/i-09798573b46965351"
  database:
    name: "wordpress"
    user: "wordpress"
    password: "wordpress"
    host: "localhost"

staging:
  vhost: "http://example.com"
  wordpress_path: "/web/example.com"

  database:
    name: "database_name"
    user: "database_user"
    password: "database_pass"
    host: "database_host"

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


  ftp:
    user: "ftp_user"
    password: "ftp_pass"
    host: "example.com"
    passive: true

wordpress_pathが実際のフルパスではなく、FTPでログインしたときのwordpressの場所になります。

こちらの場合は、sshを使わないので公開鍵云々などの必要はありません。すんなり動きます。ただ、やりとりするファイルが多いと接続が切れたりする事があるようです。node_modules等はexcludeに指定しておくと良いかと思います。

個人的にはまったとこ

いくらpullしてもデータベースが反映されないなぁってやってたら、テーブルのプレフィックスを直してませんでした。ローカルでも本番環境でもこれは合わせておかないといけないようです。

まとめ

最近WordPressのCLIツールもどんどん発達してますが、使いこなすと革命レベルで作業がやりやすくなります。レボリューションです。

WordmoveとWP-CLIはほんとにすごい。セットアップせずに使えるVCCWほんとすごい。