Eu sei que essa pergunta é um pouco mais antiga, porém, como eu não vi isso como resposta aqui, gostaria de compartilhar o que normalmente faço para configurações e implantações baseadas em git de site único e está funcionando muito bem, também com o trabalho de vários dispositivos, locais e com vários desenvolvedores (todos com seus próprios repositórios locais em que operam, como é comum no git).
Posso sugerir calorosamente a seguinte configuração:
Também é descrito em (se você precisar de um segundo recurso para envolvê-lo):
Basicamente, funciona (com pelo menos três repos) por:
- colocando o site no host ao vivo sob git,
- crie um novo repositório bare git no host ao vivo.
- Depois, passe do repositório vazio para o seu repositório git de desenvolvimento local.
Quando o trabalho é concluído, você pressiona o repositório remoto remoto do qual clonou. O repositório simples possui ganchos para sincronizar com o repositório ativo (nos códigos acima chamados de prime ).
Como configurações específicas do Wordpress no repositório, tenho o seguinte .gitignore
:
# uploads are data, excluded from source tree
wp-content/uploads/
O resto incl. a configuração do plugin e do tema eu mantenho sob controle de versão / configuração. Isso me permite rastrear facilmente as alterações e revisar o código antes de usá-lo ao vivo. Também posso mesclar mais facilmente contra árvores remotas com minhas próprias alterações. Isso é especialmente útil no núcleo do Wordpress, disponível no Github .
Isso funciona muito bem para a maioria das minhas necessidades do Wordpress. O repositório simples impede que você faça alterações conflitantes. Ele também é sincronizado com uma cópia remota antes de atualizar o site ativo. Isso significa que atualizar o site ao vivo normalmente é bastante rápido. Por causa dos ganchos, você pode até chamar os ganchos de atualização do Wordpress depois, se quiser.
Se não tiver experimentado o quanto isso pode ser melhorado com os ganchos do Github, mas normalmente não preciso deles, pois o código está sob controle de versão local, não o Github.
Para configurar esse sistema pela primeira vez, você deve avaliar se possui todas as ferramentas disponíveis em seu host remoto:
- Acesso SSH
- GIT
- Um diretório privado no qual você pode colocar arquivos e subdiretórios (por exemplo, para o seu repositório bare git)
O tempo de configuração pela primeira vez deve ser possível dentro de uma duas horas, incl. todo o ambiente e você primeiro publica push.
Dependendo do seu host, você também pode querer proteger o .git
diretório do acesso à web. Aqui está um exemplo de .htaccess
código que faz com que o Wordpress seja colocado dentro de um subdiretório, o que deixa espaço no repositório não publicado on-line (útil):
Options -Indexes
# fix trailing slash for .git / make it disappear + .gitignore and similar files.
RedirectMatch 404 ^/\.git(.*)$
# mask 403 on .ht* as 404
<Files ~ "^\.ht">
Order Deny,Allow
Allow from all
Satisfy All
Redirect 404 /
</Files>
RewriteEngine On
RewriteBase /
# map everything into public and set environment var
# to tag the request being valid
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule ^(.*)$ /public/$1 [E=sitealias:set,L]
Em resumo, tudo o que não está no diretório público não está online. Dentro do diretório público pode estar a base de código wordpress, por exemplo, para o .htaccess
que você precisa então:
RewriteEngine On
# mask as 404 if directly accessed
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule .* - [L,R=404]
Isso impede o acesso direto ao público . Parte deste .htaccess -foo você pode encontrar descrito aqui: Os pedidos para .htaccess devem retornar 404 em vez de 403 . Para as variáveis de ambiente, você precisa testar se isso funciona em seu ambiente. Além disso, você precisa decidir se coloca isso sob controle de versão ou não.
Se você tem mais controle sobre a hospedagem, pode fazer mais coisas aqui (e diferentemente / mais otimizado); os exemplos acima são direcionados para ambientes típicos de hospedagem compartilhada (que oferecem GIT, alguns usuários dizem que você pode instalá-lo facilmente como bem, normalmente peço aos meus anfitriões que o ofereçam, porque prefiro que eles tomem cuidado com isso.
No lado negativo, isso tem alguns dos problemas comuns também descritos nas outras respostas. Uma coisa de que não tenho orgulho, mas o que funciona é alterar o host de desenvolvimento em seu arquivo host para que o servidor de banco de dados aponte para a cópia de desenvolvimento. Então você pode manter uma configuração de banco de dados. Não é muito legal esp. por causa das credenciais.
Backups automáticos
No entanto, normalmente não me importo muito aqui, mas, em vez disso, os backups diários são executados nos sistemas remotos, que são incrementalmente armazenados em outro local remoto. Isso é fácil e barato e permite restaurar a instalação do Wordpress, bem como os uploads de arquivos, o banco de dados e o repositório git. Também para os meus comandos de backup, posso não estar perfeitamente bem, mas eles funcionam para mim:
mysql: mysqldump --host=%s -u %s --password=%s %s| gzip > %s
git : git gc
git bundle
files: tar --force-local -czf %s %s
O que eu sugiro aqui é que você mantenha os processos em torno da instalação do Wordpress fora do Wordpress. Eles precisam ser executados em um sistema específico, para que você normalmente não os tenha dentro do aplicativo (por exemplo, o aplicativo pode ficar inativo, mas é necessário que eles continuem funcionando).
Habilitado para trabalho em equipe
Outro benefício interessante é que seu site já está ativado para o trabalho em equipe. Graças ao repo bare adicional, você não pode fazer muita coisa errada e pode compartilhar ramificações remotas além de uma ramificação principal ou ao vivo com seus colegas.