Gerenciando sites
em WordPress
de forma eficiente:
do deploy à manutenção
Daniel Kossmann Ferraz
WordCamp São Paulo 2016 | 10.DEZ.2016
Daniel Kossmann Ferraz
daniel@spirallab.com.br
www.spirallab.com.br
Desde 2009 <3 com WordPress
Criar sites no WordPress
é divertido
Deploy e manutenção de vários sites
em WordPress leva muito tempo
(e não é divertido)
Minha jornada
criando sites em WordPress
Workflow
LOCAL → TEST → PROD
Deploy
LOCAL → TEST
LOCAL → PROD
1. Abria FileZilla
2. Conectava ao servidor
3. Entrava na pasta do site
4. Seleciona os arquivos alterados
5. Enviava os arquivos desta pasta
6. Entrava na outra pasta
7. Seleciona os arquivos alterados
8. Enviava os arquivos desta pasta
(…)
~10min
E se der
problema?
header.php
header.bkp.20120102.php
header.bkp.20120203.php
header.bkp.20120203.02.php
header.bkp.20120203.03.php
header.bkp.20120205.php
header.bkp.20120207.php
header.bkp.20120304.php
header.bkp.20120505.php
Problemas
● Falta de Versionamento
● Trabalhoso identificar as alterações
● “Bloqueio” do arquivo quando
alguém da equipe edita ele
Sistema de controle de versão
(Git, eu escolho você!)
● Ver o que você alterou
● Poder restaurar alterações
● Sincronizar o trabalho em equipe
● Visualizar histórico das alterações
Deploy
LOCAL → TEST
LOCAL → PROD
1. Conectava no servidor pelo terminal
2. Entrava na pasta do tema do site
(clone de um repositório Git)
3. Atualizava o repositório
~2min
2 projetos por mês com 15 envios por
semana (11 DEV e 4 PROD) por projeto
SFTP: ~240hrs/ano
Git: ~48hrs/ano
"Automatizar isto não é"
Yoda,
filósofo da automatização e
mestre Jedi nas horas vagas
Git Hooks
Disparar scripts personalizados quando certas
ações importantes ocorrerem
Git Hooks
A cada envio (push):
LOCAL → TEST
Git Hooks
A cada envio (push) com tag:
LOCAL → PROD
0s para DEV (automático)
menos de 1min para PROD
(~42s)
2 projetos por mês com 15 envios por
semana (11 DEV e 4 PROD) por projeto
SFTP: ~96hrs/ano
Git: ~48hrs/ano
Git Hooks: ~4,5hrs/ano
Automatizar rulez!
Outras vantagens
Diminuir a possibilidade
de erros (humano)
Todos os arquivos do projeto sincronizados
Melhorar a segurança
Desenvolvedores não precisam de acesso ao servidor
Automatizar a remoção de arquivos
somente de desenvolvimento
readme.*, SCSS/, Gruntfile,
node_modules/,bower_components/, ...
Deploy automatizado
Agora a manutenção
das instalações do WordPress
Processo de atualização do WordPress:
1. Acessa o /wp-admin do site
2. Usa acessos do gerenciador de senhas
3. Abre tela de atualização do WP
4. Atualiza tudo
5. Testa para ver se não quebrou nada
~2min para atualizar o WordPress
+
~1min para teste mínimo do site
x
dois ambientes (TEST e PROD)
=
~6min
(sem erros)
WP 1
WP 2
WP 3
WP 4
WP 11
WP 12
WP 13
WP 14
WP 15
WP 16
WP 17
WP 18
WP 19
TEST: WP 11
TEST: WP 12
TEST: WP 13
TEST: WP 14
TEST: WP 15
TEST: WP 16
TEST: WP 17
TEST: WP 18
TEST: WP 19
PROD: WP 11
PROD: WP 12
PROD: WP 13
PROD: WP 14
PROD: WP 15
PROD: WP 16
PROD: WP 17
PROD: WP 18
PROD: WP 19
ai meu corassaum
Soluções
mais conhecidas
WordPress Multisite
Pontos negativos:
● Segurança:
○ Ambiente único para os arquivos
○ Um banco de dados
● Importação/exportação de sites isolados é mais difícil
○ Clientes/projetos entram e saem
Plugins
( ManageWP / InfiniteWP / Calypso / ... )
Pontos negativos:
● Dependência de serviços de terceiros
● Custo
● Segurança:
○ Comunicação externa
○ Nem sempre tudo é transparente
Outra maneira?
Solução inspirada no WordPress
empacotado (.deb) pelo Debian
( https://wiki.debian.org/WordPress )
Mesma instalação do WordPress
para vários sites isolados
(WordPress Farm)
Carrega instalação WordPress Farm
( instalação original, apenas com wp-config.php modificado )
Carrega arquivos específicos do Site
( contém wp-config.php simplificado e wp-content/ )
Acesso ao Site
Sites: Plugins
A pasta de plugins do site contém
apenas links simbólicos para os
plugins do WordPress Farm
Atualizando o WordPress:
wp-cli no WordPress Farm
WordPress Farm só
é acessível pelo terminal
(mais segurança)
Requisitos / Limitações
Necessário ter controle do Servidor
Uso do terminal para manutenção
e gerenciamento de temas e plugins
( usuários: role = editor)
Mesma versão (core/plugins) em
todos sites no WordPress Farm
Novo processo de atualização do WordPress:
1. Abre o terminal e conecta no servidor
2. wp-cli para atualizar o Farm do TEST
3. Testa para ver se não quebrou nada
4. wp-cli para atualizar o Farm do PROD
5. Testa para ver se não quebrou nada
~30s para atualizar a base
+
~1min para teste mínimo do site
x
dois ambientes (TEST e PROD)
=
~3min
(sem erros)
30 sites
(TEST e PROD)
2 atualizações por mês
(Plugins e/ou Core)
Painel do WordPress:
~72hrs/ano
WordPress Farm:
~12hrs/ano
Conforme o número de sites aumenta
o ganho proporcional de horas
fica ainda maior
A ser implementado:
atualização automática do TEST
a cada 24hrs e automatizar os testes
Outras vantagens
Facilidade em
importar/exportar sites
Autonomia e controle total
do que acontece "nos bastidores"
(solução tecnicamente simples)
Segurança
Isolamento de sites e
sem comunicações externas
Menos um plugin ;)
Manutenção automatizada
Surgiu uma oportunidade?
Use a magia
da automação!
Gerenciando sites em WordPress
de forma eficiente: do deploy à manutenção
Daniel Kossmann Ferraz
daniel@spirallab.com.br
http://bit.ly/wcsp16-spirallab
WordCamp São Paulo 2016 | 10.DEZ.2016

Gerenciando sites em WordPress de forma eficiente: do deploy à manutenção