前回は、Docker-machineで展開したWordPress環境を、別ホストにコピーする方法を説明しました。今回は、RoDで作成したWordPress環境をKUSANAGI環境にコピーする方法を説明します。
WordPress環境コピー
RoDで作成したWordPress環境は、前回作成した環境を使用します。すでに、kusanagi-docker backup
でDB情報とcontentsディレクトリ以下のファイルが存在する状態です。これらのバックアップファイルと、一部の環境変数ファイルをtarでまとめてコピーします。以下のコマンドを実行し、wordpress.tar.bz2をコピーします。もちろん、git clone でコピーしても構いません。
$ cd wordpress
$ tar jcf wordpress.tar.bz2 .kusanagi .kusanagi.db .kusanagi.wp dbdump contents
KUSANAGI環境の準備
仮想マシンでKUSANAGI環境を用意します。各クラウドプロバイダが用意しているKUSANAGIイメージでも構いませんが、今回はKUSANAGI for Vagrantを使用します。
以下のように、初期設定を行い起動します。http接続確認に必要なため、ホストから接続できるよう プライベートIPアドレスを追加してください。今回は以下の行を追加しています。
$ vagrant init primestrategy/kusanagi
$ vi Vagrantfile
...
config.vm.network "private_network", ip: "192.168.33.10"
#
config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.memory = "4096"
vb.cpus = "2"
end
...
$ vagrant up
次に、wordpress.tar.bz2を仮想マシンにコピーします。ここでは、vagrand upload
を使用します。その後、sshで仮想環境にログインします。
$ vagrant upload wordpress.tar.bz2
Uploading wordpress.tar.bz2 to wordpress.tar.bz2
Upload has completed successfully!
Source: wordpress.tar.bz2
Destination: wordpress.tar.bz2
$ vagrant ssh
__ ____ _______ ___ _ _____ __________
/ //_/ / / / ___// | / | / / | / ____/ _/
/ ,< / / / /\__ \/ /| | / |/ / /| |/ / __ / /
/ /| / /_/ /___/ / ___ |/ /| / ___ / /_/ // /
/_/ |_\____//____/_/ |_/_/ |_/_/ |_\____/___/
Version 8.4.5-7, Powered by Prime Strategy.
[vagrant@kusanagi83 ~]$
WordPress環境作成
仮想マシン内で、RoDで作成した内容でWordPress環境を作成します。RoDで作成した環境設定ファイルがあるので、それを使用します。コピーした tar ファイルを展開し、.kusanagi ファイルをsource
コマンドで読み込むと、作成に必要な変数が設定されます。RoDではDBのrootユーザパスワードをDockerイメージ内で自動作成するため、環境変数に設定していません。そのため、DBROOTPASS変数を手動で設定します。
$ tar xf wordpress.tar.bz2
$ source .kusanagi
$ source .kusanagi.db
$ source .kusanagi.wp
$ DBROOTPASS=$(mkpasswd -l 20 -s 0)
以下のように、kusanagi init
コマンドと kusanagi provision
コマンドを使用して、WordPress環境を作成します。このとき使用している変数が、RoDの環境変数で指定した変数となります。
$ sudo kusanagi init --tz tokyo --lang en --keyboard en --passwd "$KUSANAGIPASS" --nophrase \
--dbrootpass "$DBROOTPASS" --nginx --php7 --dbsystem mariadb --ruby24
$ sudo kusanagi provision --wordpress --wplang ja --fqdn $FQDN --no-email \
--dbname $DBNAME --dbuser $DBUSER --dbpass "$DBPASS" $PROFILE
contentsディレクトリ以下のファイルを、上記で作成したWordPress環境へ上書きコピーします。その後、ファイルのオーナー情報を設定し直します。
$ sudo cp -pr contents/* $BASEDIR
$ sudo chown -R kusanagi:www $BASEDIR
$ sudo chown -R httpd $DOCUMENTROOT/wp-content/uploads
最後に、wp
コマンドを使用してDBデータをリストアします。
$ sudo -u kusanagi -- /usr/local/bin/wp --path=$DOCUMENTROOT db import - < ./dbdump
以上で、RoDで作成したWordPress環境が再現されました。では、Vagrantのホスト側からcurl で確認します。
$ curl -sH 'Host: wp.local' http://192.168.33.10/
<!DOCTYPE html>
<html class="no-js" lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<link rel="profile" href="https://gmpg.org/xfn/11">
<title>"WordPress in docker-machine" – Just another WordPress site</title>
<link rel='dns-prefetch' href='//s.w.org' />
Vagrantで構築する場合は、Vagrantfile に以下の文を追記すると、vagrant up
時に自動的にWordPress環境を構築可能です。
config.vm.provision "file", source: "./wordpress.tar.bz2", destination: "/home/vagrant/wordpress.tar.bz2"
config.vm.provision "shell", inline: <<-SHELL
yum update -y
tar xf wordpress.tar.bz2
source .kusanagi
source .kusanagi.db
source .kusanagi.wp
DBROOTPASS=$(mkpasswd -l 20 -s 0)
kusanagi init --tz tokyo --lang en --keyboard en --passwd "$KUSANAGIPASS" \
--nophrase --dbrootpass "$DBROOTPASS" --nginx --php7 --dbsystem mariadb --ruby24
kusanagi provision --wordpress --wplang ja --fqdn $FQDN --no-email \
--dbname $DBNAME --dbuser $DBUSER --dbpass "$DBPASS" $PROFILE
cp -pr contents/* $BASEDIR
chown -R kusanagi:www $BASEDIR
chown -R httpd $DOCUMENTROOT/wp-content/uploads
sudo -u kusanagi -- /usr/local/bin/wp --path=$DOCUMENTROOT db import - < ./dbdump
SHELL
終わりに
今回は、RoDで作成したWordPress環境をKUSANAGI環境にコピーする方法を説明しました。KUSANAGI と KUSANAGI RoD はいくつかの違いがありますが、生成されるWordPressの内容(プラグイン、テーマ、設定)はどちらでも使用可能です。今回はVagrantへのコピーでしたが、もちろん本番環境へも同様にデプロイできます。
現在RoDを使用することで、以下のような開発とデプロイのサイクルを行うことができます。
- RoD環境でWordPressなどの環境構築・テストを行う
- ステージング用のRoD環境を作成し、本番用のテストデータを導入したり移行手順を確認する
- 本番環境の切り替えを行う
次回は、KUSANAGI RoDを本番環境で使う際のノウハウについて考えます。次回をお楽しみに。