Então, eu preciso ter iterações de dev / stage / production (em servidores separados) para um site WordPress, eu uso o git normalmente, mas isso obviamente não funcionará com sites WordPress devido à dependência do banco de dados para os principais configuração de ... bem, quase tudo.
Então, minha pergunta é como vocês fazem isso? Eu tinha um Google rápido e vi que havia alguns plugins, esse é o único caminho? Quais fazem o trabalho melhor em termos de facilidade de uso, velocidade, confiabilidade, interface do usuário, etc.?
svn
version-control
staging
deployment
Rob Vermeer
fonte
fonte
Respostas:
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
edevelop
(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 ignorarwp-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 exemplowp-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!
fonte
Primeiro, acho importante considerar o que você está indo para o Controle de Versão. Eu recomendaria não colocar todo o diretório WP no VC. Eu acho que faz mais sentido colocar wp-content / themes / YourThemeName em VC. Para um site grande com um alto número de plugins complexos, eu poderia ver o caso de incluir também o wp-content / plugins. Se você precisou, pode incluir conteúdo wp / uploads. As respostas abaixo mudarão um pouco, dependendo do que você controla a versão.
Dado isso, aqui está o que eu uso:
Local: Configure uma pilha LAMP em sua máquina. Use o mesmo URL do seu site de desenvolvimento. Use as entradas do arquivo VirtualHosts e .host para simular o ambiente de desenvolvimento do ponto de vista da URL. Se você está apenas criando seu tema, considere usar o SSHFS para vincular a wp-content / plugins, wp-content / uploads. Considere usar o banco de dados na instalação de desenvolvimento do projeto, a menos que você esteja realmente fazendo algum trabalho pesado.
Desenvolvimento: faça check-out de uma cópia de trabalho do seu Repo no seu ambiente WP. Configure um gancho POST-COMMIT no SVN para atualizar esse repositório em cada confirmação. Isso irá mantê-lo sincronizado. (Considere a integração contínua de um pobre homem.)
Produção: confira uma tag de versão nomeada que representa um candidato final. Quando você precisar usar uma nova versão, alterne a tag e atualize o repositório.
fonte
Recentemente, descobrimos a RAMP . Nota: isso é apenas parte de todo o processo, mas a sincronização dos bancos de dados de conteúdo entre os servidores é provavelmente a parte mais difícil.
fonte
Faço isso com git e mercurial, apenas certifique-se de usar um repositório particular.
Opção 1.
O único problema é o config.php, que você pode dizer ao git para ignorar no push ou antes do init.
Use
.gitignore
orgit update-index --assume-unchanged config.php
(leia um pouco sobre o comando assumido inalterado antes de usá-lo)Opções 2.
Use um condicional no config.php que verifique a URL e aplique as credenciais corretas, ao longo das linhas "se o servidor url = dev, use as credenciais A, caso contrário, use as credenciais B", etc.
Mark explica isso melhor, http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/
ps. Você também pode servidor os arquivos diretamente de um repositório remoto em vez de ter um "servidor de arquivos" tradicional. (vídeo muito chato que fiz sobre este http://www.youtube.com/watch?v=8ZEiFi4thDI )
fonte