1. はじめに
WordPressのローカル環境とサーバー環境の同期、これが今まで厄介でした。
特にローカルのDBをサーバーにアップロードした後でURLをサーバー環境に合わせて変更する必要がありました。
Search-Replace-DBというツールを使って変更していますが、WordPressの一つのウィークポイントだと思っています。
今回、この問題を解消する可能性のあるツールの存在を知りました。
WordMoveです。
このツール、LinuxとOSXでの動作を保証していますがWindowsは対象外とのこと。
ところで、Windows上でのWordPress開発環境としてはVagrant + VCCW が有名ですよね。
この環境を作成するとWordMoveが即使えるのですが、残念なことにVagrant (正しくはVirtualBox) はWindowsのHyper-Vと共存できないんですね。
ということで今回はVCCWではなく、Windows10のWSL上にWordMoveをインスト-ルしてみました。
2. インストール
まずwindows10でWSL(Windows Subsystem for Linux)を有効にします。
WSLのOSはUbuntu 18.04
WSLの有効化とubuntuのインストールについては、ここでは省略します。
WordMoveのWSL環境へのインストール方法は以下サイトに手順が説明されてます。
今回はこれに従ってインストールしていきました。
How to install Wordmove on Windows 10 with Bash
2.1 Wordmove
以下コマンドを実行
sudo apt-get install rubygems-integration sudo apt-get install ruby-dev sudo apt-add-repository ppa:brightbox/ruby-ng sudo apt-get update sudo apt-get install build-essential sudo gem install wordmove
説明サイトの手順にはruby2.5のインストールがありましたが
ruby-devでインストールされたので不要でした。
2.2 その他
説明サイトには無かったけれど必要だった事
2.2.1 Mysql client
sudo apt-get install mysql-client
2.2.2 php
sudo apt install php7.2-cli sudo apt install php-mysql
2.2.3 wp-cli
ダウンロード
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
動作確認
php wp-cli.phar --info
パーミッションと名前の変更
chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp
3. 設定
3.1 WSL環境で秘密鍵の作成と設定
wordmoveのファイル転送にはssh またはftpの選択ができますが今回はsshの設定を行いました。
またsshは秘密鍵認証を使用しました。
3.1.1 秘密鍵、公開鍵ペアを作成する
ssh-keygen -t rsa
パスフレーズの設定は無し。
~/.sshにid_rsa と id_rsa.pub が作成されることを確認
3.1.2 公開鍵のサーバーへの設定
id_rsa.pubをサーバーにアップロードして~/.ssh/authorized_keysを作成、または追加する。
authorized_keysがサーバーに存在しない場合、新たに作成する
cat id_rsa.pub > ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
authorized_keysが既に存在する場合はファイルにキーを追加する
cat id_rsa.pub >> ~/.ssh/authorized_keys
3.2 movefile.yml ファイルの設定
3.2.1 movefile.ymlの作成
ローカルのwordpress環境に移動して以下コマンドを実行。movefile.ymlが作成される
wordmove init
3.2.2 movefile.ymlの更新
ここでの例はローカルサーバーはCドライブにxamppがインストールしてあり
wpフォルダにwordpressがインストールされていることを想定しています。
a) local
以下はmovefile.ymlのlocal部分の内容。
local: vhost: http://localhost/wp wordpress_path: /mnt/c/xampp/htdocs/wp database: name: db1 user: user1 password: pass1 host: 127.0.0.1
b) production
wordpress_pathの部分がリモートサーバーによって変化してくるのかもしれません。
ここでは実際に使用しているcoreserverを想定しています。
xxx の部分はuserになります。
以下はmovefile.ymlのproduction部分の内容。
production: vhost: https://www.sample.com wordpress_path: /virtual/xxx/public_html # use an absolute path here database: name: db2 user: db2 password: pass2 host: localhost
c) ssh
以下はmovefile.ymlのssh部分の内容。
ssh: host: xxx.remote-server.jp user: yyy rsync_options: '--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r'
4. 最終確認と実行
以下のコマンドを実行し結果が全てsuccessになればインストールは終了です。
wordmove doctor
後は実際にwordmoveのpush又はpullコマンドを実行して結果を確認します。
5. 最後に
wordmoveコマンドは定義ファイルの内容からURLを自動的に修正してくれます。
通常のシングルサイトならほぼ問題無いと思いますが、マルチサイトはサポートしていないため、同期した後でマルチサイト固有のDBの修正が必要になります。
このあたりについては、改めて記事にしたいと思っています。
以上、長くなりましたが終了です。
ここまで読んで頂きありがとうございます。