¡Esta es una publicación para todos los desarrolladores de WordPress que nos visitan! Hoy explicaremos cómo usar e integrar Bedrock y Trellis en Kinsta. Si no ha escuchado hablar antes de estas dos herramientas, usaremos esta oportunidad para presentársela y también le explicaremos por qué es preferible usarlas en lugar de usar una configuración tradicional.

Bedrock y Trellis

Tanto Bedrock como Trellis existen para facilitar el desarrollo, mantenimiento e implementación de sitios de WordPress.

  • Bedrock ofrece una forma alternativa para administrar su instalación de WordPress con una estructura de carpetas mejorada, herramientas de desarrollo modernas, y una mejor seguridad.
  • Trellis trabaja con Bedrock para crear entornos de desarrollo con Vagrant, junto con implementación comandos únicos.

La principal razón para usar Bedrock es para obtener una adecuada gestión de dependencias y paquetes para un proyecto de WordPress. Es posible que ya esté familiarizado con npm para JavaScript o Bundler para Ruby. PHP no es diferente, y su equivalente es Composer.

Si bien el uso de un administrador de paquetes es común, es menos común para WordPress ya que WordPress ya tiene su propio concepto para plugins. Bedrock integra Composer para gestionar plugins, temas, e incluso el núcleo de WordPress como dependencias.

Trellis es una herramienta para crear con facilidad servidores de desarrollo y producción para alojar sitios de WordPress. Además, ha sido creado específicamente para trabajar con sitios basados en Bedrock. El caso de uso predeterminado de Trellis es usarlo para desarrollar con Vagranty también en producción para obtener paridad entre esos dos entornos.

Esta publicación explica un caso de uso ligeramente diferente: Trellis para su servidor de desarrollo y Kinsta para su servidor de producción (y/o de staging).

¿Por qué usar Kinsta en lugar de un VPS provisto por Trellis? Porque a veces usted podría querer pagarle a alguien más para que administre el servidor en lugar de hacerlo usted mismo (especialmente si tiene muchos clientes). Kinsta también facilita la escalabilidad sin tener que lidiar con múltiples servidores, distribuidores de carga, y subidas a la nube.

Muchos hosts de WordPress no son muy amigables con los desarrolladores y no ofrecen acceso SSH ni integración de Composer o WP-CLI, los cuales son requisitos para usar Trellis y Bedrock. Afortunadamente, Kinsta ofrece acceso SSH en todos sus planes desde el plan Starter hasta Enterprise que hace que todo eso sea posible. También pueden modificar la ruta raíz para una funcionalidad adecuada.

Bedrock e Trellis existem para facilitar o desenvolvimento, manutenção e implantação de sites WordPress. 🤓 Haga clic para Tweet

Bedrock vs WordPress Regular

Es posible que se pregunte por qué utilizaría Bedrock en lugar de una instalación tradicional de WordPress. La razón es que Bedrock está diseñado específicamente pensando en el desarrollador web moderno:

  • Archivos de configuración específicos para el entorno, almacenados fuera de la raíz web publica
  • Variables de entorno para separar la configuración del código en un único archivo .env
  • Seguridad mejorada al limitar el acceso a archivos no-web, junto con contraseñas hasheadas con bcrypt
  • Directorio wp-content personalizado llamado app
  • Composer para administrar WordPress, plugins, temas, y otras dependencias de PHP
  • .gitignore que excluye la base de WordPress, plugins y subidas

Raspberry PiSnopesJetBlue y más, confian en Bedrock para impulsar sus sitios de WordPress.

Démosle un vistazo a la comparación entre las dos estructuras de carpetas:

Bedrock vs WordPress

Estructura de Bedrock vs WordPress

Bedrock lleva al siguiente nivel el instalar WordPress en un subdirectorio. Gran parte de la filosofía detrás de Bedrock está inspirada en la metodología de la Twelve-Factor App, incluyendo la versión específica de WordPress.

Configurando Trellis para Kinsta

Primero asegúrese de que sus claves SSH sean agregadas al panel MyKinsta.

Trellis puede implementarse en Kinsta con sólo unas pocas actualizaciones. Dado que Kinsta proporciona todo desde el punto de vista del servidor. El aprovisionamiento de sus entornos de producción y de staging no se aplica.

Las implementaciones de un comando en Trellis funcionan en Kinsta con sólo una pequeña configuración. Una vez configurado, usted podrá implementar sus sitios de WordPress ejecutando el playbook de implementación en Trellis:

ansible-playbook deploy.yml -e env=staging -e site=example.com --limit=kinsta_staging

Abra su panel de control MyKinsta y navegue hasta el sitio de WordPress que está configurando con Bedrock y Trellis, junto con su editor de código abierto en el directorio de trellis de su proyecto.

Primero edite trellis/ansible.cfg para agregar lo siguiente[defaults] en la parte superior:

forks = 3
host_key_checking = False

Configuración de Staging

Asegúrese de que trellis/group_vars/staging/wordpress_sites.yml está configurado con el canonical para su sitio de staging:

wordpress_sites:
  example.com:
    site_hosts:
      - canonical: staging-example.kinsta.com

Abra trellis/group_vars/staging/main.ymly agregue lo siguiente al final del archivo:

project_root: /www/example_123/public
www_root: /www/example_123/public
web_user: example
web_group: www-data

Reemplace example_123en las rutas anteriores con la ruta correcta provista en el panel de control MyKinsta. Asegúrese de haber seleccionado su entorno de staging de Kinsta.

Ruta de desarrollo en el panel de control MyKinsta (staging)

Ruta de desarrollo en el panel de control MyKinsta (staging)

Ahora abra trellis/group_vars/staging/vault.ymlpara editarlo ejecutando ansible-vault edit group_vars/staging/vault.yml.

Necesitamos agregardb_userdb_name, y db_password a env. También necesitamos agregarvault_ansible_ssh_pass. Puede encontrar los valores para estos en la pantalla de información principal de su sitio, en el panel de control MyKinsta.

Credenciales de MyKinsta (pruebas)

Credenciales de MyKinsta (pruebas)

vault_wordpress_sites:
  example.com:
    env:
      db_user: "example"
      db_name: "example"
      db_password: "xxxxxxxxxxxxxxx"
      # Generate your keys here: https://roots.io/salts.html
      auth_key: ""
      secure_auth_key: ""
      logged_in_key: ""
      nonce_key: ""
      auth_salt: ""
      secure_auth_salt: ""
      logged_in_salt: ""
      nonce_salt: ""

Finalmente abra trellis/hosts/staging y reemplace el contenido con:

kinsta_staging ansible_host=104.154.94.123 ansible_ssh_port=12345 ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

[web]
kinsta_staging

[staging]
kinsta_staging

Asegúrese de que el host y el puerto SSH coincidan con lo que se muestra en el panel de control MyKinsta.

Host y SSH de MyKinsta

Host y SSH de MyKinsta

Configuración de Producción

Ahora, repitamos el proceso anterior para el entorno de producción. Asegúrese de cambiar a su entorno vivo en el panel de control MyKinsta.

Entorno vivo

Entorno vivo

Abra trellis/group_vars/production/main.yml y agregue lo siguiente al final del archivo:

project_root: /www/example_123/public
www_root: /www/example_123/public
web_user: example
web_group: www-data

Ahora abra trellis/group_vars/production/vault.yml para editarlo ejecutando ansible-vault edit group_vars/production/vault.yml:

vault_wordpress_sites:
  example.com:
    env:
      db_user: "example"
      db_name: "example"
      db_password: "xxxxxxxxxxxxxxx"
      # Generate your keys here: https://roots.io/salts.html
      auth_key: ""
      secure_auth_key: ""
      logged_in_key: ""
      nonce_key: ""
      auth_salt: ""
      secure_auth_salt: ""
      logged_in_salt: ""
      nonce_salt: ""

Finalmente abra trellis/hosts/production y reemplace el contenido con:

kinsta_production ansible_host=104.154.94.123 ansible_ssh_port=12345 ansible_ssh_pass="{{ vault_ansible_ssh_pass }}"

[web]
kinsta_production

[production]
kinsta_production

Modificando las Tareas de Implementación

Las implementaciones de Trellis tratan de volver a cargar php-fpm, lo que debemos eliminar para evitar que sigan intentando ejecutarse en los servidores de Kinsta. También tenemos que borrar la cache de Kinsta.

Abra trellis/roles/deploy/hooks/finalize-after.yml y desplácese hasta el fondo. Elimine la última tarea de Reload php-fpm y agregue lo siguiente:

- name: Clear Kinsta cache
  uri:
    url: "{{ site_env.wp_home }}/ask-support-rep/"
    method: GET

Reemplace ask-support-rep (mostrado arriba) después de pedirle a un ingeniero de soporte de Kinsta la URL para borrar la cache de su sitio.

Opcional: Instalar Dependencias de Composer

Si le aparece una pantalla que le pide que ejecute ‘Composer Install’, agregue lo siguiente junto antes del código “Clear Kinsta cache” (mostrado arriba):

- name: Install Composer dependencies
composer:
command: install
working_dir: >/www/example123/public/final-path

O /final-path pode variar de acordo com a sua configuração Bedrock/Trellis.

Agregando kinsta-mu-plugins a Bedrock

Los sitios de Kinsta vienen con mu-plugins instalados automáticamente. Con las instalaciones de Bedrock tendrá que cargar el paquete de kinsta-mu-plugins.

Abra site/composer.json y agregue lo siguiente dentro de la matriz de repositories:

{
  "type": "package",
  "package": {
    "name": "kinsta/kinsta-mu-plugins",
    "type": "wordpress-muplugin",
    "version": "2.0.15",
    "dist": {
      "url": "https://kinsta.com/kinsta-tools/kinsta-mu-plugins.zip",
      "type": "zip"
    }
  }
}

Entonces ejecute lo siguiente desde el directorio de su sitio/Bedrock:

composer require kinsta/kinsta-mu-plugins:2.0.15

Configurando la Kinsta CDN

Usted puede usar la Kinsta CDN junto con su sitio Bedrock y Kinsta MU plugin, simplemente debe definir el directorio manualmenteyou en su archivo wp-config.php. El siguiente sería un ejemplo de uso del directorio /app en su sitio.

define( 'KINSTA_CDN_USERDIRS', 'app');

Si desea agregar más de un directorio adicional, simplemente sepárelos con comas.

define( 'KINSTA_CDN_USERDIRS', 'app,app2,app3');

Final Steps With Kinsta Support

Lo último que tiene que hacer es informar a Kinsta sobre a que donde quiere que se configure su raíz de documentos. Entre a MyKinsta y solicítele al equipo de soporte que actualice su raíz de documentos a public/current/web.

Si aún no ha conseguido su URL para borrar la cache, pídele al técnico de soporte que se la proporcione, y asegúrese de que trellis/roles/deploy/hooks/finalize-after.yml esté actualizado con la URL correcta para borrar la cache de Kinsta.

Una vez que se haya realizado este cambio podrá implementar sus entornos de producción y de staging con una sola línea:

# Deploy staging
ansible-playbook deploy.yml -e env=staging -e site=example.com --limit=kinsta_staging

# Deploy production
ansible-playbook deploy.yml -e env=production -e site=example.com --limit=kinsta_production

Mejor aún… ¡configure un servicio de integración continua, como CircleCI, para que ejecute automáticamente la implementación por usted cuando haga commit a staging o master!


Si le ha gustado este artículo, entonces le encantará la plataforma de Kinsta WordPress hosting. Acelere su sitio y reciba soporte 24/7 de nuestro equipo de WordPress veterano. Nuestra infraestructura potenciada por Google Cloud se centra en escalamiento automático, rendimiento y seguridad. ¡Déjenos mostrarle la diferencia con Kinsta! Conozca nuestros planes