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から先は設定次第です)