Tenho uma configuração da qual tenho muito orgulho e funciona extremamente bem para minha equipe.
Estrutura geral
Eu mantenho toda a instalação no git. Todas as alterações, seja uma atualização do sistema, adicionando / atualizando um plug-in, adicionando / atualizando um tema, passam pelo mesmo fluxo de trabalho. As alterações podem ser revertidas a qualquer momento. Eu tenho um servidor de implantação (uma área de trabalho P4 antiga) executando gitosis, mas você pode usar o github ou gitolite com a mesma facilidade . No git, tenho dois ramos "especiais" master
e develop
(explicado mais abaixo). Meus servidores de produção e armazenamento temporário são baseados em nuvem.
Ambientes de desenvolvimento
Todo desenvolvedor executa seu próprio servidor de desenvolvimento em sua própria máquina. Em termos de bancos de dados, a necessidade de dados ativos quase nunca foi um problema. Usamos principalmente os dados de teste da unidade temática . Caso contrário, a exportação e importação cobre a maioria das coisas. Se a peça do banco de dados for crucial, você poderá configurar a replicação ou algo para sincronização sob demanda. Quando configurei inicialmente essa estrutura, pensei que isso seria crucial, então comecei a escrever um conjunto de ferramentas para fazer isso, mas, para minha surpresa, elas realmente não eram necessárias. (nota: como eles não eram necessários, eu nunca os aprimorei; portanto, existem erros, por exemplo, ele substituirá o domínio nos dados serializados).
Ambiente de armazenamento temporário
Quando as confirmações são enviadas da develop
ramificação para a gitose, elas são implantadas automaticamente em nosso servidor de teste. O banco de dados temporário é um escravo do banco de dados de produção.
Ambiente de produção
Quando as confirmações são enviadas para gitoses na master
filial, elas são implantadas automaticamente no servidor de produção.
O problema do wp-config.php
Você deseja wp-config.php
ser exclusivo de servidor para servidor, mas também deseja mantê-lo sob controle de versão. Minha solução foi usar .gitignore
para ignorar wp-config.php
e armazenar as versões de teste e produção como arquivos com nomes diferentes. Então, em cada servidor, eu faço um link simbólico, por exemplo wp-config.php -> wp-config-production.php
. Cada usuário mantém seu próprio banco de dados com suas próprias credenciais, com suas próprias configurações (não rastreadas) de wp-config.php.
Outras notas
Eu uso o Rackspace Cloud , que é fenomenal e barato. Com ele, posso manter meus servidores de preparação e produção idênticos. Também estou escrevendo plugins agora que usam sua API para me permitir controlar meus serviços diretamente do WordPress, é maravilhoso.
Diretórios de cache, diretórios de upload de arquivos etc. são adicionados ao .gitignore. Se você quiser, poderá configurar uma tarefa cron para fazer check-in rotineiramente de uploads e enviá-los para gitosis, mas isso nunca me pareceu necessário.
A estrutura mestre / desenvolvimento está configurada para imitar parcialmente o modelo de ramificação de Vincent Driessen . Eu também uso a extensão git git-flow e eu sugiro isso também.
Eu tenho mais ou menos 10 desenvolvedores trabalhando nessa estrutura há mais de um ano e tem sido um sonho trabalhar com eles. Confiável, seguro, rápido, funcional e ágil, você não pode pedir muito mais!