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
】を間違えると大事故になりますので要指差し確認ポイントですね。