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

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

前回は、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カテゴリの最新記事