宮崎悟氏のコラム「KUSANAGI RoDの使い方(9)」(高速Dockerな話)

宮崎悟氏のコラム「KUSANAGI RoDの使い方(9)」(高速Dockerな話)

前回は、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>&quot;WordPress in docker-machine&quot; &#8211; 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を本番環境で使う際のノウハウについて考えます。次回をお楽しみに。


KUSANAGIカテゴリの最新記事