KUSANAGI 9 の環境で Bedrock を使用する

片倉洋一

今回は KUSANAGI 9 の環境で Bedrock という WordPress のボイラープレートを導入する方法を説明します。

Bedrock とは

公式サイト:
Bedrock | Modern WordPress Boilerplate | Roots

GitHub より

Bedrock is a WordPress boilerplate for developers that want to manage their projects with Git and Composer.

GitHub – roots/bedrock: WordPress boilerplate with Composer, easier configuration, and an improved folder structure

Bedrock とは Git と Composer を使用してより効率的な WordPress の開発環境を提供するボイラープレートです。

  • Composer :PHP 用のパッケージ管理システム(他の言語の例としては pip や npm など)。
  • ボイラープレート:形を変えることなくそのまま使える定型文を指すが、現在ではテンプレートの概念も包括している。

もちろん、通常通り WordPress を展開しても利用に何ら支障はありません。
ではなぜ、 Bedrock を導入するのでしょうか。

それは、以下のような利点があるためです。

  • 開発に適したフォルダー構成になっている(ドキュメントルートとプラグインやテーマのディレクトリが分離されているなど)
  • プラグインやテーマの導入に Composer が使用できる
  • Dotenv(.env)を使用して環境変数の定義ができる
  • フォルダー構成や、Dotenvの利用などセキュリティが強化される

などが挙げられます。

それでは、KUSANAGI 9 の環境に Bedrock を導入する手順を見ていきましょう。

Bedrock をインストールするための環境整備

まずは、任意の環境(AWS, Azure, GCP, さくら, XServer, etc…)で KUSANAGI 9 の環境を起動します。

ご利用可能なプラットフォーム – 超高速CMS実行環境 KUSANAGI

KUSANAGI 9 の環境を起動できたら ssh で対象の VM に接続します。
その後、 su コマンドを使用してユーザーを root ユーザーにします。

  • 最初に接続したユーザーが root ユーザーであれば不要です
$ sudo su -

次に、 dnf upgrade を使用して環境を最新化します。

# dnf upgrade -y

続いて、 KUSANAGI の初期化とプロビジョニングを行います。
途中で FQDN を指定するところがありますので、この段階までに FQDN を取得して VM と紐づけておいてください。

まずは kusanagi init コマンドで KUSANAGI 環境の初期化を行います。

# kusanagi init --passwd "(kusanagi ユーザーパスワード)" --nophrase --dbrootpass "(DB 管理者ユーザーパスワード)"

以下のリンク先を参考にして、自分の環境に合わせてオプションを指定してください。
init – 超高速CMS実行環境 KUSANAGI

なお、今回は Web サーバーが nginx の場合のやり方を記載していますので、差し支えなければオプションで nginx を使用するように指定してください。

更に続けて、 kusanagi provision コマンドで KUSANAGI 環境のプロビジョニングを行います。

# kusanagi provision --lamp --fqdn (FQDN) --noemail --dbname (データベース名) --dbuser (DB ユーザー名) --dbpass "(DB 指定ユーザーパスワード)" (プロファイル名)

ここで重要なのは、 --lamp オプションを指定して特定の CMS をインストールしないようにします。

他のオプションは以下のリンク先を参考にして、自分の環境に合わせてオプションを指定してください。
provision – 超高速CMS実行環境 KUSANAGI

最後に、 Composer をインストールします。
以下に手順がありますので、それに従ってインストールします。
Composer

# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
# php composer-setup.php
# php -r "unlink('composer-setup.php');"
# mv composer.phar /usr/local/bin/composer

インストールが完了したら、 su コマンドで kusanagi ユーザーに切り替えます。

# su - kusanagi

kusanagi ユーザーに切り替わったら、以下のコマンドを実行します。

$ composer -h
Description:
  List commands

Usage:
  list [options] [--] [<namespace>]
:
:

Composer のヘルプメッセージが表示されます。
もし、表示されない場合はもう一度実行した手順を確認してください。

なお、 Composer は root ユーザーでの実行を 推奨していない ので、 composer コマンドを実行する場合は root ユーザーで実行しないように注意してください。

Bedrock をインストール

まず、現在のユーザーが kusanagi であることを確認します。
コンソールのプロンプトが以下のように kusanagi@ となっていれば、現在のユーザーは kusanagi です。

[kusanagi@test-vm ~]$

そうでない場合は、 su コマンドを使用してユーザーを kusanagi に切り替えてください。

続いて、 先ほどプロビジョニングしたディレクトリに移動して、 Bedrock をインストールします。
ディレクトリ名はプロビジョニング時に指定したプロファイル名です。

$ cd ~/(プロファイル名)
$ composer create-project roots/bedrock

実行すると、 bedrock ディレクトリが作られていますので、そのディレクトリに移動して中を見てみます。

$ cd bedrock/
$ ll -a
合計 108
drwxrwxr-x.  5 kusanagi kusanagi  4096  2月  8 15:21 .
drwxr-xr-x.  5 kusanagi kusanagi    74  2月  8 15:21 ..
-rw-rw-r--.  1 kusanagi kusanagi   805  1月 31 06:15 .env.example
-rw-rw-r--.  1 kusanagi kusanagi   320  1月 31 06:15 .gitignore
-rw-rw-r--.  1 kusanagi kusanagi  1068  1月 31 06:15 LICENSE.md
-rw-rw-r--.  1 kusanagi kusanagi  4129  1月 31 06:15 README.md
-rw-rw-r--.  1 kusanagi kusanagi  1960  1月 31 06:15 composer.json
-rw-rw-r--.  1 kusanagi kusanagi 68762  1月 31 06:15 composer.lock
drwxrwxr-x.  3 kusanagi kusanagi    49  1月 31 06:15 config
-rw-rw-r--.  1 kusanagi kusanagi   627  1月 31 06:15 phpcs.xml
drwxrwxr-x. 12 kusanagi kusanagi  4096  2月  8 15:21 vendor
drwxrwxr-x.  4 kusanagi kusanagi    65  2月  8 15:21 web
-rw-rw-r--.  1 kusanagi kusanagi    36  1月 31 06:15 wp-cli.yml
$

このように、従来の WordPress のフォルダー構成とは大きく違うことが分かります。
具体的には、以下のような内容になっています。

├── composer.json             # → Manage versions of WordPress, plugins & dependencies
├── config                    # → WordPress configuration files
│   ├── application.php       # → Primary WP config file (wp-config.php equivalent)
│   └── environments          # → Environment specific configs
│       ├── development.php   # → Development config
│       └── staging.php       # → Staging config
├── vendor                    # → Composer packages (never edit)
└── web                       # → Web root (document root on your webserver)
    ├── app                   # → wp-content equivalent
    │   ├── mu-plugins        # → Must use plugins
    │   ├── plugins           # → Plugins
    │   ├── themes            # → Themes
    │   └── uploads           # → Uploads
    ├── wp-config.php         # → Required by WP (never edit)
    ├── index.php             # → WordPress view bootstrapper
    └── wp                    # → WordPress core (never edit)

引用元:Folder Structure | Bedrock Docs | Roots

環境設定

続いて、Bedrock を動かすための環境設定を行います。

WordPress の設定

まずは、 WordPress の設定を行います。

通常、 WordPress の設定は wp-config.php に記載しますが、Bedrock は DB の接続情報などのセンシティブな設定は .env(DotEnv) ファイルに記載します。
既に対象ディレクトリには、 .env.example とサンプルファイルがあるので、そのファイルをコピーし、環境に合わせた設定を行います。

$ cp -a .env.example .env
$ vi .env
DB_NAME='(プロビジョニング時に指定したデータベース名)'
DB_USER='(プロビジョニング時に指定した DB ユーザー名)'
DB_PASSWORD='(プロビジョニング時に指定した DB 指定ユーザーパスワード)'

# Optionally, you can use a data source name (DSN)
# When using a DSN, you can remove the DB_NAME, DB_USER, DB_PASSWORD, and DB_HOST variables
# DATABASE_URL='mysql://database_user:database_password@database_host:database_port/database_name'

# Optional database variables
# DB_HOST='localhost'
# DB_PREFIX='wp_'

WP_ENV='development'
WP_HOME='http://(プロビジョニング時に指定したFQDN)'
WP_SITEURL="${WP_HOME}/wp"

# Specify optional debug.log path
# WP_DEBUG_LOG='/path/to/debug.log'

# Generate your keys here: https://roots.io/salts.html
AUTH_KEY='generateme'
SECURE_AUTH_KEY='generateme'
LOGGED_IN_KEY='generateme'
NONCE_KEY='generateme'
AUTH_SALT='generateme'
SECURE_AUTH_SALT='generateme'
LOGGED_IN_SALT='generateme'
NONCE_SALT='generateme'

最後のソルトキーはこのファイルにも記載されているように https://roots.io/salts.html にアクセスするとソルトキーが作成されますので、その内容をそのままコピペします。

以上で、 WordPress の設定は完了です。

nginx の設定

続いて、 nginx の設定を行います。

su コマンドを使用してユーザーを root ユーザーに切り替えます。

$ sudo su -

次に、 nginx の設定ディレクトリに移動します。
KUSANAGI 9 の nginx 設定ディレクトリは /etc/opt/kusanagi/nginx になりますが、さらにその下の conf.d ディレクトリ内に (プロビジョニング時に指定したプロファイル名).conf ファイルがありますので、そのファイルを開きます。

# cd /etc/opt/kusanagi/nginx/conf.d
# vi (プロビジョニング時に指定したプロファイル名).conf

そこで、 root の設定がしてある部分を以下のように変更する。

# root  /home/kusanagi/(プロビジョニング時に指定したプロファイル名)/DocumentRoot; # コメントアウト
root /home/kusanagi/(プロビジョニング時に指定したプロファイル名)/bedrock/web;     # 新しく追加

設定が終わったら、 kusanagi nginx --reload コマンドを使って、 nginx をリロードします。

# kusanagi nginx --reload
nginx: the configuration file /etc/opt/kusanagi/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/opt/kusanagi/nginx/nginx.conf test is successful
nginx completed.
#

上記のように、メッセージが表示されれば完了です。
もし何か、エラーメッセージが出ましたら、再度設定ファイルを開いて確認してください。

Bedrock のサーバー設定については公式でも記載されていますので、 Apache を使いたい方はこちらを参照してください。
Server Configuration | Bedrock Docs | Roots

動作確認

それでは、実際に Bedrock の環境を動かしてみましょう。

KUSANAGI のプロビジョニング時に指定した FQDN にアクセスします。
以下のように WordPress のインストール画面が表示されますので、従来通りの WordPress のインストールを行ってください。

これで、 Bedrock の環境が使えるようになりました。

Bedrock の環境では WordPress のプラグインやテーマのインストールは、 WordPress 上で行うのではなく、 Composer を使ってインストールすることを推奨しています。
そうすることで依存関係を Composer が管理できるので、同じ環境の構築が容易になるなどの利点があります。

詳しくは以下の公式サイトを参照してください。
WordPress Dependencies with Composer | Bedrock Docs | Roots

KUSANAGI 9 の環境に Bedrock を導入する手順は以上となります。

KUSANAGI 9 上で Bedrock などのプロビジョニング時に指定できる CMS 以外を使いたい場合のポイントとしては、 kusanagi provision を実行するときに --lamp オプションを指定することで、様々な環境にも対応できます。

参考:KUSANAGI プラグインのインストール

なお、今回記載した環境では WordPress 用の KUSANAGI プラグインはインストールされません。
どうしても KUSANAGI プラグインを利用したい方のみ、以下の注意を踏まえた上で実行してください。

注意:

  • この手法は正規の KUSANAGI プラグインのインストールとは違うため、 KUSANAGI プラグインが正しく動作する保証はしません。
  • KUSANAGI プラグインが更新されても自動的には反映されません。
  • この手順でインストールしたプラグインは Composer で管理されませんので、環境をコピーする際にも再度この手順を行う必要があります。

WordPress 用の KUSANAGI プラグインは Composer 経由でインストールすることはできないので、手動でファイルをコピーします。
以下のコマンドを実行することで、WordPress 用の KUSANAGI プラグインを使えるようになります。

$ cp -ar /opt/kusanagi/lib64/kusanagi/resource/DocumentRoot/wp-content/mu-plugins/* /home/kusanagi/(プロビジョニング時に指定したプロファイル名)/bedrock/web/app/mu-plugins
<< KUSANAGI9でZabbixサーバ6.0をインストールする方法KUSANAGIでLaravelを動かしてみる >>

関連記事

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

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

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

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

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