Multisitio
Trellis asume que la configuración de WordPress ya ha sido realizada. En caso de no ser así, asegúrese que los siguientes valores serán ubicados en algún lugar del archivo de Bedrock config/application.php antes de provisionar el servidor:
/* Multisitio */
Config::define('WP_ALLOW_MULTISITE', true);
Config::define('MULTISITE', true);
Config::define('SUBDOMAIN_INSTALL', false); // Escriba true si utiliza subdominios
Config::define('DOMAIN_CURRENT_SITE', env('DOMAIN_CURRENT_SITE'));
Config::define('PATH_CURRENT_SITE', env('PATH_CURRENT_SITE') ?: '/');
Config::define('SITE_ID_CURRENT_SITE', env('SITE_ID_CURRENT_SITE') ?: 1);
Config::define('BLOG_ID_CURRENT_SITE', env('BLOG_ID_CURRENT_SITE') ?: 1);
También deberás actualizar la configuración del Multisitio en (group_vars/<environment>/wordpress_sites.yml):
multisite:
enabled: true
subdomains: false # Elija true si va a estar realizando una instalación con subdomnios.
A su vez, querrás definir la variable env para multisitios las configuraciones DOMAIN_CURRENT_SITE o PATH_CURRENT_SITE.
env:
domain_current_site: store1.example.com
Ese env será unido a los defaults de Trellis, por lo que no deberás preocuparte por re-definir todas las propiedades.
Aquí un ejemplo de una configuración completa para el multisitio:
# group_vars/production/wordpress_sites.yml
wordpress_sites:
example.com:
site_hosts:
- canonical: example.com
local_path: ../site # ruta apuntando al directorio del sitio en Bedrock (relativo a la raíz de Ansible)
admin_email: admin@example.com
multisite:
enabled: true
subdomains: true
ssl:
enabled: false
cache:
enabled: false
env:
domain_current_site: store1.example.com
Luego de provisionar el servidor remoto y haciendo un deploy del sitio, debes instalar WordPress como paso final en los entornos de producción y staging. Ingresa mediante SSH a tu servidor con el usuario web ssh web@<domain> y en el directorio /srv/www/<domain>/current/ corre el siguiente comando WP-CLI para instalar WordPress:
$ wp core multisite-install --title="site title" --admin_user="username" --admin_password="password" --admin_email="you@example.com"
Notarás que la URL principal de la red contiene un /wp/ en la ruta de posts y páginas. Este es un problema en el core de WP que ocurre cuando WordPress se encuentra en un subdirectorio, como sucede en el caso de Bedrock. Ver issue de Bedrock #250 para más detalles, así cóomo también el plugin Multisite Fixes que arregla este inconveniente.
Si utilizas Let's Encrypt como tu proveedor SSL y tu instalación Multisitio utiliza subdominios, deberás generar certificados individuales para cada subdominio. Esto debería cambiar pronto ya que Let's Encrypt comenzará a expedir certificados wildcars en enero de 2018. Puedes generar certificados SSL para tus subdominios si conoces estos subdominios de antemano al provisionar el servidor. Para hacer esto, defina multiples entradas canonical sobre site_hosts en tu correspondiente archivo wordpress_sites.yml:
site_hosts:
- canonical: example.com
redirects:
- www.example.com
- canonical: subdomain.example.com
redirects:
- www.subdomain.example.com
Subdominios locales
Para subdominios locales, deberás actualizar las entradas DNS para cada subdominio/host. El plugin de Vagrant Landrush puede ayudarte. Instalalo via:
$ vagrant plugin install landrush
Landrush crea un pequeño servidor DNS que te permite utilizar wildcards de subdominios, uno de los requerimientos para instalaciones multisitio con subdominios.
Algunos usuarios pueden llegar a tener problemas de DNS externos cuando utilizan Landrush. Si tienes este inconveniente, agrega esto a tu Vagrantfile:
config.landrush.guest_redirect_dns = false
Vea issue #511 para mayores detalles.
Depurando Landrush
Si algo falla con Landrush, como un sitio no siendo resuelto desde el guest:
$ vagrant landrush list
Elimina cualquier entrada extraña y prueba nuevamente.