Ubuntuにwordmoveをインストールする方法

Ubuntu Server 16.04にwordmoveをインストールしたときの記録。

エックスサーバーにある本番サイトを、自宅内のUbuntu Server 16.04にwordmoveでバックアップを取りました。

以前KUSANAGIとエックスサーバー間でもやったことあるんですが、ほとんど変わりません。

再現性の高さはCUIならではですね。

もくじ(押すと各章に飛ぶ)

wordmoveのインストール

rubygemsをインストール

sudo apt install rubygems

wordmoveをインストールするためには先ずrubygemsというパッケージ管理ツールをインストールしなければなりません。

OSは apt 、rubyスクリプトは rubygems がインストーラーという対応関係です。

fuka@ygkb:/var/www/html/wordpress$ sudo apt install rubygems
[sudo] fuka のパスワード:
パッケージリストを読み込んでいます... 完了
:
zip (3.0-11) を設定しています ...
libruby2.3:amd64 (2.3.1-2~16.04) を設定しています ...
ruby2.3 (2.3.1-2~16.04) を設定しています ...
ruby (1:2.3.0+1) を設定しています ...
rake (10.5.0-2) を設定しています ...
libc-bin (2.23-0ubuntu5) のトリガを処理しています ...

wordmoveをインストール

sudo gem install wordmove

rubygemsをインストールするとgemコマンドが使えるようになります。

gemを使ってwordmoveをインストールします。

fuka@ygkb:/var/www/html/wordpress$ sudo gem install wordmove
Fetching: colorize-0.7.7.gem
:
Done installing documentation for colorize, thor, i18n, thread_safe, tzinfo, activesupport, net-ssh, net-scp, net-ssh-gateway, photocopier, wordmove after 12 seconds
11 gems installed

以後、wordmoveというコマンドが使えるようになります。

wordmove設定

WordPressのディレクトリに移動

WordPressの設置ディレクトリに移動します。

cd /var/www/html/wordpress

Movefile作成

wordmove init

を実行すると、カレントディレクトリにMovefileというテキスト形式の設定ファイルが出来ます。

wordmoveはこの設定を読み取って動作します。

fuka@ygkb:/var/www/html/wordpress$ wordmove init
 create Movefile

Movefile編集

Movefileをエディタで開き、

vi Movefile

下記のように設定します。

local:
  vhost: "https://ygkb.jp.lan" # テスト機URL
  wordpress_path: "/var/www/html/wordpress" # テスト機物理パス

  database:
    name: "テスト機DB名"
    user: "テスト機DBユーザ名"
    password: "テスト機DBパスワード"
    host: "テスト機DBのホスト名/IPアドレス"

production:
  vhost: "https://ygkb.jp" # 本番機URL
  wordpress_path: "/home/ygkb/ygkb.jp/public_html" # 本番機物理パス

  database:
    name: "本番機DB名"
    user: "本番機DBユーザ名"
    password: "本番機DBパスワード"
    host: "本番機DBのホスト名/IPアドレス"

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

  ssh:
    host: "sv****.xserver.jp"
    user: "SSHユーザ名"
    port: 10022 # Port is optional
    rsync_options: "--verbose" # Additional rsync options, optional

localにはテスト機の情報を、production側には本番機(エックスサーバー)の情報を設定します。
幾つかのポイントを。

  • vhost欄を適切に設定しておくとデータコピー時に記事中のURLを自動置換してくれます。
  • インデント位置とインデント文字には超デリケートです。
    インデント文字は半角スペースでなければならないようで、気付かずタブ文字を入れていたため動かず、ハマりました。
  • 私なりの隠し味は exclude 節の .htaccess です。
    これが無いとエックスサーバー用の .htaccess がコピーされてしまい動作不良の原因になりました。これは各ホストで設定を分けて吸収するしか無いと思います。
  • sshがハマりました。
    • 私はサーバ毎に秘密鍵を使い分けているので、各接続先毎に「相手先サーバ名.pem」という名前で秘密鍵ファイルを置いています(却って危ないのかね?この運用)。
    • sshコマンド単体では接続できるのに、wordmove(rsync)では「Permission Denied」で動かないので何でかなあと悩んでいましたが、多分都度秘密鍵ファイルの場所を指定しなきゃいけない(rsync_optionsにssh -iオプションを付けなきゃいけない)んでしょうね。多分。
    • rsync_optionsにそういう指定ができるか自信が無かったので、秘密鍵ファイルの名前をデフォルト値(id_rsa)にしたら動くようになりました。

wordmove実行

wordmove pull --all

を実行すると、エックスサーバーの内容がローカルにコピーされます。

push】と【pull】を間違えると大事故になりますので要指差し確認ポイントですね。

お役に立てたらシェアお願いします(^O^)/
  • URLをコピーしました!
もくじ(押すと各章に飛ぶ)