Uma questão recorrente nos fóruns de suporte e grupos de Facebook dedicados ao WordPress é como deve ser feita a migração de um servidor de desenvolvimento para o servidor de produção. Decidimos então fazer um pequeno guia (na verdade dois) que explica(m) os vários passos deste processo.
Para efeitos de exemplo vamos assumir como URL da instalação de desenvolvimento https://www.osite.local e como URL de produção https://www.osite.pt, sendo que deve, obviamente, usar os seus endereços e não estes.
Temos dois métodos diferentes, um para utilizadores iniciados, escrito pelo António Carreira, e outro para utilizadores mais avançados, escrito por Marco Almeida da Webdados.
Na prática o método mais simples resolve o problema, mas a utilização do método mais avançado pode ser um exercício interessante de perceber como funciona o WordPress e o que implica, ao detalhe, um processo de migração entre servidores.
Método para utilizadores iniciados
Tenho por hábito evitar ao máximo o uso de plugins desnecessários, e nos primeiros sites que migrei de um ambiente de desenvolvimento para produção usei o método que o Marco indicou. No entanto, achava o processo demasiado moroso e repetitivo, e foi a parte do repetitivo que me fez pensar que se calhar havia um plugin que resolvia o problema.
O primeiro plugin deste tipo que experimentei foi o Duplicator, mas tive bastantes problemas em migrar sites mais “pesados”. Acabei por encontrar o All in One WP Migration, li algumas reviews bastante positivas, e decidi-me a experimentá-lo. E não podia ter corrido melhor. Correu tão bem que é o único plugin que uso para migrar os meus sites desde então.
Como funciona então o All in One WP Migration? Vamos partir do mesmo cenário que o Marco utilizou, temos um website instalado localmente em https://www.osite.local e queremos migrá-lo para um servidor online com o endereço https://www.osite.pt
A primeira coisa a fazer é instalar o All in One WP Migration no site local, da mesma forma que instalamos outro plugin qualquer. Se não estão à vontade a instalar um plugin é melhor não se aventurarem na migração de um site.
Depois de instalado o plugin passamos a ter um novo item de menu na barra lateral, o All in One WP Migration. Nesse item de menu temos 3 opções: Export, Import e Backups.
O Export permite-nos criar cópias do site e, na versão gratuita do plugin, exportá-las para o disco do nosso computador. Na versão pro podemos exportar a cópia do site para um FTP ou para alguns serviços externos como a Dropbox e a Google Drive. O resultado deste export é um ficheiro único, com os ficheiros e a base de dados do nosso site.
O Import permite-nos importar um ficheiro produzido através do método anterior. Esta operação irá substituir os ficheiros e a base de dados actuais pelos que estão a ser importados. Toda a informação presente no website antes da importação será apagada.
A opção Backups permite-nos gerir o conjunto de ficheiros exportados pelo plugin. Podemos produzir a quantidade de ficheiros de exportação que bem entendermos, estando apenas limitados pelo espaço disponível no nosso servidor. Este pode ser um bom método para criar cópias de backup frequentes, que em qualquer altura nos permitem recuperar o site por completo. Descarregar ou não estes ficheiros para o disco é uma opção de cada um, mas eu fico bem mais descansado quando tenho um backup online e outro no meu disco.
Para darmos início ao processo de migração temos de exportar o nosso site, pelo que é óbvio que vamos usar o opção Export. Dentro do export podemos adicionar strings de texto que queremos substituir, embora eu confesse que nunca utilizei essa opção e o plugin sempre substitui o que era necessário. Para darmos início ao processo de exportação temos de seleccionar o destino do export, que na versão gratuita acabar por ser sempre o File.
Ao seleccionar esta opção o plugin irá gerar o ficheiro de backup do site. Este processo poderá ser mais ou menos demorado, consoante a quantidade de informação que o vosso site tiver. Imagens, artigos, plugins, tudo será incluído neste ficheiro.
Outra das limitações que existe na versão gratuita deste plugin é o facto de apenas permitir a exportação e importação de ficheiros até 512Mb. Até agora nunca tive um único site onde precisasse de mais do que isto, mas fica a informação para não terem surpresas.
Depois de concluído o processo de exportação, o ficheiro de backup está pronto para ser descarregado. Para o fazer é necessário clicar no botão de download, caso contrário o ficheiro fica armazenado na área de backups mas não será descarregado para o disco. Em qualquer altura podemos aceder à área de backups e descarregar qualquer dos ficheiros produzidos pelo plugin.
O nosso trabalho do lado do site local está terminado, passemos ao site online.
Independentemente da forma como costumam instalar o WordPress, seja através do cPanel, Fantastico, Plex, manualmente, etc., o que interessa para o efeito da migração do site é que tenhamos o WordPress instalado no servidor. Não vale a pena perderem muito tempo a criar utilizadores, instalar plugins ou configurar permalinks, tudo isto será apagado no processo de migração. O único plugin de que iremos necessitar é o, surpresa das surpresas, All in One WP Migration!
Depois de instalarmos o plugin temos de aceder à opção Import (estava-se a ver…). Como estamos a utilizar a versão gratuita apenas podemos importar ficheiros existentes no nosso computador, mas a versão pro permite importar ficheiros a partir de uma série de outras fontes. Neste caso seleccionamos a opção Import From -> File e procuramos no nosso disco o ficheiro que descarregámos do site local.
O plugin terá de carregar este ficheiro para o servidor para poder iniciar o processo de importação. O tamanho do ficheiro e a vossa velocidade de acesso à internet são determinantes no tempo de duração deste processo. Nunca me aconteceu um processo destes parar a meio, pelo que apenas vos posso aconselhar alguma paciência em casos mais demorados.
Por último, depois do ficheiro ter sido carregado para o servidor, podemos dar início ao processo de importação. Este é processo que irá substituir os ficheiros e a base de dados do site online pelo backup que fizemos no site local.
À boa moda dos plugins que podem ter um impacto profundo na saúde do nosso site, também este nos alerta para os perigos das migrações mal feitas. Atenção, este processo irá apagar tudo o que está no vosso site de destino! Não irá simplesmente acrescentar o que estava no site local ao que já tínhamos online. Tudo o que estava online será apagado e substituído pelo site local.
O processo de migração pode demorar alguns minutos, e no final somos recompensados com uma mensagem um pouco mais positiva. Afinal correu tudo bem e a migração está concluída.
A mensagem aconselha-nos também a gravar a nossa estrutura de permalinks duas vezes. Quando tentarem sair desta área e aceder aos settings ou ao dashboard do site irão deparar com o ecrã de login. Isto porque o processo de migração também exporta e importa os utilizadores do site. Por isso, todos os utilizadores que existiam no website local existem agora online, e os que existiam online deixaram de existir. Temos de voltar a fazer login com uma das contas que tínhamos localmente.
É essencial seguir a sugestão do plugin e gravar os permalinks, para que todos os endereços do site sejam actualizados.
Reparem como o endereço do site já está actualizado para a versão online. Está terminado o processo de migração.
Manter o plugin instalado depois deste processo é uma opção de cada um. Se já tiverem um sistema de backups fiável, é provável que este plugin não vos sirva para nada, a não ser quando pensarem em migrar o site para outras paragens. Se ainda não têm um sistema de backups, esta é uma excelente opção.
Se tiverem pouco espaço no servidor, lembrem-se que os ficheiros de backup podem atingir dimensões consideráveis. Podem aceder à área de Backups do plugin e gerir quais os ficheiros que querem manter e quais os que querem apagar.
Resumindo o processo de forma muito básica:
No site de origem:
Instalar o All in One Wp Migration
Exportar o ficheiro de backup para disco
No site de destino
Instalar o All in One WP Migration
Importar o ficheiro de backup gerado no servidor local
Gravar os permalinks
Para terminar, queria apenas deixar algumas ressalvas.
O facto de eu ter tido problemas com o Duplicator não implica de forma alguma que o plugin não tenha qualidade ou que não sirva para este efeito. É muito mais provável que a causa do problema tenha partido de mim e da minha falta de conhecimento. Aconselho-os a testar as duas soluções e a decidirem por vocês mesmos.
É provável que a funcionalidade de substituição de strings do All in One WP Migration exista por um motivo bastante válido. Não me admirava nada que alguns dos sites que eu migrei através deste plugin contenham strings desactualizadas, fruto da minha falta de conhecimento deste aspecto em particular.
Ao todo devo ter migrado cerca de 50 sites com o All in One WP Migration e a tentação é dizer que nunca tive um problema. De facto, na grande maioria dos casos o processo sempre correu muitíssimo bem, mas já tive casos em que surgiram problemas. Ou melhor, surgiu um problema, porque foi sempre o mesmo. Em alguns dos sites, durante a fase de importação, o indicador de progresso não dava resposta e o processo não era terminado.
Em todas estas situações, o problema foi sempre o mesmo: as versões de PHP não eram iguais no servidor de origem e de destino. Se por acaso vos acontecer algo parecido, não se esqueçam de verificar esse aspecto.
Boas migrações!
Método para utilizadores avançados
Não vamos abordar métodos que requeiram acesso à linha de comandos, porque normalmente quem tem acesso e está habituado a usar esse tipo de ferramentas não necessita de ler um guia deste género.
Nota: Se apenas quer mudar o domínio de um website WordPress mantendo-o no mesmo servidor, e partindo do princípio de que tanto o antigo como o novo domínio estão configurados na mesma pasta do servidor, basta seguir o passo 3, ignorando todos os restantes.
Passo 1: Recolher os ficheiros e base de dados do servidor de desenvolvimento
Há várias forma de recolher os ficheiros e base de dados do servidor de desenvolvimento, dependendo se o mesmo é local ou remoto e se existem ou não paineis de administração do alojamento (cPanel ou similar).
Se existir um painel de administração, deve-se aceder ao gestor de ficheiros e gerar um ficheiro zip com todos os ficheiros a partir da pasta raíz da instalação do WordPress e depois descarregar esse ficheiro para o computador local.
Não existindo um painel, havendo só (S)FTP, devem descarregar-se todos os ficheiros para uma pasta no computador local.
Se o servidor de desenvolvimento é local, bem… já tem os ficheiros no seu computador.
A base de dados pode normalmente ser obtida através da opção Export do phpMyAdmin, ou ferramenta similar, instalada no servidor.
Passo 2: Importar os ficheiros para o servidor de produção
Se no passo anterior ficou com um zip com os ficheiros e/ou no servidor de produção tem um painel de adminstração, basta carregar o zip para a raíz e depois descompactar o mesmo utilizando as opções disponíveis no gestor de ficheiros. Certifique-se que os ficheiros ficam na raíz (tipicamente public_html
) e não dentro de uma subpasta.
Se no passo anterior teve de descarregar os ficheiros via (S)FTP e/ou no servidor de produção não tem um painel de administração, carregue os ficheiros via (S)FTP para a raíz do alojamento.
Passo 3: Importar e actualizar o domínio na base de dados
Este é o ponto mais crítico, mas nem por isso complicado. Escusado será dizer que antes de avançar é essencial fazer um backup da base de dados.
Partindo do princípio que já foi criada a base de dados (sem tabelas) no servidor de produção, devem ser actualizados os dados de configuração da mesma no wp-config.php
Para migrar a base de dados temos basicamente de fazer um “serialized search and replace” de https://www.osite.local para https://www.osite.pt (sem barra no final).
Fez dump da base de dados e está a fazer o search/replace no seu editor de texto favorito? Pare com isso, agora! A sério, pare!
– Ah, mas eu já fiz assim e correu tudo bem”
Arquivar em “famous last words”.
O WordPress, os seus plugins e temas, bem como outros sistemas de gestão de conteúdos (CMS), utilizam por vezes a base de dados para guardar configurações em arrays ou objectos devidamente “serializados” (transformados numa string). Não entrando em muitos detalhes, se se efectuar um search/replace de alguma informação dentro destes arrays ou objectos, o mais provável é que se destrua essa mesma informação.
Nota: Deve antes de mais garantir que as constantes WP_HOME
e WP_SITEURL
não estão a ser forçadas no wp-config.php, ou seja, que nesse ficheiro não existem instruções semelhantes a:
define('WP_HOME','https://www.osite.local');
define('WP_SITEURL','https://www.osite.local');
Se existirem, elimine estas duas linhas.
Para uma base de dados com menos de 5MB:
Nestes casos, nem vale a pena complicar. Antes de carregar o dump da base de dados para o servidor de produção, ir a http://pixelentity.com/wordpress-search-replace-domain/ e fazer a substituição:
Esta ferramenta vai devolver um ficheiro SQL com as substituições efectuadas, ficheiro esse que deve agora carregar para o servidor de produção, via phpMyAdmin ou outro método disponível.
Neste momento o seu website deve estar perfeitamente funcional e o processo está terminado.
Para uma base de dados com mais de 5MB:
Se a sua base de dados tem mais de 5MB, não conhecemos nenhuma ferramenta online que permita fazer esta substituição, pelo que está na hora de meter mãos à obra 🙂
Antes de mais vamos carregar o dump da base de dados original (antes de substituição) para o servidor de produção.
Apesar de na introdução deste guia termos referido que não íamos mencionar métodos que requeressem acesso à linha de comandos, se tem o WP-CLI instalado no seu servidor de produção, pode simplesmente correr o seguinte comando na pasta raíz da instalação WordPress:
wp search-replace 'https://www.osite.local' 'https://www.osite.pt' ---skip-columns=guid -all-tables
Se não usou o WP-CLI, vamos usar a ferramenta que pode descarregar no site da interconnect/it e depois descompactar para uma pasta na raíz do seu website no servidor de produção.
Aceda e essa pasta via browser e agora basta preencher os campos replace e with porque os restantes são automaticamente obtidos.
Clique em live run e deixe o processo terminar.
No final deve clicar em delete ou eliminar a pasta directamente no servidor. Não se esqueça deste passo! Se não eliminar esta pasta, os riscos de segurança são muito elevados.
Quer tenha usado o WP-CLI ou a ferramenta da interconnect/it, neste momento o seu website deve estar perfeitamente funcional e o processo está terminado.
Excelente guia, muito obrigado!
Ainda assim, tenho uma dúvida que me atormenta e não permite arriscar a seguir o vosso guia: tenho actualmente o domínio a apontar para um servidor externo onde tenho o site que estou a utilizar, mas quero passar a nova versão do site, já em WP, do local para o servidor do host para que possa dar os últimos retoques sem tirar o original do ar.
Como é que faço isto? É possível passar do local para o servidor do host sem afectar o site original, alojado num servidor externo?
Que últimos retoques é que quer dar que não possa dar do lado DEV? Nesse cenário teria de ter sempre um ponto de passagem intemédio, num subdomínio ou algo parecido. Basicamente teria de repetir o processo duas vezes: DEV -> Staging -> Produção.
Obrigado pela rápida resposta!
Depois de ter deixado o comentário fiquei precisamente a pensar em usar um subdomínio para conseguir fazer isto sem afectar o domínio principal. A minha pergunta tem a ver com ser um site de conteúdos e ser mais fácil para mim poder envolver o resto da equipa no “preenchimento” do novo site com esses conteúdos se estiver online, de forma a que todos possam aceder e ajudar. Mas acho que a vossa resposta já me ajuda bastante, pelo menos descansou-me.
Sendo assim, e só para confirmar, conseguiria passá-lo do local para o subdomínio, terminar o que fosse necessário, testar e depois migrá-lo para o domínio principal seguindo o vosso guia, correcto?
Correcto. Basta seguir o guia duas vezes.