mixhostでWordMoveを試してみた

技術情報

以前、VCCWとWordMoveによるローカルと本番サーバー(エックスサーバー)を同期する方法をご紹介いたしました。

VCCWとWordMoveで本番サーバー(エックスサーバー)とローカル環境を同期してみた
welaika/wordmove: Capistrano for Wordpress 前回はVagrantとVCCWでWindows10のローカルにWordPressの環境を構築する方法をご紹介いたしました。 今回はVCCWとWordMov...

少し前にエックスサーバーからmixhostへサーバー移転を行ったのですが、mixhostがrsyncに対応していないということで、同期は諦めていました。ですが先日、mixhostがrsyncに対応したとのことで、早速WordMoveを試してみました。

mixhostでWordMoveを行う

WordMoveを行う際の手順などは、以前ご紹介した方法とほとんど同じです。

VCCWとWordMoveで本番サーバー(エックスサーバー)とローカル環境を同期してみた
welaika/wordmove: Capistrano for Wordpress 前回はVagrantとVCCWでWindows10のローカルにWordPressの環境を構築する方法をご紹介いたしました。 今回はVCCWとWordMov...

異なる点と言えば、管理画面で公開鍵の登録をする場合、エックスサーバーの管理画面とは違うこと、Movefileの設定が違うことくらいなので、その2点に絞ってご紹介いたします。

mixhostの管理画面で公開鍵を登録(インポート)する

秘密鍵と公開鍵の生成の仕方は以前ご紹介した方法と同じなので、ここでは生成した公開鍵の登録(インポート)の方法をご紹介いたします。

まずはmixhostの管理画面からcPanelに入り、「セキュリティ」にある「SSHアクセス」をクリックします。

cPanel 「セキュリティ」にある「SSHアクセス」をクリック
「セキュリティ」にある「SSHアクセス」をクリック

「SSHアクセス」から「キーのインポート」を選択します。

cPanel 「キーのインポート」を選択
「キーのインポート」を選択

「キーのインポート」で下記の操作を行います。

cPanel 「キーのインポート」で操作を行う
「キーのインポート」で操作を行う
  1. 生成したキーの名前を選択(規定は「id_dsa」)。
  2. 生成した公開鍵の内容を貼り付ける。
  3. 鍵を生成する時に入力したパスフレーズを入力。
  4. 「インポート」をクリック。

上記の操作を行うと、キーのインポートが成功する旨のメッセージが表示されます。

cPanel キーのインポートが成功する旨のメッセージが表示
キーのインポートが成功する旨のメッセージが表示

「SSHアクセス」に戻ると「公開キー」の一覧に登録した公開鍵のステータスなどが表示されます。

cPanel 登録した公開鍵のステータスなどが表示
登録した公開鍵のステータスなどが表示
  1. 公開鍵の名前
  2. 認証ステータス
  3. 管理設定

登録したばかりの場合、「not authorized」となっているので、認証できるように該当する公開鍵の「管理」から「Authorized」をクリックします。

cPanel 「Authorized」をクリック
「Authorized」をクリック

「Authorized」をクリックすると、登録したキーの認可がされる旨のメッセージが表示されます。

cPanel 登録したキーの認可がされる旨のメッセージが表示
登録したキーの認可がされる旨のメッセージが表示

「SSHアクセス」に戻ると、認証ステータスが「authorized」になっていれば成功です。

cPanel 認証ステータスが「authorized」になっていれば成功
認証ステータスが「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ソフトなどで該当するサイトに入ると表示されるので、そちらから確認したほうが分かりやすいと思います。

FTPソフトで該当するサイトに入る
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」となります。

WordPressのフロント画面が表示
WordPressのフロント画面が表示

本当にローカルで表示されているかどうかの確認は、ソース内のURLを見るとわかります。

ソース内のURLを見る
ソース内の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をやってみたい、といった方の参考になればと思います。

スポンサーリンク
技術情報
スポンサーリンク
シェアする
ボヘミアンをフォローする
この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
スポンサーリンク
PC ウェブログ

コメント

  1. 田中 より:

    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のバージョン違いとかが原因かなと考えております。もう少し調べてみたいと思います