Ubuntu Server 16.04にwordmoveをインストールしたときの記録。
エックスサーバーにある本番サイトを、自宅内のUbuntu Server 16.04にwordmoveでバックアップを取りました。
以前KUSANAGIとエックスサーバー間でもやったことあるんですが、ほとんど変わりません。
再現性の高さはCUIならではですね。
もくじ(押すと各章に飛ぶ)
wordmoveのインストール
rubygemsをインストール
sudo apt install rubygemswordmoveをインストールするためには先ず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 wordmoverubygemsをインストールすると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/wordpressMovefile作成
wordmove initを実行すると、カレントディレクトリにMovefileというテキスト形式の設定ファイルが出来ます。
wordmoveはこの設定を読み取って動作します。
fuka@ygkb:/var/www/html/wordpress$ wordmove init
create MovefileMovefile編集
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】を間違えると大事故になりますので要指差し確認ポイントですね。
