WordMoveで本番環境から開発環境へPullできなかったのは、wordpress_pathのパスのせいだった

WordMoveで本番環境から開発環境へPullできなかったのは、wordpress_pathのパスのせいだった

WordMoveで本番環境から開発環境へPullできなかったのは wordpress pathのパスのせいだったVCCWをつかってWordpressの本番環境と開発環境を同期できる方法を紹介しましたが、途中でエラーが発生してハマってしまいました。
その原因はMovefileのwordpress_pathを、正しく設定できていなかったのが原因でした。

エラー内容

VCCWのWordMove機能をつかって、本番環境を開発環境へPullしようとしたところで、エラーが発生しました。

▬▬ ✓ Pulling Database ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
    local | mysqldump --host=localhost --user=wordpress --password=wordpress  
wordpress > /home/hiroshi-k/kanaog.com/public_html/blog/wp-content/local-backup-1448696832.sql remote | mysqldump --host=mysql***.xserver.jp --user=********** --
password=******** --default-character-set=utf8 ********* > /ルートドメイン
/public_html/サブディレクトリ/wp-content/dump.sql /usr/local/rbenv/versions/
2.1.2/lib/ruby/gems/2.1.0/gems/wordmove-1.2.0/lib/wordmove/deployer/ssh.rb:55 :in `remote_run': Error code 1 returned by command "mysqldump --host=
mysql***.xserver.jp --user=********** --password=*********
--default-character-set=utf8 ********** > /ルートドメイン/public_html/サブディレクトリ
/wp-content/dump.sql": bash: /ルートドメイン/public_html/サブディレクトリ/wp-content
/dump.sql: そのようなファイルやディレクトリはありません (RuntimeError)

ターミナルでコマンドが流れるだけなので、一見エラーには見えずらい。

エラーの分析

エラー内容を上から順に追っていくと、
そのようなファイルやディレクトリはありません (RuntimeError)」と表示されているので、ランタイムエラーと思ったけど、最初からVCCWごとインストールし直したので、ランタイムでエラーになる可能性はほぼない。

ssh.rbの55行目で落ちているっぽいので、このファイルパスをたどって、ssh.rbをテキストエディタで開くも、そもそも編集もしていないので、これも原因ではなかった。

/ルートドメイン/public_html/サブディレクトリ/wp-content/dump.sql /usr/local/rbenv
/versions/2.1.2/lib/ruby/gems/2.1.0/gems/wordmove-1.2.0/lib/wordmove
/deployer/ssh.rb:55

結果的にこれが原因
mysqldumpコマンドで、リモート先(本番環境)のデータベースをバックアップしています。
このときのバックアップ先がMovefileのwordpress_pathで指定していたパスになります。これが正しくなかったので、バックアップができておらず、「そのようなファイルやディレクトリはありません」とエラーになっていたようです。

Error code 1 returned by command "mysqldump --host=mysql***.xserver.jp --user=
********** --password=********* --default-character-set=utf8 ********** >
/ルートドメイン/public_html/サブディレクトリ/wp-content/dump.sql"

試しに、本番環境にリモート接続して、mysqldumpコマンドを試してみます。
エックスサーバを使っているので、接続先はサーバID@サーバID.xsrv.jpとなります。

$ ssh サーバID@サーバID.xsrv.jp -p 10022
Last login: *************************************************
[サーバID@***** ~]$ mysqldump --host=mysql***.xserver.jp --user=*************
--password=******** --default-character-set=utf8 ********** >
/kanaog.com/public_html/test-vccw/wp-content/dump.sql
-bash: /ルートドメイン/public_html/サブディレクトリ/wp-content/dump.sql:
そのようなファイルやディレクトリはありません

mysqldumpを実行すると、同じく「そのようなファイルやディレクトリはありません」とエラーが発生しました。
明らかにこれが原因なのがわかりました。

このフォルダパスが有効でないのです。

/ルートドメイン/public_html/サブディレクトリ/wp-content/

このパスは、Movefileファイルの、wordpress_pathで指定していたパスです。
ここは絶対パスで指定しなければなりません

エックスサーバの場合ですが、 Movefileのwordpress_pathで指定すべきパスは、

/home/サーバID/ルートドメイン/public_html/サブディレクトリ/

(本番環境はサブディレクトリ形式で運用しているので、public_htmlから先は設定次第です)

ブログ・ITハックカテゴリの最新記事