Roots

Introducción

Roots es un conjunto de herramientas que te ayudarán a construir sitios web WordPress de forma mucho más rápida.

Mejora tu flujo de trabajo utilizando Trellis, Bedrock y Sage:

  • Trellis: para provisionar un servidor con todo lo que necesitas para alojar un sitio web WordPress.
  • Bedrock: boilerplate para organizar mejor tu proyecto WordPress; trae mejoras en los archivos de configuración y permite instalar plugins con Composer.
  • Sage: WordPress starter theme que te permite construir temas más rápidamente gracias a las últimas herramientas de desarrollo web.

Trellis

Introducción

Máquina virtual Vagrant con un servidor WordPress completo para el desarrollo en local

Trellis utiliza Vagrant para crear automáticamente una máquina virtual con todo lo necesario para utilizar WordPress, así que no tendrás que preocuparte por depender de programas como MAMP.

El servidor ya trae todo lo que WordPress necesita gracias a Ansible.

Provee un servidor remoto y despliega tu sitio web con un solo comando

Con Trellis consigues tener un servidor local idéntico a lo que tendrás en producción, por lo que te aseguras de que todo vaya a funcionar correctamente.

Instalar Trellis

Requisitos

Antes de empezar, asegúrate de que tienes instaladas estas dependencias:

Esto es lo mínimo necesario para un servidor web local, ya que Vagrant ya se ocupa automáticamente de instalar Ansible por defecto.

TIP

Para aumentar la velocidad de aprovisionamiento de la máquina virtual local, o para servidores remotos, deberás además instalar Ansible en tu ordenador. Nos encargaremos de esto más tarde.

Crear un proyecto

La estructura de directorios recomendada para un proyecto Trellis es:

my-project              # → Root folder for the project
├── trellis/            # → Your clone of the Trellis repository
└── site/               # → A Bedrock-based WordPress site
    └── web/
        ├── app/        # → WordPress content directory (themes, plugins, etc.)
        └── wp/         # → WordPress core (don't touch!)

Los pasos para crear un nuevo proyecto son los siguientes:

  1. Crear una nueva carpeta para el proyecto:
mkdir <project_name> && cd <project_name>
  1. Clonar Trellis:
git clone --depth=1 [email protected]:roots/trellis.git && rm -rf trellis/.git
  1. Clonar Bedrock:
git clone --depth=1 git[email protected]:roots/bedrock.git site && rm -rf site/.git

Crear un sitio web WordPress

Ahora que ya has creado el proyecto y tienes instalado todo lo necesario, lo siguiente es configurar un sitio web WordPress.

En Trellis, todo está construido sobre el concepto de sites. Cada servidor manejado con Trellis (ya sea una máquina virtual local o un servidor remoto) puede soportar uno o varios sitios WordPress. Trellis se encargará automáticamente de configurar todo lo necesario para alojar un sitio web WordPress, como la bases de datos, los Nginx vhosts o la estructura de directorios.

La configuración de Trellis se hace mediante archivos YAML, y son diferentes para cada entorno de desarrollo (development, staging, production).

Hay dos lugares donde configurar sitios web:

  • Ajustes generales, en group_vars/development/wordpress_sites.yml
  • Contraseñas, en group_vars/development/vault.yml

Ajustes generales

Aquí tienes que definir todos los sitios web que quieres crear. Por ejemplo:

# trellis/group_vars/development/wordpress_sites.yml

wordpress_sites:
  myproject.com:
    site_hosts:
      - canonical: myproject.test
    local_path: ../site # path targeting local Bedrock site directory (relative to Ansible root)
    admin_user: admin
    admin_email: [email protected]
    multisite:
      enabled: false
    ssl:
      enabled: false
      provider: self-signed
    cache:
      enabled: false

Cada sitio comienza con un "key" (myproject.com en este caso). Trellis utiliza este key internamente como nombre del sitio y como nombre por defecto para muchas variables.

Contraseñas

Cuando añades un sitio en wordpress_sites.yml, también tienes que editar vault.yml, que se encarga de almacenar las contraseñas de los sitios web. Después este archivo será encriptado para que lo puedas subir a tu repositorio Git sin problema.

# trellis/group_vars/development/vault.yml

vault_wordpress_sites:
  myproject.com:
    admin_password: admin
    env:
      db_password: example_dbpassword

Observa que el key utilizado en ambos archivos wordpress_sites y vault es el mismo: myproject.com.

WARNING

Te recomiendo que cambies las contraseñas que vienen por defecto por otras más seguras.

Por último, deberías cambiar el admin_user del sistema operativo en group_vars/all/users.yml por otro nombre de usuario.

Opciones

Comunes

  • site_hosts - List of hosts that Nginx will listen on. At least one is required. Each host item must specify a canonical host and may optionally specify a list of corresponding redirects (hosts). Remember to set up DNS for every host listed. You cannot use just an IP address.
  • local_path - path targeting Bedrock-based site directory (required)
  • current_path - symlink to latest release (default: current)
  • db_create - whether to auto create a database or not (default: true)
  • packagist_token - token to use to authenticate with Packagist.com for private Composer repositories (optional)
  • multisite - multisite options
  • ssl - SSL options
  • cache - Nginx FastCGI cache options
  • env - environment variables:
    • disable_wp_cron - disable WP cron and use system's (default: true)
    • wp_home - WP_HOME constant (default: <protocol>://${HTTP_HOST})
    • wp_siteurl - WP_SITEURL constant (default: ${WP_HOME}/wp)
    • wp_env - environment (default: env via Ansible)
    • db_name - database name (default: <site-name>_<env>)
    • db_user - database username (default: <site-name>)
    • db_password - database password (required, in vault.yml)
    • db_host - database hostname (default: localhost)
    • db_user_host - hostname or ip range used to restrict connections to database (default: localhost)

Desarrollo

  • site_install - whether to install WordPress or not (default: true)
  • site_title - WP site title (default: site_name)
  • admin_user - WP admin user name (default: admin)
  • admin_email - WP admin email address (required)
  • admin_password - WP admin user password (required in vault.yml)
  • initial_permalink_structure - permalink structure applied at time of WP install (default: /%postname%/)