今回は 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