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:
- VirtualBox >= 4.3.10
- Vagrant >= 1.8.5
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:
- Crear una nueva carpeta para el proyecto:
mkdir <project_name> && cd <project_name>
- Clonar Trellis:
git clone --depth=1 [email protected]:roots/trellis.git && rm -rf trellis/.git
- 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 acanonical
host and may optionally specify a list of correspondingredirects
(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 optionsssl
- SSL optionscache
- Nginx FastCGI cache optionsenv
- 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, invault.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 invault.yml
)initial_permalink_structure
- permalink structure applied at time of WP install (default:/%postname%/
)