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

宮﨑悟

この記事では、RoDで作成したWordPress環境をKUSANAGI環境にコピーする方法を詳しく解説します。KUSANAGI環境の準備からWordPress環境の作成、最終的な再現方法まで細かく指南します。また、Vagrantでの構築例や本番環境へのデプロイ方法も触れ、RoDとKUSANAGIを活用した開発とデプロイのサイクルの実現方法についても言及します。

前回は、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 RoDの使い方(8)(高速Dockerな話)KUSANAGI RoDの使い方(10)~高速Dockerの話(最終回)~ >>

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解