Este é um post para todos os desenvolvedores de WordPress que estão por aí! Hoje vamos explicar como usar e integrar Bedrock e Trellis em Kinsta. Se você nunca ouviu falar dessas duas ferramentas antes, também vamos apresentá-las e, esperamos, ajudar a explicar porque você gostaria de usá-las em vez de uma configuração tradicional.

Bedrock e Trellis

Tanto Bedrock como Trellis existem para facilitar o desenvolvimento, manutenção e implementação de sites WordPress.

A principal razão para usar o Bedrock é para obter uma dependência adequada e gerenciamento de pacotes para um projeto WordPress. Você já deve estar familiarizado com npm para JavaScript ou Bundler para Ruby. O PHP não é diferente, e seu equivalente é Composer.

Embora o uso de um gerenciador de pacotes seja comum, ele é menos comum para o próprio WordPress, pois o WordPress já tem seu próprio conceito para plugins. Bedrock integra o Composer para gerenciar plugins, temas e até mesmo o próprio núcleo do WordPress como dependências.

Trellis é uma ferramenta para criar facilmente servidores de teste e produção para hospedar sites WordPress. Foi especificamente criado para trabalhar também com sites baseados em Bedrock. O caso de uso padrão da Trellis é utilizá-la para desenvolvimento com Vagrant e também na produção para obter paridade entre esses dois ambientes.

Este post explica um caso de uso ligeiramente diferente: Trellis para o seu servidor de desenvolvimento e Kinsta para o seu servidor de produção (e/ou teste).

Por que usar Kinsta sobre uma Trellis VPS provisionada? Porque às vezes você quer pagar alguém para administrar o servidor em vez de fazê-lo você mesmo (especialmente se você tem muitos clientes). Kinsta também facilita o escalonamento sem ter que lidar com múltiplos servidores, balanceadores de carga e uploads de nuvens.

Muitos hosts WordPress não são muito amigáveis ao desenvolvimento e não oferecem acesso SSH e Composer ou WP-CLI integration que são requisitos para usar Trellis e Bedrock. Felizmente, a Kinsta oferece acesso SSH em todos os seus planos de hospedagem, do Starter ao Enterprise, o que torna tudo isso possível. Eles também podem modificar o caminho de raiz para uma funcionalidade adequada.

Bedrock and Trellis existem para facilitar o teste, manutenção e implantação de sites WordPress. 🤓Click to Tweet

Bedrock vs WordPress Normal

Você pode estar se perguntando porque você usaria Bedrock em vez de uma instalação tradicional do WordPress. A razão é que Bedrock é construído especificamente com o moderno desenvolvedor web em mente:

Raspberry Pi, Snopes, JetBlue, e mais, confie no Bedrock para alimentar seus sites WordPress.

Vamos dar uma olhada nas duas estruturas de pastas lado a lado:

Bedrock vs WordPress

Bedrock vs WordPress

Bedrock leva a instalação do WordPress em um subdiretório para o próximo nível. Grande parte da filosofia por trás do Bedrock é inspirada na metodologia do aplicativo Twelve-Factor App, incluindo a versão específica do WordPress.

Configuração de Trellis para Kinsta

Primeiro, certifique-se de que suas chaves SSH públicas são adicionadas ao painel MyKinsta.

A Trellis pode ser enviada para Kinsta com apenas algumas atualizações. Como Kinsta fornece tudo do ponto de vista do servidor web, o provisionamento dos seus ambientes de teste e produção não se aplica.

O comando único em Trellis trabalha com Kinsta com um pouco de configuração. Uma vez configurado, você será capaz de implantar seus sites WordPress executando o playbook em Trellis:

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

Traga seu painel do MyKinsta e navegue até o site WordPress que você está configurando com Bedrock e Trellis, junto com seu editor de código aberto para o diretório trellis do seu projeto.

Primeiro edite trellis/ansible.cfg para adicionar o seguinte em [defaults] no topo:

forks = 3
host_key_checking = False

Configuração de Teste

Certifique-se de que o trellis/group_vars/staging/wordpress_sites.yml está configurado com o canonical apropriado para o seu local de teste:

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

Em seguida, abra trellis/group_vars/staging/main.yml e adicione o seguinte ao final do arquivo:

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

Substitua o example_123 nos caminhos acima pelo caminho correto fornecido a partir do painel MyKinsta. Certifique-se de ter selecionado o seu ambiente de desenvolvimento da Kinsta.

Caminho de desenvolvimento a partir do painel MyKinsta

Caminho de teste a partir do painel MyKinsta (teste)

Em seguida, abra trellis/group_vars/staging/vault.yml para edição executando ansible-vault edit group_vars/staging/vault.yml.

Precisamos de adicionar db_user, db_name, e db_password para env. Você pode encontrar os valores para estes na tela principal de informações do seu site no painel do MyKinsta.

Credenciais MyKinsta

Credenciais MyKinsta (teste)

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 a trellis/hosts/staging e substitua o conteúdo por:

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

Certifique-se de que o host e a porta SSH correspondem ao que está listado no painel do MyKinsta.

MyKinsta host e SSH (encenação)

MyKinsta host e SSH (teste)

Configuração da Produção

Agora, vamos repetir o mesmo processo acima para o ambiente de produção. Certifique-se de alternar para o seu ambiente “ao vivo” no painel do MyKinsta.

Ambiente de vida

Ambiente de vida

Abra trellis/group_vars/production/main.yml e adicione o seguinte ao final do arquivo:

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

Em seguida, abra trellis/group_vars/production/vault.yml para edição executando 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 a trellis/hosts/production e substitua o conteúdo por este:

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

[web]
kinsta_production

[production]
kinsta_production

Modificando as Tarefas de Implantação

Trellis deploys tenta recarregar o php-fpm, que precisamos remover da tentativa de rodar nos servidores da Kinsta. Também precisamos de activar a limpeza do cache da Kinsta num destacamento.

Lutando com tempo de inatividade e problemas no WordPress? Kinsta é a solução de hospedagem projetada para economizar seu tempo! Confira nossos recursos

O Abrir trellis/roles/deploy/hooks/finalize-after.yml e rolar para o fundo. Remova a última tarefa para Reload php-fpm e adicione o seguinte:

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

Substitua ask-support-rep acima depois de pedir a um representante de suporte Kinsta para o URL para limpar o cache no seu site.

Opcional: Instalar Dependências do Compositor

Se você estiver recebendo uma tela que lhe diz para executar a ‘Instalação do Composer’, adicione o seguinte logo antes do código “Clear Kinsta cache” acima:

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

O /final-path pode variar de acordo com as configurações do seu Bedrock/Trellis.

Adicionando kinsta-mu-plugins ao Bedrock

Os sites Kinsta vêm com mu-plugins instalados automaticamente. Com as instalações da Bedrock você precisa trazer o pacote kinsta-mu-plugins.

Abra o site/composer.json e adicione o seguinte dentro da 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"
    }
  }
}

Depois execute o seguinte a partir do seu Bedrock/site directory:

composer require kinsta/kinsta-mu-plugins:2.0.15

Configurando Kinsta CDN

Você pode usar Kinsta CDN junto com o seu site Bedrock e o plugin Kinsta MU, você só tem que definir o diretório manualmente no seu arquivo wp-config.php. O seguinte seria um exemplo de utilização do diretório /app no seu site.

define( 'KINSTA_CDN_USERDIRS', 'app');

Se você quiser adicionar mais de um diretório extra, basta separá-los com vírgulas.

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

Passos Finais com o Apoio da Kinsta

A última coisa que você precisa fazer é informar a Kinsta sobre o que deve ser a raiz do documento. Entre no MyKinsta e peça à equipe de suporte para que a raiz do seu documento seja atualizada para o public/current/web.

Se você ainda não obteve a URL clara do cache antes, peça também ao seu representante de suporte para isso, e certifique-se de que trellis/roles/deploy/hoks/finalize-after.yml seja atualizado com a URL correta para limpar o cache da Kinsta em um deploy bem sucedido.

Uma vez que esta mudança tenha sido feita, você será capaz de implantar tanto no seu ambiente de preparação quanto no de produção com uma única linha:

# 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

Melhor ainda… configurar um serviço de integração contínua, como o CircleCI, para executar automaticamente o deploy para você quando você se compromete a staging ou master!


Se você gostou deste artigo, então você vai adorar a plataforma de hospedagem WordPress da Kinsta. Turbine seu site e obtenha suporte 24/7 de nossa experiente equipe de WordPress. Nossa infraestrutura baseada no Google Cloud se concentra em escalabilidade automática, desempenho e segurança. Deixe-nos mostrar-lhe a diferença Kinsta! Confira nossos planos