Ugrás a fő tartalomhoz

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:

  1. Git clone a legújabb kódból
  2. Composer install
  3. Shared fájlok linkelése (uploads, .env)
  4. Nginx reload
  5. 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
└── ...

Források