以前、VCCWとWordMoveによるローカルと本番サーバー(エックスサーバー)を同期する方法をご紹介いたしました。
少し前にエックスサーバーからmixhostへサーバー移転を行ったのですが、mixhostがrsyncに対応していないということで、同期は諦めていました。ですが先日、mixhostがrsyncに対応したとのことで、早速WordMoveを試してみました。
大変お待たせいたしました。mixhostの全てのサーバーで「rsync」コマンドをご利用いただけるようになりました!是非ご活用下さい。
— mixhostクラウド型レンタルサーバー (@mixhostjp) 2017年2月28日
mixhostでWordMoveを行う
WordMoveを行う際の手順などは、以前ご紹介した方法とほとんど同じです。
異なる点と言えば、管理画面で公開鍵の登録をする場合、エックスサーバーの管理画面とは違うこと、Movefileの設定が違うことくらいなので、その2点に絞ってご紹介いたします。
mixhostの管理画面で公開鍵を登録(インポート)する
秘密鍵と公開鍵の生成の仕方は以前ご紹介した方法と同じなので、ここでは生成した公開鍵の登録(インポート)の方法をご紹介いたします。
まずはmixhostの管理画面からcPanelに入り、「セキュリティ」にある「SSHアクセス」をクリックします。
「SSHアクセス」から「キーのインポート」を選択します。
「キーのインポート」で下記の操作を行います。
- 生成したキーの名前を選択(規定は「id_dsa」)。
- 生成した公開鍵の内容を貼り付ける。
- 鍵を生成する時に入力したパスフレーズを入力。
- 「インポート」をクリック。
上記の操作を行うと、キーのインポートが成功する旨のメッセージが表示されます。
「SSHアクセス」に戻ると「公開キー」の一覧に登録した公開鍵のステータスなどが表示されます。
- 公開鍵の名前
- 認証ステータス
- 管理設定
登録したばかりの場合、「not authorized」となっているので、認証できるように該当する公開鍵の「管理」から「Authorized」をクリックします。
「Authorized」をクリックすると、登録したキーの認可がされる旨のメッセージが表示されます。
「SSHアクセス」に戻ると、認証ステータスが「authorized」になっていれば成功です。
Movefileの設定を行う
次のようなMovefileの「production」側をmixhost用に変更します。
local: vhost: "http://mixhost.dev" wordpress_path: "/var/www/html" # use an absolute path here database: name: "wordpress" user: "wordpress" password: "wordpress" host: "localhost" charset: "utf8" # paths: # you can customize wordpress internal paths # wp_content: "wp-content" # uploads: "wp-content/uploads" # plugins: "wp-content/plugins" # mu_plugins: "wp-content/mu-plugins" # themes: "wp-content/themes" # languages: "wp-content/languages" production: vhost: "http://example.com" wordpress_path: "/var/www/your_site" # use an absolute path here database: name: "database_name" user: "user" password: "password" host: "host" port: "3308" # Use just in case you have exotic server config mysqldump_options: "--max_allowed_packet=50MB" # Only available if using SSH exclude: - ".git/" - ".gitignore" - ".sass-cache/" - "bin/" - "tmp/*" - "Gemfile*" - "Movefile" - "wp-config.php" - "wp-content/*.sql" ssh: host: "host" user: "user" port: 22 rsync_options: --verbose
「.htaccess」が同期されるとまずい場合は、除外対象として「exclude」に「- “.htaccess”」を追記しておきましょう。
WordMoveでmixhostの本番サーバーとローカル環境をSSH接続で同期するには、以下の部分の変更が必要です。
production
production: vhost: "本番サイトURL" wordpress_path: "本番のWordPressが入っている場所" # use an absolute path here
注意点として、vhostに記述するURLの末尾には「/(スラッシュ)」を記述しないようにします。
- 正しい vhost: “http://example.com”
- 間違い vhost: “http://example.com/”
「wordpress_path」はmixhostの場合、「/home/ユーザー名/public_html/ドメイン」となります。「本番のWordPressが入っている場所」と記述していますが、正確には「wp-settings.php」があるパスを記述します。
「wordpress_path」はFTPソフトなどで該当するサイトに入ると表示されるので、そちらから確認したほうが分かりやすいと思います。
database
database: name: "本番データベース名" user: "本番データベースユーザー名" password: "本番データベースパスワード" host: "localhost" charset: "utf8"
「port: “3308”」と「mysqldump_options: “–max_allowed_packet=50MB”」は削除し、「charset: “utf8″」を追加しています。「database:」にはサーバー側にある「wp-config.php」に記述されている情報を記述します。
SSH
ssh: host: "xxx.mixhost.jp" //FTPSホスト名 user: "ユーザー名" port: 22 rsync_options: --verbose
mixhostの場合、「host」は「サーバー名(jp3など).mixhost.jp」、「user」は「ユーザー名」、「port」は「22」となります。「ssh:」、「host」、「user」、「port」、「rsync」は「#」を外します。
最終的なMovefile
最終的なMovefileは下記のようになります。
local: vhost: "http://mixhost.dev" wordpress_path: "/var/www/html" # use an absolute path here database: name: "wordpress" user: "wordpress" password: "wordpress" host: "localhost" charset: "utf8" # paths: # you can customize wordpress internal paths # wp_content: "wp-content" # uploads: "wp-content/uploads" # plugins: "wp-content/plugins" # mu_plugins: "wp-content/mu-plugins" # themes: "wp-content/themes" # languages: "wp-content/languages" production: vhost: "本番サイトURL" wordpress_path: "本番のWordPressが入っている場所" # use an absolute path here database: name: "本番データベース名" user: "本番データベースユーザー名" password: "本番データベースパスワード" host: "localhost" charset: "utf8" exclude: - ".git/" - ".gitignore" - ".sass-cache/" - "bin/" - "tmp/*" - "Gemfile*" - "Movefile" - "wp-config.php" - "wp-content/*.sql" - ".htaccess" ssh: host: "xxx.mixhost.jp" user: "ユーザー名" port: 22 rsync_options: --verbose
WordMoveコマンドを実行してサイトを表示する
WordMoveコマンドを実行して、本番サーバーとローカルを同期させます。VCCWがあるディレクトリまで移動した後、下記の順番でコマンドを入力します。
vagrant ssh cd /vagrant wordmove pull --all
コマンドが実行されると本番からファイルがローカルにダウンロードされます。ダウンロードが無事に成功すると、下記のように「Pulling Database」にチェックが入り、sqlがdumpされた旨のメッセージが表示されます。
ローカルで同期したサイトを表示する
ローカルで同期したサイトを表示するには、hostsに「192.168.33.10 vccw.dev」と記述した場合、フロント側は「http://vccw.dev(192.168.33.10)」、管理側は「http://vccw.dev(192.168.33.10)/wp-login.php」で表示します。私の場合はmixhost.devとしていますので、urlは「http://mixhost.dev」となります。
本当にローカルで表示されているかどうかの確認は、ソース内のURLを見るとわかります。
もしURLがローカルのものではなく本番のURLの場合、「Movefile」ファイルの設定を見直します。
はまったこと
今回のWordMoveで本番とローカルを同期する際にはまったことは、Movefileの「production」側にある「ssh」の「host」を「FTPホスト名(プライマリ ドメイン)」にしてしまい、ダウンロードすることができませんでした。エックスサーバーと違い、mixhostの場合はFTPSホスト名の「サーバー名(jp3など).mixhost.jp」などのようです。mixhostはクラウドサーバーなので、そのあたりが通常のレンタルサーバーと違うということなのか、ずっと間違った「host」を指定していました。他は以前行った手順や方法と大体同じなので、大きくはまるようなことはありませんでした。
まとめ
- mixhostの管理画面で公開鍵の登録(インポート)する。
- Movefileの設定を行う。
- WordMoveコマンドを実行してサイトを表示する。
- mixhostの場合、「production」側にある「ssh」の「host」はFTPSホスト名の「サーバー名(jp3など).mixhost.jp」。
WordMoveを利用すると、WordPressのデプロイが本当に手軽に出来るようになるのでおすすめです。mixhostでWordMoveをやってみたい、といった方の参考になればと思います。
コメント
mixhostを利用していて全く同じ手順でやっているのですが、wordmove pull –allをした際、pulling Databaseで下記のようなエラーが出てデータベースのインポートができません。
local | mysql –host=localhost –user=wordpress –password=wordpress –database=wordpress < /var/www/wordpress/wp-content/dump.sql
ERROR 1273 (HY000) at line 272: Unknown collation: 'utf8mb4_unicode_520_ci'
もし原因がお分かりになれば教えていただけると幸いです、よろしくお願いいたします。
田中様
当サイトへお越しいただきありがとうございます。
田中様のエラー内容を見ると、DBの文字コードでエラーになっているようです。
私がパッと思いつくこととしては、Movefileの設定で「database:」の項目に「charset: “utf8″」を記述することぐらいです。「database:」の項目に「charset: “utf8″」を指定するとうまくいくかもしれません。
ご返信ありがとうございます。
「database:」の項目に「charset: “utf8″」は入れているんですが、エラーになっちゃうんですよね。。「utf8mb4_unicode_520_ci」この文字コードがエラーを出すんですが、mysqlのバージョン違いとかが原因かなと考えております。もう少し調べてみたいと思います
。
お役に立てず申し訳ありません。解決できることを祈っています。