Bedrockを利用した複数Wordpressサイト管理

150 Views

December 20, 25

スライド概要

profile-image

所属: 株式会社ペイメントフォー 職種: EM(エンジニアリングマネージャー)

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

Bedrockを利用した複数 Wordpressサイト管理 2025/12/20 PHPer大忘LT会 2025 1

2.

自己紹介 幸田 裕史(KODA Hiroshi) ● ● ● 所属: 株式会社ペイメントフォー (旧 株式会社メタップスペイメント ) ○ 2018年4月〜 PHPエンジニア兼インフラエンジニア ○ 現在は主に EM(エンジニアリングマネージャー )として活動中 アカウント ○ @kodah0280 ○ Github: koda-h ○ Qiita: koda-h 趣味: ライブ参戦 2

3.

目次 ● 課題感 ● 実現したいこと ● Roots Bedrockについて ● Bedrockを利用した Docker構成 ○ セットアップ方法 ○ 動作説明 ● Bedrockを利用した Wordpressサイトの運用管理 ● まとめ 3

4.

課題感 ● Wordpressサイトが EC2に構築されている ○ ○ 全体の構成管理 (Git管理)ができていない ■ nginx設定 ■ PHP設定 ■ Wordpress plugin設定 環境移行などの構成変更が難しい 4

5.

目次 ● 課題感 ● 実現したいこと ● Roots Bedrockについて ● Bedrockを利用した Docker構成 ○ セットアップ方法 ○ 動作説明 ● Bedrockを利用した Wordpressサイトの運用管理 ● まとめ 5

6.

実現したいこと ● Wordpressサイトをリポジトリで管理したい ○ ● 特に、複数サイトを 1リポジトリで管理したい Dockerで構成管理したい ○ ECS Fargateにデプロイしたい (今回は取り扱いません ..) 6

7.

目次 ● 課題感 ● 実現したいこと ● Roots Bedrockについて ● Bedrockを利用した Docker構成 ○ セットアップ方法 ○ 動作説明 ● Bedrockを利用した Wordpressサイトの運用管理 ● まとめ 7

8.

Roots Bedrockについて 8

9.

Roots Bedrockについて ● WordPress を「よりモダン/開発者向け」に扱うための “ボイラープレート ” ● 依存管理に Composer を利用 ○ WordPress 本体やプラグイン、テーマを Composer 管理下に置くことで、バージョン固定・再現性のある構 成が可能。  ● 環境ごとの設定を明確に分離( .env + config) ○ ● 開発/ステージング/本番など環境ごとに設定を切り替えやすく、安全に管理できる。 ディレクトリ構造の整理 ○ 従来の WordPress が「コア」「テーマ」「プラグイン」「アップロード」が混在しがちだったところを整理。公開 ディレクトリ( web/)やコンテンツディレクトリ( web/app/)に分けることで、管理やセキュリティが向上。 ●  Git 管理との親和性 ○ コアファイルを Git 管理の対象から外し、自分で書いたテーマやプラグイン、設定だけを管理。これによりリ ポジトリが軽く、不要なファイルで汚れない。 9

10.

目次 ● 課題感 ● 実現したいこと ● Roots Bedrockについて ● Bedrockを利用した Docker構成 ○ セットアップ方法 ○ 動作説明 ● Bedrockを利用した Wordpressサイトの運用管理 ● まとめ 10

11.

Bedrockを利用した Docker構成 https://github.com/koda-h/docker-wordpress GitHub - koda-h/docker-wordpress https://github.com 11

12.

Bedrockを利用した Docker構成(セットアップ方法 ) # リポジトリを git clone します $ git clone github.com:koda-h/docker-wordpress $ cd docker-wordpress # .envファイルを作成します $ make create-env # コンテナイメージを buildします $ make build # コンテナを起動します $ make up 12

13.

Bedrockを利用した Docker構成(セットアップ方法 ) http://localhost:8831 を開いて、言語選択画面が表示されればインストール成功です。 13

14.

Bedrockを利用した Docker構成(動作説明 ) ● docker周りの設定は etc/docker 配下に設置。 ● サイトの composer.jsonは etc/site/{サイト名 } に設置。 ● 今回構築したサンプルは、「 sample」というサイト名として構築。 ○ .envに環境変数 SITE=sampleとして設定。 ○ サイト名と、各設定ファイルが連動している。 ■ ■ etc/docker/app/file/sample ● pz-linkcard のようにファイル名を記述 ● data/uploads/pz-linkcard のディレクトリをコピーする etc/docker/app/plugin/sample ● ■ wpackagist-plugin/custom-post-type-ui:* のように記述 etc/docker/app/theme/sample ● yswallow のようにテーマ名を記述 ○ data/themes/yswallow のテーマをインストールする 14

15.
[beta]
Bedrockを利用した Docker構成(動作説明 )
wordpressインストールのフロー
if [ ! -f "/var/www/html/composer.json" ]; then
ln -s etc/site/${SITE}/composer.json /var/www/html/composer.json
ln -s etc/site/${SITE}/composer.lock /var/www/html/composer.lock
fi
sh -x /usr/local/bin/wordpress_install.sh
composer install
sh -x /usr/local/bin/setup_bedrock.sh
sh -x /usr/local/bin/plugin_install.sh
sh -x /usr/local/bin/theme_install.sh
sh -x /usr/local/bin/file_install.sh

touch tmp/installed_wordpress

15

16.

Bedrockを利用した Docker構成(動作説明 ) wordpressインストールのフロー appコンテナ起動時、 docker-entrypoint.sh にて以下を行います。 ● composer.json, composer.lock のシンボリックリンクを作成 ○ etc/site/{サイト名 }/composer.json, etc/site/{サイト名 }/composer.lock を、トップ階層にリンクを作成 ● WordPress を composer にてインストール ● bedrockのプロジェクト作成 (composer create-project roots/bedrock) ○ ● プラグインのインストール ○ ● サイトのテーマのファイルを元に、テーマディレクトリ配下のテーマを配置します。 ファイルのインストール ○ ● etc/docker/app/plugin 配下のファイルの内容を元にプラグインをインストールします。 テーマのインストール ○ ● プロジェクト作成後、 web/wp にファイルを移動 etc/docker/app/file 配下のファイルの内容を元に WordPressのアップロードディレクトリに配置します。 コンテナ起動時に上記を毎回行うと起動時に間がかかるため tmp/installed_wordpress というファイルを作成し、このファイルが有る 場合は次回起動時に上記インストールをスキップします。 ○ ※ 再度インストールを実施したい場合は、 tmp/installed_wordpress を削除するか、 make force-up を実行してください。 16

17.

目次 ● 課題感 ● 実現したいこと ● Roots Bedrockについて ● Bedrockを利用した Docker構成 ○ セットアップ方法 ○ 動作説明 ● Bedrockを利用した Wordpressサイトの運用管理 ● まとめ 17

18.

Bedrockを利用した Wordpressサイトの運用管理 composerで管理しているため、 composer update でバージョンアップ可能です。 $ make composer-update Loading composer repositories with package information Updating dependencies Lock file operations: 0 installs, 18 updates, 0 removals . - Upgrading roots/wordpress (6.3.2 => 6.9.0) - Upgrading roots/wordpress-no-content (6.3.2 => 6.9.0) . 18

19.

Bedrockを利用した Wordpressサイトの運用管理 Pluginの管理(makeコマンドを用意 ) プラグイン追加 $ make add-plugin name={プラグイン名 } all-in-one-seo-packのpluginをイ ンストールする場合 ex) $ make add-plugin name=all-in-one-seo-pack 実際には composer require が実 行される docker compose run --rm app composer require wpackagist-plugin/${name}:* プラグイン削除 $ make del-plugin name={プラグイン名 } プラグイン更新 $ make update-plugin name={プラグイン名 } 19

20.

Bedrockを利用した Wordpressサイトの運用管理 Themeの管理 data/themes ディレクトリに配置し、 etc/docker/theme/{サイト名} のファイルに記載しインストールされるようにする 20

21.

Bedrockを利用した Wordpressサイトの運用管理 複数サイトの管理について ● 以下のディレクトリ・ファイルを追加することによって、複数サイトの管理が可能です。 ○ ● ※別ディレクトリで git clone して管理する必要があります。 追加したサイトを起動する場合は、 以下の例では、環境変数 SITE=hoge2 としてください。 ● hoge2 のサイトを追加する場合 例: ## ディレクトリ追加 $ mkdir etc/site/hoge2 ※ 配下の composer.json, composer.lock もコピー等で作成する ## ファイル追加 $ touch etc/docker/app/file/hoge2 $ touch etc/docker/app/plugin/hoge2 $ touch etc/docker/app/theme/hoge2 21

22.

Bedrockを利用した Wordpressサイトの運用管理 複数サイトの管理について ● 複数サイト同時にローカル上で起動する場合は .envの以下の環境変数のポート番号も変更する必要があります。 .env SITE=hoge2 WEB_PORT=8832 WP_HOME='http://localhost:8832' WP_SITEURL='http://localhost:8832' DB_PORT=33312 22

23.

目次 ● 課題感 ● 実現したいこと ● Roots Bedrockについて ● Bedrockを利用した Docker構成 ○ セットアップ方法 ○ 動作説明 ● Bedrockを利用した Wordpressサイトの運用管理 ● まとめ 23

24.

まとめ Bedrockを利用することにより、 Wordpressサイト全体構成の Git管理及び、複数サイトの管理を 1リ ポジトリで行うことが実現できました。 今回は取り扱いませんでしたが、実際の運用では genovaというRuby on Rails製のデプロイツールを 利用して、 ECS fargateにて稼働しています。 https://github.com/metaps/genova GitHub - metaps/genova AWS ECS Deployment manager https://github.com 24

25.

おわり ご清聴ありがとうございました! 本内容は Qiitaにて記事を投稿しています。 https://bit.ly/4poeGIE 25