2026年10月12日
2026年10月12日
Roots TrellisでWordPressサーバーを構築する方法|Ansibleによるプロビジョニングとデプロイの流れ
Roots Trellis は、Ansible を使って WordPress 用のサーバー(Nginx・PHP-FPM・MariaDB・SSL など)を設定ファイルどおりに自動構築し、Git からのデプロイまで面倒を見てくれるツールです。この記事では、Trellis が何をしてくれるのか、向いている案件と向かない案件、プロジェクトの作成からプロビジョニング、デプロイまでの流れと、つまずきやすい点を説明します。
Trellis とは何か
Trellis は、WordPress のテーマ・ツール群で知られる Roots プロジェクトが公開しているオープンソースのツールです。中身は Ansible のプレイブックで、「どんなサーバーにしたいか」を YAML ファイルに書き、コマンドを実行するとその状態にサーバーを構成します。
構築されるのは、おおむね次のような構成です(2026年10月現在)。細部はバージョンによって変わるため、公式ドキュメントで確認してください。
- Ubuntu の LTS 版を前提としたサーバー
- Nginx、PHP-FPM、MariaDB
- Let's Encrypt による SSL 証明書の取得と更新
- Composer と WP-CLI
- ファイアウォールや Fail2ban などの基本的な防御設定
- Nginx の FastCGI キャッシュ(設定で有効化)
- 開発環境用のメール確認ツールや Xdebug
Trellis は、同じ Roots の Bedrock という WordPress の構成と組み合わせて使う前提です。Bedrock では WordPress 本体とプラグインを Composer で管理し、設定を .env に分け、ディレクトリ構成も通常の WordPress と異なります(wp-content の代わりに web/app を使うなど)。
向いている案件と向かない案件
Trellis は便利ですが、誰にでも合うわけではありません。導入前に次の観点で判断してください。
向いている案件
- VPS やクラウドのサーバーを自分で管理しており、root 権限がある
- コードを Git で管理し、ステージングと本番を同じ手順で作りたい
- 複数のサイトやサーバーを、同じ設定で再現性高く運用したい
- サーバーの設定変更も手作業ではなくファイルで記録したい
向かない案件
- 共有のレンタルサーバーやマネージド WordPress ホスティング(root 権限がなく、Trellis が前提とする構成を作れません)
- 既存の通常構成のサイトを、移行の手間をかけずにそのまま運用したい場合(Bedrock 構成への移行が必要です)
- 他のアプリケーションと同居しているサーバー(Trellis はサーバー全体を自分の構成にする前提です)
事前に用意するもの
- 作業用 PC:macOS か Linux が扱いやすく、Windows では WSL を使う構成が一般的です。
- trellis-cli:Trellis を操作するコマンドラインツールです。Ansible などの依存関係を Python の仮想環境にまとめて入れてくれます。
- サーバー:新規に用意した Ubuntu サーバー(対応する LTS のバージョンは公式ドキュメントで確認してください)。SSH 鍵でログインできる状態にしておきます。
- ドメイン:Let's Encrypt で証明書を取るため、DNS をサーバーの IP に向けておきます。
- Git リポジトリ:デプロイ時にサーバーがリポジトリからコードを取得します。
プロジェクトを作る
trellis-cli で新しいプロジェクトを作ると、Trellis と Bedrock がまとめて用意されます。
trellis new example.com
作成されるディレクトリは、おおむね次の構成です。
example.com/
├── trellis/ ← サーバー構成(Ansible)
│ ├── group_vars/
│ │ ├── all/ ← 全環境共通(ユーザー、セキュリティ設定など)
│ │ ├── development/
│ │ ├── staging/
│ │ └── production/ ← wordpress_sites.yml と vault.yml
│ └── hosts/ ← 環境ごとの接続先サーバー
└── site/ ← Bedrock(WordPress 本体とコード)
trellis/ と site/ を1つのリポジトリで管理するのが基本の形です。
サイトの設定を書く
環境ごとのサイト設定は group_vars/<環境>/wordpress_sites.yml に書きます。本番環境の例です。
wordpress_sites:
example.com:
site_hosts:
- canonical: example.com
redirects:
- www.example.com
local_path: ../site
repo: git@github.com:your-account/example.com.git
branch: main
multisite:
enabled: false
ssl:
enabled: true
provider: letsencrypt
cache:
enabled: false
接続先サーバーは hosts/production に IP アドレスかホスト名を書きます。
データベースのパスワードやソルトなどの秘密情報は、同じディレクトリの vault.yml に書きます。このファイルは Ansible Vault で暗号化してからコミットしてください。暗号化の鍵となるパスワードは .vault_pass などのファイルに置き、こちらは Git に入れません。trellis-cli には vault ファイルの暗号化や編集を行うサブコマンドがあります。vault.yml に書くキーの名前は Trellis のバージョンで変わることがあるため、trellis new で生成されたファイルの内容に従って値を埋めてください。
Trellis はデプロイ時に、これらの設定をもとにサーバー上の Bedrock 用 .env を生成します。そのため、サーバーに入って .env を手で編集する運用は避け、変更は Trellis 側の設定ファイルで行います。
開発環境を起動する
ローカルの開発環境は、仮想マシン上に本番とほぼ同じ構成で作られます。trellis-cli の新しい版では、macOS で Lima を使う方式が標準になっています(Vagrant を使う方式も残っていますが、推奨は版によって異なります)。
trellis vm start
起動後、開発用のドメインでサイトを開いて動作を確認します。開発環境で本番と同じ構成を試せることが Trellis の大きな利点です。
本番サーバーをプロビジョニングする
サーバーの構築は provision で行います。初回はパッケージの導入や設定に時間がかかります。
trellis provision production
この処理はサーバーの Nginx、PHP、データベース、ファイアウォールなどの設定を書き換えます。既存データがあるサーバーに実行する場合はバックアップを取ってから行い、まずステージングで試してから本番に適用してください。
つまずきやすい点は次のとおりです。
- SSH で接続できない:初回は root か初期ユーザーで接続し、以降は Trellis が作る管理ユーザーで接続します。
group_vars/all/users.ymlに登録した公開鍵が正しいかを確認します。 - SSL 証明書が取れない:DNS がまだ反映されていない、または80番ポートに外から届かないことが主な原因です。
- 途中で失敗した:Ansible は同じ状態を目指して繰り返し実行できる作りなので、原因を直してから再実行すれば続きから整います。
デプロイとロールバック
コードの反映は deploy で行います。
trellis deploy production
サーバーは Git リポジトリからコードを取得し、Composer で依存関係を入れ、新しいリリースのディレクトリを作ってから公開中のディレクトリを切り替えます。アップロードファイルは共有ディレクトリに置かれるため、デプロイで消えることはありません。切り替え式なので、問題があれば直前のリリースに戻せます。
trellis rollback production
デプロイ時にサーバーがリポジトリを取得するため、SSH エージェントの転送やデプロイ用の鍵の設定が必要です。ここで失敗する場合は、作業用 PC で ssh-add -l を実行し、鍵がエージェントに読み込まれているかを確認してください。
運用上の注意
- データベースとアップロードはデプロイ対象外:コードは Git で移せますが、記事データとメディアは別途バックアップと移行の手順が必要です。
- 管理画面からの更新は使わない:プラグインや WordPress 本体は Composer で管理するため、管理画面から更新すると次のデプロイで元に戻ります。
- Trellis 自体の更新:Trellis の新しい版を取り込むときは、変更履歴を読んでからステージングで試します。
- 保守状況の確認:オープンソースのツールなので、導入前に公式リポジトリのリリース状況を確認しておくと安心です。
まとめ
- Trellis は Ansible で WordPress 用サーバーを構築し、Git からのデプロイまで行うツールで、Bedrock と組み合わせて使う
- root 権限のある VPS やクラウド向けで、共有サーバーには向かない
- サイト設定は
wordpress_sites.yml、秘密情報は Ansible Vault で暗号化したvault.ymlに書く trellis provisionでサーバー構築、trellis deployで反映、trellis rollbackで戻す- データベースとアップロードはデプロイ対象外なので、バックアップの手順を別に用意する