KUSANAGI RoDの使い方(6)~高速Dockerの話~

宮﨑悟

「KUSANAGI RoD」を使用しWordPress以外のCMSのprovision方法について説明します。具体的には環境構築方法としてConcrete5とDrupal、そしてLAMP環境の設定手順をもとにしたプロビジョニング方法を紹介します。また、kusanagi-dockerのアップデート方法やKUSANAGI用Dockerイメージのバージョン更新方法も解説します。次回は、WordPressの開発方法や、実環境への展開方法についてご紹介いたします。

前回は、RoDにおけるconfigコンテナの役割について説明しました。今回はWordPress以外の、Concrete5、Drupal、LAMP環境のprovision について説明します。

KUSANAGI RoDのアップデート方法

この連載を起稿した際にわかったのですが、Concreate5のバージョンアップため最初のprovisionの方法ではうまく行かないことがわかりました。2020/04/01現在のkusanagi-docker のバージョンは、1.0.6です。

いくつかのプルリクエストにより、指定されたバージョンのみをインストールするようにインストーラ自体も改造されています。ここで、KUSANAGI RoDのアップデート方法を紹介します。

kusanagi-dockerをアップデートするには、以下のコマンドを実行します。

$ $HOME/.kusanagi/install.sh

これで、kusanagi-docker が最新の状態になります。これで更新されない場合は、$HOME/.kusanagi/ 以下のファイルを変更された可能性があります。その時は、以下のようにコマンド実行してください。

$ cd $HOME/.kusanagi
$ git stash
$ ./install.sh

kusanagi-docker をアップデートする際に、日々アップデートしているKUSANAGI用Dockerイメージのバージョンも同時にアップデートします。

KUSANAGI用Dockerイメージのバージョンだけをアップデートするには、以下のコマンドを実行します。

$ $HOME/.kusanagi/update_version.sh

Concrete5 のprovision

Concrete5は、PHP環境で動作するCMSです。2020/04/01現在の最新版は 8.5.2で、PHP 7.2/7.3/7.4 で動作します。KUSANAGI RoD で Concrete5環境をprovisionするには、以下のコマンドを実行します。

$ kusanagi-docker provision --c5 --fqdn con5.local con5
Creating network "con5_default" with driver "bridge"
Creating volume "con5_kusanagi" with default driver
Creating volume "con5_database" with default driver
Creating con5_config  ... done
Creating con5_httpd  ... done
Creating con5_certbot ... done
Creating con5_php     ... done
Creating con5_db      ... done
Provision Concrete5
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/community/x86_64/APKINDEX.tar.gz
(1/3) Installing pcre2 (10.34-r1)
(2/3) Installing git (2.24.1-r0)
(3/3) Installing patch (2.7.6-r6)
Executing busybox-1.31.1-r9.trigger
OK: 46 MiB in 73 packages
Creating a "concrete5/composer" project at "/home/kusanagi/con5"
Installing concrete5/composer (v1.1.9)
  - Installing concrete5/composer (v1.1.9): Downloading (100%)         
Created project in /home/kusanagi/con5
Loading composer repositories with package information
Updating dependencies (including require-dev)
    中略
ocramius/package-versions: Generating version class...
ocramius/package-versions: ...done generating version class
22 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
Gathering patches from concrete5/dependency-patches (extra.patches).
Applying patch concrete5/dependency-patches/Fix minus in regular expressions to sunra/php-simple-html-dom-parser... done.
Applying patch concrete5/dependency-patches/Fix continue switch in FileGenerator and MethodReflection to zendframework/zend-code... done.
Applying patch concrete5/dependency-patches/Remove support for the X-Original-Url and X-Rewrite-Url headers to zendframework/zend-http... done.
Applying patch concrete5/dependency-patches/Fix idn_to_ascii deprecation warning to zendframework/zend-mail... done.
Applying patch concrete5/dependency-patches/Fix ArrayObject::unserialize() to zendframework/zend-stdlib... done.

INFO: Done.

Concrete5はcomposer経由でインストールします。また、ダウンロードしたパッケージにいくつかパッチを適用しているため、Warningメッセージが出力されていますが、Web UIからのインストールが可能です。

hostsファイルなどで、provisionを実行したホストのIPアドレスに、con5.local のエントリを追加します。そして、ブラウザで http://con5.local を開き、インストール画面に進みます。

日本語を選び「→」を押すと、環境チェック画面が表示されます。何の問題も出ていないはずですので、下部のインストールを押します。次のサイト情報では、管理者ユーザ情報を設定します。

更に下にスクロールすると、データベース情報を設定します。

ここで入力する内容は、con5/.kusanagi.db の内容を入力してください。今回はDB情報を自動生成したので、以下の結果から入力しています。

$ cat con5/.kusanagi.db
DBLIB=/var/run/mysqld
DBHOST=localhost
DBNAME=fjM7xum0Zv
DBUSER=xmfTXhohjW
DBPASS=4W3yNWD65b05ytVCak7bX%D

しばらくすると、Concrete5のインストールが完了します。

Drupal8のprovision

Drupalは、PHPを使用したCMSです。2020/04/01 時点の最新版は8.7.13です。最新版では、PHP 7.4にも対応していると書いています。しかし、実際にはインストール画面でエラーが出てしまうため、念の為PHP 7.3を使用します。kusanagi-docker 1.0.6では、使用するPHPのバージョンを 7.2/7.3/7.4 と指定でき、それぞれの最新版を使用できます。

Drupal8を使用する際は、以下のようにコマンド実行してください。

$ kusanagi-docker provision --drupal8 --php73 --fqdn drupal8.local drupal8
Creating network "drupal8_default" with driver "bridge"
Creating volume "drupal8_kusanagi" with default driver
Creating volume "drupal8_database" with default driver
Creating drupal8_config  ... done
Creating drupal8_httpd  ... done
Creating drupal8_db      ... done
Creating drupal8_certbot ... done
Creating drupal8_php     ... done
Provision Drupal
Connecting to ftp.drupal.org (151.101.230.217:443)
drupal-8.7.13.tar.gz 100% |***************************************************************************| 17.0M  0:00:00 ETA

Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
INFO: Done.

Concrete5と同様に、drupal8.local をhostsファイルに追加し、ブラウザで http://drupal8.local を開きインストール画面に進みます。言語やプロフィールを設定します。

データベースの設定は、drupal8/.kusanagi.db の内容を入力します。

$ cat drupal8/.kusanagi.db
DBLIB=/var/run/mysqld
DBHOST=localhost
DBNAME=jNX7JHJCwW
DBUSER=EmtFdWm43C
DBPASS=ce6KnlwZzCzUJoh3LiNdTZw

サイトの環境設定を入力すれば、Drupal8のサイトが構築できます。

Drupal7のprovision

Drupal7 はDrupal8の前のメジャーバージョンです。最新版は7.69です。Drupal8と同様にDrupal7でもPHP 7.3を使用してインストールします。

$ kusanagi-docker provision --php73 --drupal7 --fqdn drupal7.local drupal7
Creating network "drupal7_default" with driver "bridge"
Creating volume "drupal7_kusanagi" with default driver
Creating volume "drupal7_database" with default driver
Creating drupal7_httpd  ... done
Creating drupal7_config ... done
Creating drupal7_certbot ... done
Creating drupal7_db      ... done
Creating drupal7_php     ... done
Provision Drupal
Connecting to ftp.drupal.org (151.101.230.217:443)
drupal-7.69.tar.gz   100% |***************************************************************************| 3236k  0:00:00 ETA
Connecting to ftp.drupal.org (151.101.230.217:443)
l10n_update-7.x-2.2. 100% |***************************************************************************| 80889  0:00:00 ETA
 Waiting HTTPD init process......
INFO: Done.    

画面に入力する内容はDrupal8 と違いは有りませんが、画面デザインが異なることに注意してください。

LAMP環境のprovision

LAMP環境は、PHPとDBの作成のみを行います。ダミーのPHPファイルを置いているため、curlにより応答を確認できます。

$ kusanagi-docker provision --lamp --fqdn lamp.local lamp
Creating network "lamp_default" with driver "bridge"
Creating volume "lamp_kusanagi" with default driver
Creating volume "lamp_database" with default driver
Creating lamp_config ... done
Creating lamp_httpd  ... done
Creating lamp_certbot ... done
Creating lamp_php     ... done
Creating lamp_db      ... done

INFO: Done.
$ curl -vH 'Host: lamp.local' http://localhost/
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> Host: lamp.local
> User-Agent: curl/7.58.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: nginx
< Date: Sun, 05 Apr 2020 11:47:06 GMT
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Powered-By: PHP/7.4.4
< X-F-Cache: BYPASS
< X-Signature: KUSANAGI
< 
hello world!
* Connection #0 to host localhost left intact

構築後は、自分でアプリケーションの構築をしてください。

  • phpコンテナ内のcomposerを使う
  • 既存のLAMP環境で動作するアプリケーションをcontents に展開して、kusanagi-docker push を実行する

終わりに

今回はWordPress以外の、Concrete5、Drupal、LAMP環境のprovision について説明しました。次回は、KUSANAGI RoDを使用したWordPress開発方法や、実環境展開について説明します。次回をお楽しみに。

<< KUSANAGI RoDの使い方(4) (高速Dockerの話)KUSANAGI RoDの使い方(7)~高速Dockerの話~ >>

関連記事

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

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

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

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

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