前回のおさらい
前回の記事『VultrにDocker環境を作成する』でDockerとDocker-Composeの環境を作りました。今回はDocker上で超高速Wordpress環境であるKUSANAGIを動かしてみたいと思います。
はじめに
VPC環境でKUSANAGI Runs on Docker(以下KUSANAGI RoD)を動かします。使用するVPCはVultrですが他のVPCでもきっと大丈夫です。Vultrの初期セットアップは前回の記事『VultrにDocker環境を作成する』を参照してください。
はまった点
KUSANAGI RoDのインストール方法をググるとKAGOYAの記事『第6回 KUSANAGI Runs on Docker を使ってみた』が出てくるのですが、KUSANAGI RoDのDockerコンテナを新しくしようとするとエラーでまくりで動きません(泣)
公式サイト眺めながらまともに動くようになるまでを記事にしました。
https://kusanagi.tokyo/cloud/kusanagi-runs-on-docker/
動作環境など
- Ubuntu 20.04
- docker 19.03.12
- docker-compose 1.26.2
DockerとDocker-Composeのインストールはこちらの記事『VultrにDocker環境を作成する』を参照してください。
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
$ docker --version
Docker version 19.03.12, build 48a66213fe
$ docker-compose --version
docker-compose version 1.26.2, build eefe0d31
想定している構成
複数のドメインでWordpressを運用したいのでHTTP/HTTPSの振り分けにリバプロとしてDockerコンテナのhttps-portalを使います。
https-portalを使うと簡単に複数サイトの振り分け+Let's Encrypt環境を作ることができますしお勧めです。
/home
└$USER
├https-portal ← リバプロサーバー(マルチサイト& Let’s Encrypt対応)
│ └docker-compose.yml
│
├kusanagi01 ← KUSANAGI Runs on Docker(WordPressサイト1つ目)
│ └docker-compose.yml
│
└kusanagi02 ← KUSANAGI Runs on Docker(WordPressサイト2つ目)
└docker-compose.yml
KUSANAGI RoDのインストール
KUSANAGI RoDのインストール前にKUSANAGIの公式サイトを眺めておきましょう。
以下のようにコマンドを実行すると、KUSANAGI RoDが$HOME/.kusanagi 以下にインストールされます。
$ curl https://raw.githubusercontent.com/prime-strategy/kusanagi-docker/master/install.sh |bash
インストールが終わったらkusanagiコマンドを実行できるよう.bashrcの最後にPATHを追加しておきます。
kusanagiというアカウントの場合は以下のような感じです。
PATH=/home/kusanagi/.kusanagi/bin:$PATH
KUSANAGI RoDのプロビジョニング
早速プロビジョニング(KUSANAGI RoDの環境を作成)してみます。$HOMEディレクトリでkusanagi-dockerコマンドを実行します。最低限、以下の引数だけは指定しておいたほうがあとあと楽です。
オプション | 環境変数 | 説明 |
---|---|---|
--fqdn(必須) | FQDN | 作成するサイトのドメイン名を指定します |
--wp | (なし) | WordPressの環境を構築します |
--wplang | ja | WordPressの言語を一つだけ指定します |
--admin-user | ユーザ名 | WordPressの管理者ユーザ名を指定します |
--admin-pass | パスワード | WordPressの管理者パスワードを指定します |
--admin-email | メールアドレス | WordPressの管理者メールアドレスを指定します |
--wp-title | タイトル | WordPressのタイトルを指定します |
--kusanagi-pass | KUSANAGIパスワード | WordPressでの更新で使用するkusanagiユーザのパスワードを指定します |
--dbname | DB名 | 接続するDB名を指定します |
--dbuser | DBユーザ名 | 接続するDBユーザ名を指定します |
--dbpass | DBパスワード | 接続するDBパスワードを指定します |
--http-port | HTTPポート番号 | ホストにポートフォワードするhttpポート番号を指定します |
--tls-port | HTTPSポート番号 | ホストにポートフォワードするhttpsポート番号を指定します |
$ kusanagi-docker provision --wp --wplang=ja --admin-user=ユーザ名 --admin-pass=パスワード
--admin-email=メールアドレス --wp-title=タイトル --kusanagi-pass=KUSANAGIパス --dbname=DB名 --dbuser=DBユーザ名
--dbpass=DBパスワード --http-port=8080 --tls-port=8443 --fqdn ドメイン名 インストールフォルダ名
Creating network "kusanagi01_default" with driver "bridge"
Creating volume "kusanagi01_kusanagi" with default driver
Creating volume "kusanagi01_database" with default driver
Creating kusanagi01_config ... done
Creating kusanagi01_httpd ... done
Creating kusanagi01_db ... done
Creating kusanagi01_ftp ... done
Creating kusanagi01_certbot ... done
Creating kusanagi01_php ... done
Waiting MySQL init process..
Provision WordPress
Downloading WordPress 5.4.2 (en_US)...
Warning: Failed to create directory '/.wp-cli/cache/': mkdir(): Permission denied.
md5 hash verified: efcd1980afe80f873dd6b51ef622bf87
Success: WordPress downloaded.
Success: Generated 'wp-config.php' file.
sendmail: can't connect to remote host (127.0.0.1): Connection refused
Success: WordPress installed successfully.
Warning: Failed to create directory '/.wp-cli/cache/': mkdir(): Permission denied.
Downloading translation from https://downloads.wordpress.org/translation/core/5.4.2/ja.zip...
Unpacking the update...
Installing the latest version...
Removing the old version of the translation...
Translation updated successfully.
Language 'ja' installed.
Success: Installed 1 of 1 languages.
Warning: Failed to create directory '/.wp-cli/cache/': mkdir(): Permission denied.
Downloading translation from https://downloads.wordpress.org/translation/plugin/akismet/4.1.5/ja.zip...
Unpacking the update...
Installing the latest version...
Removing the old version of the translation...
Translation updated successfully.
Language 'ja' for 'Akismet Anti-Spam' installed.
Warning: Language 'ja' not available.
Language 'ja' for 'Hello Dolly' not installed.
+---------+--------+---------------+
| name | locale | status |
+---------+--------+---------------+
| akismet | ja | installed |
| hello | ja | not available |
+---------+--------+---------------+
Success: Installed 1 of 2 languages (1 skipped).
Warning: Failed to create directory '/.wp-cli/cache/': mkdir(): Permission denied.
Downloading translation from https://downloads.wordpress.org/translation/theme/twentynineteen/1.5/ja.zip...
Unpacking the update...
Installing the latest version...
Removing the old version of the translation...
Translation updated successfully.
Language 'ja' for 'Twenty Nineteen' installed.
Downloading translation from https://downloads.wordpress.org/translation/theme/twentyseventeen/2.3/ja.zip...
Unpacking the update...
Installing the latest version...
Removing the old version of the translation...
Translation updated successfully.
Language 'ja' for 'Twenty Seventeen' installed.
Downloading translation from https://downloads.wordpress.org/translation/theme/twentytwenty/1.2/ja.zip...
Unpacking the update...
Installing the latest version...
Removing the old version of the translation...
Translation updated successfully.
Language 'ja' for 'Twenty Twenty' installed.
+-----------------+--------+-----------+
| name | locale | status |
+-----------------+--------+-----------+
| twentynineteen | ja | installed |
| twentyseventeen | ja | installed |
| twentytwenty | ja | installed |
+-----------------+--------+-----------+
Success: Installed 3 of 3 languages.
Success: Language activated.
INFO: Done.
$ ls -al $HOME/kusanagi01
total 64
drwxrwxr-x 7 kusanagi kusanagi 4096 Jul 26 17:52 .
drwxr-xr-x 8 kusanagi kusanagi 4096 Jul 24 00:45 ..
drwxr-xr-x 6 kusanagi kusanagi 4096 Jul 18 22:56 contents
-rw-rw-r-- 1 kusanagi kusanagi 2273 Jul 24 00:41 docker-compose.yml
drwxrwxr-x 8 kusanagi kusanagi 4096 Jul 18 22:56 .git
-rw-rw-r-- 1 kusanagi kusanagi 14 Jul 18 22:56 .gitignore
-rw-rw-r-- 1 kusanagi kusanagi 258 Jul 24 00:13 .kusanagi
-rw-rw-r-- 1 kusanagi kusanagi 100 Jul 18 22:54 .kusanagi.db
-rw-rw-r-- 1 kusanagi kusanagi 572 Jul 18 22:56 .kusanagi.httpd
-rw-rw-r-- 1 kusanagi kusanagi 46 Jul 18 22:54 .kusanagi.mail
-rw-rw-r-- 1 kusanagi kusanagi 259 Jul 18 22:54 .kusanagi.mysql
-rw-rw-r-- 1 kusanagi kusanagi 143 Jul 18 22:54 .kusanagi.php
-rw-rw-r-- 1 kusanagi kusanagi 194 Jul 18 22:54 .kusanagi.wp
drwxrwxr-x 2 kusanagi kusanagi 4096 Jul 18 22:54 wpcli
Dockerコンテナが5個起動してることが確認できます。
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------------
kusanagi01_certbot certbot --version Restarting
kusanagi01_config docker-entrypoint.sh wp -- ... Restarting
kusanagi01_db docker-entrypoint.sh mysqld Up
kusanagi01_ftp /bin/sh -c /docker-entrypo ... Up
kusanagi01_httpd /docker-entrypoint.sh /usr ... Up 0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp
kusanagi01_php /usr/local/bin/docker-entr ... Up
上記手順ではWordpressのポートを意図的に80/TCP、443/TCPから変更しています。
ブラウザでWordpressのログイン画面にアクセスできたらOKです。
http://FQDN:8080/wp-login.php
https://FQDN:8443/wp-login.php
長くなってきたのでいったんおしまい。
『VultrでKUSANAGI Runs on Dockerが動くまで(その2)』に続きます。