25
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

wordmoveのMovefileのエラーを解決してみた in さくらレンタルサーバ

Last updated at Posted at 2014-11-14

wordmoveとは?

VCCWを使ってwordpress向けの開発環境を作る場合、wordmoveというツールが組み込まれています。
これを使うとpull/pushで環境のバックアップやデプロイができるようになりますが、そのために必要なMovefileの作成およびpullで詰んだのでメモ。

なお、さくらインターネットの人は特にDBで詰むと思いますのでMovefile内でcharsetの設定が必要です。この設定はwordmove initした時にも記載されていないので見逃しがちです(後述)。

利用までの手順

まず、開発環境に入ります。

vagrant ssh # ローカルでssh-addしている状態で入る

そしてwordmoveのインストールを確認します。

wordmove

これで下記の表示が出ればパスが通っているのでひとまずOK

Commands:
  wordmove help [COMMAND]  # Describe available commands or one specific c...
  wordmove init            # Generates a brand new Movefile
  wordmove pull            # Pulls WP data from remote host to the local m...
  wordmove push            # Pushes WP data from local machine to remote host

wordmoveで手元にバックアップするためには下記のコマンドを打ちます。

wordmove init # 新しいMovefileができる
vim Movefile # Movefileの内容を編集する
wordmove pull --all # 本番環境からpullしてくる

ここで、wordmove initした直後のMovefileは下記の通り。

Movefile(default)
local:
  vhost: "http://wordpress.local/"
  wordpress_path: "/var/www/wordpress/" # use an absolute path here

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

staging:
  vhost: "http://example.com"
  wordpress_path: "/var/www/your_site" # use an absolute path here

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

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

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

  # 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

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

何も考えずsshの前の#をとってしまうと下記のエラーメッセージが出ます。。。

▬▬ ✓ Using Movefile: ./Movefile ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
/usr/local/rbenv/versions/2.1.2/lib/ruby/2.1.0/psych.rb:370:in `parse': (<unknown>): did not find expected key while parsing a block mapping at line 12 column 3 (Psych::SyntaxError)
	from /usr/local/rbenv/versions/2.1.2/lib/ruby/2.1.0/psych.rb:370:in `parse_stream'
	from /usr/local/rbenv/versions/2.1.2/lib/ruby/2.1.0/psych.rb:318:in `parse'
	from /usr/local/rbenv/versions/2.1.2/lib/ruby/2.1.0/psych.rb:245:in `load'
	from /usr/local/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/wordmove-1.2.0/lib/wordmove/deployer/base.rb:58:in `fetch_movefile'
	from /usr/local/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/wordmove-1.2.0/lib/wordmove/deployer/base.rb:20:in `deployer_for'
	from /usr/local/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/wordmove-1.2.0/lib/wordmove/cli.rb:45:in `pull'
	from /usr/local/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
	from /usr/local/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
	from /usr/local/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
	from /usr/local/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
	from /usr/local/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/wordmove-1.2.0/bin/wordmove:6:in `<top (required)>'
	from /usr/local/rbenv/versions/2.1.2/bin/wordmove:23:in `load'
	from /usr/local/rbenv/versions/2.1.2/bin/wordmove:23:in `<main>'

sshの記載のある階層が合ってないのが問題なので、スペースにより下記のような階層に合わせます。念のため作成後にYaml lintを通しておくと安心です。

なお、パスワードをコメントアウトしているのはsshログインをエージェントフォワードで解決できるためです。事前にVagrantfileで config.ssh.forward_agent = trueのように設定しておきましょう。

Movefile(一部抜粋)
staging:
  vhost: "http://XXX.example.com" # http://XXX.example.comなど本番ドメインを記載
  wordpress_path: "/home/XXX/www/" # use an absolute path here

  database:
    name: "Wordpress用の本番DBname"
    user: "本番ユーザ名"
    password: "本番DBのパスワード"
    host: "mysqlXXX.db.sakura.ne.jp" # さくらレンタルサーバの場合
    charset: "utf8" # ←dumpファイルの文字コードをutf8に固定。initにはないのでこの行を追記します

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

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

  ssh:
    host: "XXXXX.sakura.ne.jp"
    user: "XXXXX"
  #  password: "passward" # 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.

わかってしまうと単純なのですが、#のあるところが基準になっているんですね。yamlに慣れていないと単なるコメントアウトかなくらいの体だと思い、案外詰んでしまうというお話でした。

おまけ

vagrant ssh後のMovefileを外部エディタでサクッと触りたい場合は、ローカルのwww/wordpress/に置いておけばすぐ編集できます。vagrant内だとvar/www/wordpress/がそれに対応します。

wordmoveの詳しい使い方で参考になるサイト

WordMoveを使ってVagrant内のWordPressと本番環境を同期する!
http://firegoby.jp/archives/5644

wordmoveでローカルのWordPressを速攻デプロイ
http://tanshio.net/wordmove/

なお、Pulling Databaseの所でwp-configの文字コード、テーブル内の文字コードでエラーが出る事があります。その場合は対象がUTF−8になっているかを確認するのも大事です。さくらサーバで動かしている場合はDBをUTF−8で作っていると思いますのでMovefileの設定さえ行っていれば問題ありません。

invalid byte sequence in UTF-8 (ArgumentError) #65
https://github.com/welaika/wordmove/issues/65

Invalid byte sequence in UTF-8 on db synchronize #74
https://github.com/welaika/wordmove/issues/74

Problem when trying to push/pull database #90
https://github.com/welaika/wordmove/issues/90

*追記*さくらレンタルサーバ(VPSではなく)スタンダード以上の場合

さくらのmysqldumpの初期設定はujisですが、rootのないレンタルサーバでは設定できません。なので、dumpファイルがutf8にならずエラーするという罠があります。
wordmoveの中身を見るとcharsetオプションが準備されているため、Movefileへcharsetの設定を追記してクライアント側で解決しています

参考:wordmove / lib / wordmove / deployer / base.rb

25
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?