Trellis - WordPress DevOps
A Trellis egy Ansible-alapú eszköz, amely automatizálja a WordPress szerverek konfigurálását és a deployment folyamatot. A Roots csapat fejleszti, és tökéletesen működik együtt a Bedrock-kal.
Mi a Trellis?
A Trellis egy teljes értékű WordPress szerver megoldás:
- LEMP Stack - Linux, Nginx, MariaDB, PHP
- Automatizált konfiguráció - Ansible playbook-ok
- Zero-downtime deployment - Leállás nélküli frissítések
- SSL tanúsítványok - Let's Encrypt integráció
- Fejlesztői környezet - Vagrant alapú lokális szerver
- Több site támogatás - Egy szerveren több WordPress
- Biztonság - Automatikus biztonsági beállítások
Előfeltételek
Lokális fejlesztéshez
- Vagrant >= 2.1.0
- VirtualBox >= 4.3.10
- Ansible (automatikusan települ)
Éles szerverre
- Ubuntu 22.04 vagy 24.04 LTS
- Python 3
- Ansible >= 2.10
Telepítés (macOS)
# Homebrew-vel
brew install ansible
brew install --cask vagrant virtualbox
Telepítés (Windows - WSL2)
# WSL2-ben
sudo apt update
sudo apt install ansible python3-pip
pip3 install ansible
Projekt struktúra
A Trellis-t a Bedrock mellé kell telepíteni:
projekt/
├── trellis/ # Trellis (szerver konfiguráció)
│ ├── ansible.cfg
│ ├── bin/
│ ├── deploy-hooks/
│ ├── group_vars/
│ │ ├── all/
│ │ ├── development/
│ │ ├── staging/
│ │ └── production/
│ ├── hosts/
│ ├── roles/
│ ├── Vagrantfile
│ └── requirements.yml
└── site/ # Bedrock (WordPress)
├── composer.json
├── config/
├── web/
└── ...
Telepítés
1. Trellis CLI telepítése
brew install roots/tap/trellis-cli
2. Új projekt létrehozása
trellis new projekt-neve
cd projekt-neve
Ez létrehozza a teljes struktúrát Trellis-szel és Bedrock-kal.
3. Meglévő projekthez hozzáadás
cd projekt-mappa
trellis init
Konfiguráció
Site beállítások
group_vars/development/wordpress_sites.yml:
wordpress_sites:
example.com:
site_hosts:
- canonical: example.test
redirects:
- www.example.test
local_path: ../site
admin_email: [email protected]
multisite:
enabled: false
ssl:
enabled: false
provider: self-signed
cache:
enabled: false
group_vars/production/wordpress_sites.yml:
wordpress_sites:
example.com:
site_hosts:
- canonical: example.com
redirects:
- www.example.com
local_path: ../site
repo: [email protected]:user/repo.git
repo_subtree_path: site
branch: main
multisite:
enabled: false
ssl:
enabled: true
provider: letsencrypt
cache:
enabled: true
Vault (titkosított jelszavak)
A Trellis Ansible Vault-ot használ az érzékeny adatok titkosítására.
group_vars/production/vault.yml:
vault_mysql_root_password: "szupertitkos_jelszo"
vault_wordpress_sites:
example.com:
admin_password: "admin_jelszo"
env:
db_password: "adatbazis_jelszo"
auth_key: "generalt_kulcs"
secure_auth_key: "generalt_kulcs"
logged_in_key: "generalt_kulcs"
nonce_key: "generalt_kulcs"
auth_salt: "generalt_kulcs"
secure_auth_salt: "generalt_kulcs"
logged_in_salt: "generalt_kulcs"
nonce_salt: "generalt_kulcs"
Vault titkosítása
# Titkosítás
trellis vault encrypt production
# Visszafejtés szerkesztéshez
trellis vault decrypt production
# Szerkesztés titkosítva
trellis vault edit production
Lokális fejlesztés (Vagrant)
Virtuális gép indítása
cd trellis
trellis vm start
Vagy hagyományosan:
vagrant up
Hosts fájl beállítása
A Trellis automatikusan beállítja a hosts fájlt, de manuálisan is hozzáadhatod:
192.168.56.5 example.test
Vagrant parancsok
# VM indítása
trellis vm start
# VM leállítása
trellis vm stop
# VM újraindítása
trellis vm restart
# VM törlése
trellis vm delete
# SSH belépés
trellis vm shell
Éles szerver provisionálás
1. Szerver előkészítése
Szükséges egy friss Ubuntu 22.04/24.04 szerver root SSH hozzáféréssel.
2. Hosts fájl beállítása
hosts/production:
[production]
example.com ansible_host=123.45.67.89
[web]
example.com
3. Provisionálás futtatása
trellis provision production
Ez telepíti és konfigurálja:
- Nginx webszervert
- MariaDB adatbázist
- PHP-FPM-et
- Let's Encrypt SSL-t
- Fail2ban-t
- Tűzfalat (UFW)
- Automatikus frissítéseket
Deployment
Zero-downtime deploy
trellis deploy production
A deployment folyamat:
- Git clone a legújabb kódból
- Composer install
- Shared fájlok linkelése (uploads, .env)
- Nginx reload
- Régi release-ek törlése
Deploy hooks
Egyedi szkriptek futtatása deployment közben:
deploy-hooks/build-before.yml:
- name: Install npm dependencies
command: npm ci
args:
chdir: "{{ deploy_helper.new_release_path }}"
- name: Build assets
command: npm run build
args:
chdir: "{{ deploy_helper.new_release_path }}"
Rollback
Probléma esetén visszaállás az előző verzióra:
trellis rollback production
SSL tanúsítványok
Let's Encrypt (ajánlott)
ssl:
enabled: true
provider: letsencrypt
Manuális tanúsítvány
ssl:
enabled: true
provider: manual
cert: ~/certs/example.com.crt
key: ~/certs/example.com.key
Self-signed (fejlesztéshez)
ssl:
enabled: true
provider: self-signed
Több site egy szerveren
wordpress_sites:
site1.com:
site_hosts:
- canonical: site1.com
# ...
site2.com:
site_hosts:
- canonical: site2.com
# ...
PHP konfiguráció
group_vars/all/php.yml:
php_version: "8.2"
php_memory_limit: "256M"
php_max_execution_time: "300"
php_upload_max_filesize: "64M"
php_post_max_size: "64M"
Nginx konfiguráció
group_vars/all/nginx.yml:
nginx_worker_processes: auto
nginx_worker_connections: 8192
nginx_client_max_body_size: "64m"
Egyedi Nginx szabályok
roles/wordpress-setup/templates/nginx-includes.d/*.conf.j2:
# Egyedi szabályok
location /custom-endpoint {
# ...
}
Mail küldés
Mailhog (fejlesztéshez)
Alapértelmezetten a development környezetben Mailhog fut, amely elkapja az összes kimenő emailt.
Elérhető: http://example.test:8025
SMTP (éles)
mail_smtp_server: smtp.mailgun.org:587
mail_hostname: example.com
mail_user: [email protected]
mail_password: "{{ vault_mail_password }}"
Biztonsági funkciók
A Trellis automatikusan konfigurálja:
- Fail2ban - Brute force védelem
- UFW tűzfal - Csak szükséges portok nyitva
- SSH hardening - Kulcs alapú belépés, root letiltva
- Automatikus frissítések - Biztonsági patchek
- Nginx hardening - Biztonsági headerek
Hasznos parancsok
# Projekt létrehozása
trellis new projekt-neve
# Lokális VM
trellis vm start
trellis vm stop
trellis vm shell
# Provisionálás
trellis provision development
trellis provision staging
trellis provision production
# Deployment
trellis deploy staging
trellis deploy production
# Rollback
trellis rollback production
# Vault kezelés
trellis vault encrypt production
trellis vault decrypt production
trellis vault edit production
# Galaxy roles frissítése
trellis galaxy install
# SSH belépés szerverre
trellis ssh production
Roots Stack együtt
A teljes Roots stack együttes használata:
projekt/
├── trellis/ # Szerver konfiguráció és deployment
└── site/ # Bedrock + Sage
├── composer.json
├── web/
│ └── app/
│ └── themes/
│ └── sage/ # Sage téma Acorn-nal
└── ...