Tech & Tips WordPress

プレスマン版 KUSANAGI RoD を作ってみた

この記事は2年以上前ですので、内容が古い可能性があります

弊社では以前から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_DATABASEwordpress
ユーザー名pm-kusanagi-mariadb > environment > MYSQL_USERuser
パスワードpm-kusanagi-mariadb > environment > MYSQL_PASSWORDpassword
データベースのホスト名pm-kusanagi-php7 > linksmysql
テーブル接頭辞(無し)(無し、任意でOK)

そのまま「インストール実行」

サイト・アカウント設定はお好みで。

以上でセットアップは完了です。

ついでにWordPress 5.0がどんなもんか見てみる

ダッシュボードの概要ウィジェットを見ると、バージョンが「WordPress 5.0-beta1」となっています。また、テーマは「Twenty Nineteen」となっていました。今バージョンからコレがデフォルトテーマになったみたいですね。

Twenty Nineteenテーマのフロントでの見え方はこんな感じです。

投稿ページは噂の「Gutenberg」になっています。

まとめ

プレスマン版KUSANAGI RoDに関するものは全てDockerHubやGitHubで公開してますのでご自由にお使いください。
(といってもプライム・ストラテジー社さんから公開の停止を要求されたらそれまでですが。。。)

docker(プロジェクトテンプレート): GitHub
plugin(KUSANAGIプラグイン取得用イメージ): DockerHubGitHub
nginx(Nginxイメージ): DockerHubGitHub
php72(PHP7.2イメージ): DockerHubGitHub
php73(PHP7.3イメージ): DockerHubGitHub

この記事をシェアする:
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

私たちと一緒に働きませんか?

「プレスマン版 KUSANAGI RoD を作ってみた」はいかがでしたか?
株式会社プレスマンでは、 WordPressが大好きな方、仕事を通してさらにスキルを磨きたい方を募集しています。 まずは募集職種をご覧の上、お気軽にお問い合わせください。 あなたとお会いできるのを楽しみにしています。

採用情報を見る

-Tech & Tips, WordPress
-,

© 2024 PRESSMAN*Tech Powered by STINGER