弊社では以前からKUSANAGI RoD (Runs on Docker)を利用していました。しかしNginxのバージョンが1.10系と古く、PHPも今年でサポートが終了する7.0系であるため、やむを得ず通常のNginxとPHPのDockerイメージを使用していました。そこで、公式のKUSANAGI RoDを参考に独自のイメージを作成してみました。本記事では紹介を兼ねてWordPress 5.0(beta1)+PHP 7.3.0(RC4)の環境構築を行っていきます。
Dockerコンテナのセットアップ
とは言ってもやることはpressmaninc/pm-kusanagi-dockerのREADME.mdの内容そのままです。予め、git
,wget
,docker
を使えるようにしておいてください。言わずもがなですがディレクトリ等は適宜読み替えてください。
まずはGitHubからpressmaninc/pm-kusanagi-dockerをクローンします。ここではホームディレクトリにmy_wp_proj
として作成します。
$ cd ~
$ git clone https://github.com/pressmaninc/pm-kusanagi-docker.git my_wp_proj
中のdocker-compose.ymlをご覧いただければ分かるかと思いますが、独自ビルドしたNginxイメージとPHP7.2イメージを使ってます。できるだけ本家に近づけるよう、brotoliやmozjpegを予め含めたものとなっています。
次にWordPress公式サイトからWordPress 5.0-beta1をダウンロードして展開します。
$ cd ~/my_wp_proj/kusanagi
$ wget https://wordpress.org/wordpress-5.0-beta1.tar.gz
$ tar -xzf wordpress-5.0-beta1.tar.gz -C DocumentRoot/ --strip=1
続いてKUSANAGIプラグインを取得します。KUSANAGIプラグインはWeb上ではなくRPMパッケージで配布されているため、取得するにはひと手間かかります。そこで独自にKUSANAGIプラグインを取得するDockerイメージも作成しました。詳細はDockerHubのページおよびGitHubのページを御覧ください。今回はこちらを使用します。
$ mkdir ~/my_wp_proj/kusanagi/DocumentRoot/wp-content/mu-plugins
$ cd ~/my_wp_proj/kusanagi/DocumentRoot/wp-content/mu-plugins
$ docker run --rm -v $(pwd):/mu-plugins pressmaninc/pm-kusanagi-plugin
内部で毎回yum update
を行っているので少し時間がかかります。
続いてdocker-compose.yml
を書き換えてPHP 7.3.0(RC4)を使用するようにします。pressmaninc/pm-kusanagi-dockerではデフォルトでPHP7.2を使用する設定になっていますが、今回はPHP 7.3.0(RC4)を試してみたいのでpressmaninc/pm-kusanagi-php73を使用するよう、docker-compose.yml
を書き換えます。
$ cd ~/my_wp_proj
$ sed -i 's/pm-kusanagi-php72/pm-kusanagi-php73:7.3.0RC4/' docker-compose.yml
上記はGUN sedの場合の書き方ですので、BSD sed等を使用する場合はご注意ください。
<追記1>
Linux環境上だとパーミッション関連のエラーが出ることがあります。
その場合はホスト側のDocumentRoot及びWordPressファイルの所有者とコンテナ側のPHP実行ユーザのUIDとGIDをあわせる必要があります。
まずは下記のコマンドでDocumentRoot及び配下のファイルの所有者となっているホスト側のユーザUIDとGIDを調べます。
$ ls -l ~/my_wp_proj/kusanagi | grep DocumentRoot # <- ホスト側で実行
drwxrwxr-x 5 ec2-user ec2-user 4096 11月 7 07:35 DocumentRoot
$ id ec2-user
uid=500(ec2-user) gid=1000(ec2-user) ... # <- このuidとgidを控えておく
そして、docker-compose.yml
ファイルのpm-kusanagi-php7
セクションに追記します。
pm-kusanagi-php7:
container_name: pm-kusanagi-php7
image: pressmaninc/pm-kusanagi-php73:7.3.0RC4
links:
- pm-kusanagi-mariadb:mysql
volumes_from:
- pm-kusanagi-data
# ↓commandを追記。「-u 500」の箇所と「-g 1000」の箇所は上のコマンドで確認したuidとgidにします。
command: sh -c 'apk add shadow; usermod -o -u 500 www-data; groupmod -o -g 1000 www-data; php-fpm'
<追記1ここまで>
書き換えが終わったらコンテナを起動してみてください。
$ cd ~/my_wp_proj
$ docker-compose up -d
起動したらhttp://localhostにアクセスしてみてください。WordPressのセットアップが表示されるかと思います。
WordPressのセットアップ
ココからはブラウザからWordPress自体の設定を行っていきます。
まずは言語の選択です。お好きなものを選択してください。ここでは日本語を選択したものとして説明していきます。
次の画面ではそのまま「さあ、始めましょう」をクリックします。
<追記2>
日本語を選択したにも関わらず、英語表記になっている場合は上の追記1のとおりパーミッションエラーが発生している可能性があります。
一旦docker-compose down
をしてコンテナを停止した後、追記1の対処を実施してから再度実施してみてください。
<追記2ここまで>
データベースの設定を行う画面ではdocker-compose.ymlで記述した内容を入力する必要があります。デフォルトのままであれば下記の通りです。
項目名 | docker-compose.yml項目名 | docker-compose.yml設定値(デフォルト) |
---|---|---|
データベース名 | pm-kusanagi-mariadb > environment > MYSQL_DATABASE | wordpress |
ユーザー名 | pm-kusanagi-mariadb > environment > MYSQL_USER | user |
パスワード | pm-kusanagi-mariadb > environment > MYSQL_PASSWORD | password |
データベースのホスト名 | pm-kusanagi-php7 > links | mysql |
テーブル接頭辞 | (無し) | (無し、任意でOK) |
そのまま「インストール実行」
サイト・アカウント設定はお好みで。
以上でセットアップは完了です。
ついでにWordPress 5.0がどんなもんか見てみる
ダッシュボードの概要ウィジェットを見ると、バージョンが「WordPress 5.0-beta1」となっています。また、テーマは「Twenty Nineteen」となっていました。今バージョンからコレがデフォルトテーマになったみたいですね。
Twenty Nineteenテーマのフロントでの見え方はこんな感じです。
投稿ページは噂の「Gutenberg」になっています。
まとめ
プレスマン版KUSANAGI RoDに関するものは全てDockerHubやGitHubで公開してますのでご自由にお使いください。
(といってもプライム・ストラテジー社さんから公開の停止を要求されたらそれまでですが。。。)
docker(プロジェクトテンプレート): GitHub
plugin(KUSANAGIプラグイン取得用イメージ): DockerHub、 GitHub
nginx(Nginxイメージ): DockerHub、 GitHub
php72(PHP7.2イメージ): DockerHub、 GitHub
php73(PHP7.3イメージ): DockerHub、 GitHub