これからWordPressを使って開発をしようとしており、運用のためにどのようなことができるのか調査していました。
その中でWordPressのリリース方法について調べていると、Bedrockという単語を見つけました。
なんだか良さそうな香りがしたので試しにセットアップしてローカル環境で動作確認までやってみたいと思います。
まず「bedrock」とGoogleで調べてみたところ下記のようにありました。
Minecraft統合版(Bedrock Edition)とは、複数のプラットフォームに対応するMinecraftのバージョンである。
ふむ。MinecraftでWordPressを作れるのね。まずはMinecraftの勉強から…
というのは冗談で、
WordPressにおける「Bedrock」とは、WordPressの標準フォルダ構造を改良し、依存関係管理ツールであるComposerや環境変数を活用することで、開発の効率化とセキュリティ強化を実現するWordPressのボイラープレート(ひな型)のこと
とありました。
公式サイトはこちら
早速、Bedrockを使ったWordPressを見ていきます。
Bedrockのメリット
今までのWordPressとBedrockの違いは何でしょうか。
それは
- 管理しやすいフォルダ構成
- WordPressのコアを依存関係として記載できる
- 環境変数が使える
今までのWordPressでは `wp-content`配下を対応することがほとんどであり、 `wp-content`だけ修正すれば良いことが大半です。
そこで、 `wp-content`だけに集中して作業できるような構成となっているのがBedrockとなります。
WordPressのコアを依存関係として書くだけになるので、GitHubで管理する際も無駄なファイルがなくなります。
環境変数が使えるとのことで、これまで wp-config.php
に記載していた部分は環境変数を使用できます。
Bedrockの構成
公式サイトにある通り、下記の構成となっています。
├── composer.json
├── config
│ ├── application.php # Primary wp-config
│ └── environments
│ ├── development.php
│ ├── staging.php
│ └── production.php
├── vendor # Composer dependencies
└── web # Public document root
├── app # WordPress content dir
│ ├── mu-plugins
│ ├── plugins
│ ├── themes
│ └── uploads
├── wp-config.php
├── index.php
└── wp # WordPress core
一番上に、 `composer.json`があるように、Bedrockではcomposerを使用します。
composerとは、PHPプロジェクトで必要となる外部ライブラリやパッケージの依存関係を管理するツールです。
WordPressのコア部分はcomposerによってダウンロードすることで、管理不要となります。
web/app
配下がこれまでの wp-content
と同様の部分になるようです。
実際にBedrock版のWordPressプロジェクトを作って動かしてみる
コマンドでプロジェクトを作成する
下記のコマンドを実行します。
composer create-project roots/bedrock
composerコマンドが実行できることが前提です。「コマンドが見つからない」とエラーになる場合はコマンドが実行できるようにインストールしてください。
コマンド実行が完了すると bedrock
というフォルダが作成されました。
私だとこんな感じ

ローカル環境で動かしてみる
私はローカル環境でWordPressの動作確認をする際は local というサービスを使用しています。
Site folderというボタンがあるので、そこを押してフォルダを開きます。

wordpressが実行できる環境であればなんでも構いません。
ただし、WEBサーバの設定等が出来ないとBedrockの動作確認ができません。
bedrockフォルダを配置する
app配下

作成したbedrockフォルダを配置します

環境変数を設定する
環境変数はbedrockフォルダ内にある .env.example
ファイルを使用します。
まずは .env.example
ファイルをコピーして .env
ファイルにファイル名を変更します。

1つ上の階層に戻り、publicフォルダ内の

wp-config.phpファイル見ながら .env
ファイルを設定します。

結果、私の .env
ファイルは下記のようになりました。
DB_NAME='local'
DB_USER='root'
DB_PASSWORD='root'
WP_ENV='development'
WP_HOME='http://bedrockexample.local' # ここはlocalのSite domainを入力
WP_SITEURL="${WP_HOME}/wp"
# Generate your keys here: https://roots.io/salts.html
AUTH_KEY=')}Ikk%1aB$0Xt-)/K_?I%1&DB`_004uJi@X4@rUZ}0&v@FeW%`|rMR1ZWWVYNlus'
SECURE_AUTH_KEY='(52*Xa=v,V<1WGmY5|U9JV&O3o7f-blyXIxeDKY%GxH]??jJ-AzS,dKBZ=-Z!|Od'
LOGGED_IN_KEY='zOTN[->y7RJ*1!!qA3:Th2PO;o(<g(:cC4oD-0:4tvgiIP5$g;h-jQ+zI#{}%OfX'
NONCE_KEY='aadmYm1_f<_@wVW&J-.1U6gVt<.a1y19m}j9$>Q;EYyK&Gt[>Z<&?:dE0WJ41m3+'
AUTH_SALT='TL/_&Gs4t3;6oG:9X#h;^H1ENWh;;JsdaD7ku,{D>zf[h#{zq4Bt3C#o->UXJ!zH'
SECURE_AUTH_SALT='ew/1p7]3zBg]^mW}$}O$4ju0V&uVsazy*0loh>M%KNu=|O1JbFWI$N;z%3NhoahR'
LOGGED_IN_SALT='k&hT3.nim6.Pz#(hVws>xI;GJ]}4FX7Se0VX609}l*duDrc&@m9sv[LMuep,X4AI'
NONCE_SALT=')B*9iZ$x@(v*_?X,x*2Y/zJuge<WP%ix$5c2hUF`iTBFkRnX!#Vb>w|W9b1U(aJc'
AUTH_KEY以下の部分は自動で生成することができます。
https://roots.io/salts.html にアクセスすると画面に生成された値が表示されます。
生成されたものをそのまま貼り付けて使用できます。
nginxの設定を変える
下記のように設定してください。
まずはSite folderを開きます。

conf配下

nginx配下

site.conf.hbsを開く

root
という項目を見つけてください。

ここを bedrock/web に書き換えます。

これで準備完了です。
再起動して動くか確認する
localの Open site のボタンを押してください。

こんな画面が出ました。とりあえずうまく起動しました。

管理画面に入ります。
http://自身のドメイン/wp/wp-login.php にアクセスします。

localで今回使用するドメインのサイトを作成した際に入力したユーザを入力してログインします。
そしたら管理画面に入れました。
ここも正常に動作しているようです。

念のため、新規テーマとして test-theme
を追加して、デフォルトのWordPressではなく、BedrockのWordPressが動作していることを確認します。

これでBedrockをローカルで動かしてみるまで確認できました。
まとめ
色々とエラーで時間がかかったが、なんとかBedrockを動かしてみることができました。
しかし、メリット等は今のところ特に感じることはなかったです。
運用していくうちにメリットを感じるのだと思います。(これからわかってくるはず)
実際にサーバーにリリースしたり、開発したりしながら続きを書いていこうと思います。
実際にやってみるとエラーに出会うことが多いと思います。
出会ったエラーたちを下に書いておきます。
出会ったエラー
404 Not Found

404 Not Found はサイトのindex.phpが見つからない時に出てくるようです。
site.conf.hbs
ファイルの root 部分の設定が間違ってないか見直してください。
特に私の場合、ユーザ名が t
から始まっていました。
結果的に root 部分の設定が
root "C:\Users\txxxx\Local Sites\bedrockexample\app\bedrock\web";
となっていました。
見た感じ特に問題はないのですが、 logs/nginx/error.log
を確認したところ、

となっていました。
よく見ると \Users xxxx\
となっています。
これは \t
となった結果、TABとして認識されてしまい、パスが正常に動作していないということでした。
対応策としては、root 部分は下記のようにエスケープしました。
root "C:\Users\\txxxx\Local Sites\bedrockexample\app\bedrock\web";
502 Error

502 Request Error はsite.conf.hbs
ファイルを編集した際に記載方法が間違っていた場合に出てきました。
例えば、最後のセミコロン ;
が抜けていたりした場合に出てきました。
他にも設定ファイルとして記載方法が間違っていると出てくると思われます。

Warning: mysqli_real_connect(): (HY000/1045): Access denied…
Warning: mysqli_real_connect(): (HY000/1045): Access denied for user 'xxx'@'localhost' (using password: YES) in C:\Users\xxx\Local Sites\bedrockexample\app\bedrock\web\wp\wp-includes\class-wpdb.php on line 1988
のようなエラーがサイトを開いた際に出ました。
これはデータベースにアクセスできないというエラーで、 .evn
ファイルの中身が間違っていました。
.env
ファイルの中身を見直しましょう。
画面を開いた際にスタイルシートが反映されていない

なんだかbedrockのスタイルシートがうまく反映されていない。
開発者ツールでスタイルシートが読み込めていないことを確認してください。

http://localhost/wp/wp-includes/js/...
にアクセスしています。
これは .env
の WP_HOME
の値が localhost
になっているからでした。
WP_HOME
の値をサイトのドメインに直してください。
コメント