http://ygkb.xsrv.jp/ygkb-old/2246/
を参照ください。
前々回はKUSANAGIをセットアップして、WordPressが動く所までこぎ着けました。
前回はSSHを設定してリモート管理できるようにしました。
本記事はKUSANAGIへwordmoveをインストールする手順です。
(もしUbuntuへwordmoveをインストールする手順をお探しでしたら、こちらを参照ください)
新規ブログであれば後は記事を追加してゆくのみですが、
- 旧サーバーのブログを新サーバーに移行したい
- 正サーバーと副サーバーでデータを同期させたい
こういった場合には記事データのコピーが必要です。
移行の方法には色々あると思いますが、私の場合はcronで正サーバー(エックスサーバー)を副サーバー(ConoHa+KUSANAGI)に同期を取りたかったのでwordmoveを使いました。
wordmoveのインストール
作業ユーザからroot
になる
[fuka@163-44-169-228 ~]$ su
rubygems
をインストール
wordmove
をインストールするためには先ずrubygems
というパッケージ管理ツールをインストールしなければなりません。
OSのツールは yum
、rubyスクリプトは rubygems
がインストーラーという対応関係です。
ドザ的解釈ではSetup.exe
とChocolatey
ですかね。
[root@163-44-169-228 fuka]# yum install rubygems 読み込んだプラグイン:fastestmirror base | 3.6 kB 00:00:00 : インストール: rubygems.noarch 0:2.0.14-25.el7_1 依存性関連をインストールしました: ruby.x86_64 0:2.0.0.598-25.el7_1 ruby-irb.noarch 0:2.0.0.598-25.el7_1 ruby-libs.x86_64 0:2.0.0.598-25.el7_1 rubygem-bigdecimal.x86_64 0:1.2.0-25.el7_1 rubygem-io-console.x86_64 0:0.4.2-25.el7_1 rubygem-json.x86_64 0:1.7.7-25.el7_1 rubygem-psych.x86_64 0:2.0.0-25.el7_1 rubygem-rdoc.noarch 0:4.0.0-25.el7_1 完了しました!
wordmoveをインストール
rubygemsをインストールするとgem
コマンドが使えるようになります。gem
を使ってwordmove
をインストールします。
[root@163-44-169-228 fuka]# gem install wordmove Fetching: colorize-0.7.7.gem : Installing ri documentation for wordmove-2.0.0 12 gems installed
Linuxは便利ですね。2つコマンドを打っただけで入っちゃいました。
以後、wordmoveというコマンドが使えるようになります。
wordmove設定
root
からkusanagi
になる
WordPressの各種ファイルはkusanagi
が所有者になっています。root
でwordmove
を実行するとファイルの所有者がrootになります。
権限不足などトラブルの元になるような気がするのでkusanagi
に代わります。
[root@163-44-169-228 fuka]# su kusanagi
DocumentRootに移動
WordPressの設置ディレクトリに移動します。
[kusanagi@163-44-169-228 ~]$ cd ~/kusanagi_test/DocumentRoot/
Movefile作成
wordmove init
を実行すると、DocumentRoot直下にMovefile
というテキスト形式の設定ファイルが出来ます。wordmoveはこの設定を読み取って動作します。
[kusanagi@163-44-169-228 DocumentRoot]$ wordmove init create Movefile
Movefile編集
Movefileをエディタで開き、
[kusanagi@163-44-169-228 DocumentRoot]$ vi Movefile
下記のように設定します。
local: vhost: "http://163.44.169.228" wordpress_path: "/home/kusanagi/kusanagi_test/DocumentRoot" # use an absolute path here database: name: "DB名" user: "DBユーザ名" password: "DBパスワード" host: "localhost" production: vhost: "http://ygkb.xsrv.jp/ygkb-old" wordpress_path: "/home/ygkb/ygkb.jp/public_html" # use an absolute path here database: name: "DB名" user: "DBユーザ名" password: "DBパスワード" host: "mysql****.xserver.jp" 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にはConoHa側の情報を、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
を実行すると、エックスサーバーの内容がConoHaにコピーされます。push
とpull
を間違えると大事故になりますので要指差し確認ポイントですね。
もう一息…だが…
やったあ!完成だあ!
…と思いきや、管理画面を開くとCAPTCHAが表示されないのでログインできない…。
どうも「SiteGuard WP Plugin」とKUSANAGIの相性が良くないようです。
SiteGuard用テンポラリディレクトリに何らかの原因で画像ファイルが作られていません。
テンポラリ用ディレクトリにグループ書き込み権限を与えると表示されるようになります。
関連記事
こちらの記事では「ConoHaにKUSANAGIをインストールしてWordPressサーバーを公開する」までを扱っています。

もし、Ubuntuへwordmoveをインストールする手順をお探しでしたら、この記事を参照ください。

この他にもWeb開発に関するトピックはこちらに集めています。
