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: "http://ygkb.xsrv.jp/ygkb-old.lan" # テスト機URL wordpress_path: "/var/www/html/wordpress" # テスト機物理パス database: name: "テスト機DB名" user: "テスト機DBユーザ名" password: "テスト機DBパスワード" host: "テスト機DBのホスト名/IPアドレス" production: vhost: "http://ygkb.xsrv.jp/ygkb-old" # 本番機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
】を間違えると大事故になりますので要指差し確認ポイントですね。