Blog

Como migrar o WordPress para outro servidor: o guia definitivo!

Novo: A BlogLite migra gratuitamente seu site ou blog quando você contrata uma hospedagem conosco.
Saiba mais aqui.

Chegou o momento de falar de migrações, como transferir seu WordPress de um servidor para outro, do ambiente local para um ambiente online e, também uma questão muito levantada nos fóruns, migrar o site de uma pasta /site para a raiz.

O foco desse post é entender os processos necessários para essa atividade, os cuidados e riscos envolvidos. Antes de mais nada, tome bastante cuidado com o que está fazendo e sempre tenha backup de tudo no seu site.

Para iniciar esse processo, devemos levar em conta os requisitos mínimos que o software WordPress exige:

Requisitos do WordPress

  • Servidor baseado em UNIX/Linux
  • PHP versão 5.2.4 ou superior
  • MySQL versão 5.0 ou superior
  • Memória para o PHP de pelo menos 64 MB (Somente para o software WordPress, sem plugins adicionais)
Para recursos extras
  • Memória para o PHP de pelo menos 256 MB
  • Apache ou Nginx
  • Módulo mod_rewrite do Apache ativo
  • Extensões PHP como php_exifphp_GD etc (recursos nativos e de plugins)

Essas definições estão descritas no próprio site do WordPress, e elas definem o mínimo que a estrutura do servidor deve possuir para o seu WordPress funcionar adequadamente. Ainda assim, encontramos muitas pessoas hospedando seus sites em servidores Windows, o que pode oferecer inúmeros erros e falhas ao longo do processo.

 

Nota importante
  • Mesmo com o instalador automático, verifique a quantidade de memória disponível ao PHP, quantidades menores que 64 MB levam a erros no WordPress impossibilitando o acesso ao painel do site e/ou a não conclusão adequada da instalação.

Acessos e ferramentas necessários
Para realizar uma migração, precisamos de alguns acessos das duas partes (servidor onde está hospedado e servidor que vai receber a migração).

  • PHPMyAdmin – Onde realizaremos exportação e importação de banco de dados, além de rodar alguns comandos SQL para alterar url’s dentro do banco.
  • WordPress – Acesso a administração do WordPress
  • FTP (ou cPanel) – Para envio e organização dos arquivos.

Cenário
Vamos criar um cenário para ser base desse passo a passo.

Nosso primeiro exemplo será a migração de um ambiente local (quando você instala um WordPress no seu computador) para um ambiente online. Sempre respeitando os requisitos mínimos apresentados acima. O meu ambiente local é um EasyPHP, que nesse cenário usei para criar um tema WordPress de um cliente, e já finalizado o site está com todas as páginas configuradas e com conteúdo (Home, Quem somos, Serviços, Notícias, Contato).

Temos aqui duas opções de migração: podemos copiar o WordPress inteiro (completo) que temos localmente, com a pasta plugins e themes. Isso é muito útil quando o WordPress está em uma versão específica, ou seu tema depende de muitos plugins e quando homologou muito conteúdo desse cliente. Ou então, se for um trabalho pontual, você pode migrar apenas o tema que desenvolveu e o banco de dados. Vamos continuar esse exemplo com a primeira opção, migrando o WordPress inteiro.

No seu ambiente local

Primeiro passo
Faça um arquivo .zip do seu WordPress completo. Perceba que, além das pastas plugins e themes, se você adicionou muito conteúdo de mídias, ele vai ter também a pasta uploads, onde estão as imagens e thumbnails gerados pelo WordPress, e quando finalizarmos a migração esse conteúdo estará online exatamente como estava no seu ambiente local.

migracao-wordpress-1

Segundo passo
Exporte o banco de dados do seu WordPress pelo PHPMyAdmin do seu servidor local. Esse processo é simples: clique sobre o banco de dados do WordPress utilizado e clique em Exportar. Ele apresentará algumas configurações, mas pode usar as que ele traz por padrão; clique em Executar. Ele vai salvar no seu computador um arquivo com nome do banco e extensão .sql, nesse exemplo o meu é “wp_bloglite.sql”

Terceiro passo
Com esses arquivos prontos você vai precisar subir o zip que criamos no primeiro passo para o FTP desejado. Nesse ponto eu prefiro trabalhar com zip e pelo cPanel porque a transferência dos arquivos é ligeiramente mais rápida. Faça o upload e extraia os arquivos para a pasta desejada, nesse cenário para a raiz do FTP.

Quarto passo
Crie um banco de dados para o site online que estamos migrando. No seu PHPMyAdmin online, crie esse banco de dados e anote nome do banco, usuário e senha, além do endereço (host) do mesmo. Dependendo da sua hospedagem, muito comum em revendas, o prefixo dos bancos de dados criados virão com o nome de usuário desse PHPMyAdmin por padrão, por exemplo “rs78945_”. Nesse caso o nome do nosso banco de dados ficará assim “rs78945_bloglite”.

Quinto passo
Edite o arquivo wp-config.php da raiz do seu WordPress online, coloque as informações nome do banco, usuário e senha, e endereço do banco que anotamos no quarto passo.

migracao-wordpress-2

Em alguns casos, é normal que o nome do host (endereço) seja localhost mesmo, caso não seja verifique com sua hospedagem qual o endereço correto para acesso ao banco de dados.

Sexto passo
Importe o banco de dados local para o PHPMyAdmin online. No banco de dados que criamos (online), clique na opção importar. Aqui também não precisaremos alterar nenhuma configuração. Apenas selecione o arquivo .sql do seu banco local e faça a importação.

Raramente esse item apresenta falhas, mas um que eu já encontrei é justamente em relação ao nome do banco de dados, como comentei acima: em alguns servidores o nome do banco já vem com um prefixo setado, e como exportamos o banco de um ambiente local, o nome provavelmente estará diferente. Para solucionar isso eu precisei abrir o arquivo .SQL em um editor de códigos e substituí todas as entradas para o nome do novo banco que criei online e funcionou perfeitamente.

Pronto, temos todos os itens do WordPress online, porém ainda precisamos fazer alguns comandos no banco de dados para alterar as URLs antigas para as novas URLs. No próprio PHPMyAdmin, selecione o banco de dados em que importou o WordPress, clique na aba SQL e vamos rodar os seguintes comandos:

Alterando os caminhos absolutos da URL do site (‘siteurl’) e URL da home (homeurl’)

UPDATE wp_options
SET option_value = REPLACE(option_value,
'http://www.siteantigo.com.br', 'http://www.sitenovo.com.br')
WHERE option_name = 'home'
OR option_name = 'siteurl';

Alterar GUID

UPDATE wp_posts
SET guid = REPLACE (guid,
'http://www.siteantigo.com.br''http://www.sitenovo.com.br');

Alterar URLs dentro dos conteúdos

UPDATE wp_posts

SET post_content = REPLACE (post_content,
'http://www.siteantigo.com.br''http://www.sitenovo.com.br');

Alterar caminho das imagens

UPDATE wp_posts

SET post_content = REPLACE (post_content,
'src="http://www.siteantigo.com.br', 'src="http://www.siteantigo.com.br');

e ainda nos attachments, precisamos alterar o GUID dos mesmos

UPDATE wp_posts

SET guid = REPLACE (guid,
'http://www.siteantigo.com.br', 'http://www.siteantigo.com.br')
WHERE post_type = 'attachment';

Pronto, com esses passos bem executados, sem erros ou surpresas, você pode acessar seu site na versão online e tudo deve funcionar. Subimos os arquivos, o banco de dados e alteramos as entradas no bando para substituir as URLs antigas pela nova URL.

Uma dica para o desenvolvimento local
Nos fóruns já encontrei algumas pessoas falando que as imagens quebram ao colocar o site em um ambiente online. Em alguns casos específicos percebi que as pessoas estavam linkando as imagens com URLs absolutas, colocando no código algo assim:

<img src="../images/logo.png" alt="Logo da Empresa">

Mas para isso funcionar corretamente em qualquer ambiente, é preciso usar funcções do WordPress para imprimir o caminho até a pasta onde a imagem está, dessa forma:

<img src="<?php echo get_stylesheet_directory_uri(); ?>/images/logo.png" alt="Logo da Empresa">

Segundo cenário: Em dois ambientes online (de um servidor para outro)

Quando a migração for feita entre dois servidores online, o procedimento é o mesmo do que comentamos acima. Siga todos os passos exatamente da mesma forma.

Nesse cenário, é comum o risco de incompatibilidade entre os dois servidores ser maior. Siga a risca os requisitos mínimos para o WordPress. Normalmente em migrações desse tipo as versões do MySQL e do PHP são diferentes, alguns plugins e o próprio WordPress podem funcionar de forma diferente e cada caso é um caso. Se estiver com problemas, comente aqui e vamos tentar ajudar a solucionar os problemas.

Duplicator

Outra forma muito interessante de migração é usando o plugin WordPress Duplicator. Ele basicamente faz uma cópia integral do WordPress e então gera um arquivo e um instalador para ser acionado no novo servidor, onde ficará a cópia desse WordPress.

Veja nesse vídeo como funciona o plugin:

 

Conclusão

Como podemos ver existem várias formas que podem nos auxiliar na migração de sites WordPress, como em qualquer ferramenta o mais adequado é que você escolha aquele que mais se relaciona com o seu cenário. Essas não são as únicas opções existentes para esse tipo de demanda nem mesmo os mais práticos, mas são formas que eu utilizo no dia a dia e que atendem adequadamente os cenários em que aplico. Se você usa outro tipo de migração ou conhece alguma forma de otimizar esse processo, comente abaixo sua experiência!

 

Migrar o WordPress parece complicado? A BlogLite migra gratuitamente seu site ou blog quando você contrata uma hospedagem. Saiba mais aqui.

  1. Christine Bubeck

    Eu instalei um tema pago no localhost e agora que migrei ele não ativa….diz q é ilegal mas eu comprei ele e nao acho nenhum lugar para colocar o codigo de compra. Como faz? :(

    1. Alex

      Oi, Christine! Alguns temas e plugins premium fazem uma ativação remota para que o serial (ou código de compra) não seja usado mais de uma vez! Pode ser esse o caso. O que você pode fazer é entrar em contato com o desenvolvedor para que ele libere o serial para que você possa ativá-lo novamente. Menciona que fez uma migração e que deseja usar o serial num domínio diferente (ou IP de servidor diferente). Eles geralmente vão entender do que se trata e vão ajudá-la!

  2. Felipe

    Ja usei bastante o duplicator e ja fiz várias vezes na mão e sempre deu certo, mas um ultimo que fui migrar, fiz tudo certinho, apontei o bd novo, senhas, url, e ao acessar o site “novo” ele faz o download do arquivo index.php ao invés de exibi-lo no navegador… ai fique perdido, o que pode ser?

  3. Jeferson

    Pessoal fiz o backup e migrei para outro servidor, porém tbm não acesso o wp-admin,
    é sempre preciso criar uma nova instalação do wordpress no novo servidor e depois restaurar o backup?

  4. Túlio Sandoval

    Cara, muito obrigado pela ajuda!

    Apesar que me parece que tem algo diferente em meu caso.
    Estou migrando o site do cominioa.com.br/cursos para blog.diminiob.com.br

    Alterei a URL do site nas configurações gerais e fiz o backup de arquivos e DB.

    Já importei tudo, mas ainda assim algumas coisas ficam insistindo em ir para a pasta /cursos, como por exemplo blog.cominiob.com.br/admin

    Sabes como me ajudar?

  5. Gui Rhabelo

    Me sinto na OBRIGAÇÃO de te agradecer de VERDADE pela ajuda. O MELHOR post sobre o assunto. Meu site se perdeu devido a uma hospedagem vagabunda e a uma empresa que não respeita o cliente e você NOS SALVOU com a dica de mudar o DB NAME também no.sql esse era o erro. IMENSAMENTE GRATO….

  6. Leandro Ribeiro

    Apenas algumas considerações de fatos que ocorreram durante a migração do site de um cliente meu:

    – O site foi migrado já pronto, com tema comprado, uma série de plugins, páginas e posts (importados através de arquivo de importação).

    – Tudo correu bem até o redirecionamento das URL’s, onde me deparei que o wp-admin, imagens e postagens no blog redirecionavam para o endereço antigo, que era uma pasta /sitenovo no próprio servidor de hospedagem.

    – Percebi que ao executar os comandos no banco de dados, ele resultava em 0 linhas alteradas.

    – Fucei, fucei e fucei e então resolvi colocar as URL’s no comando sem o ‘www’. Não tenho a menor ideia o porque, mas funcionou e os comandos foram executados.

    – Após isso, as imagens estavam ok. Mas o blog e outras páginas que não a home, continuavam no outro ambiente. Então, vi que no arquivo .htaccess estava o endereço antigo. Atualizei, e deu tudo certo.

    Migração feita com sucesso. Obrigado pelas dicas

    1. Alex

      Excelentes adições, Leandro! Com certeza vai ajudar quem passar pela mesma situação após migrar.

  7. rodrigofsanchezgo

    Pessoal,

    to com dúvidas de como configurar a parte das imagens para que na migração não dê problema, é a única parte que não consegui fazer, tive que trocar imagem por imagem no site.

    %%%%%%%%%%%

    Mas para isso funcionar corretamente em qualquer ambiente, é preciso usar funcções do WordPress para imprimir o caminho até a pasta onde a imagem está, dessa forma:

    <img src="/images/logo.png” alt=”Logo da Empresa”>

    %%%%%%%%%%%

  8. Jone Quest

    Olá, o duplicator é realmente muito bom para uma primeria vez. Vc saberia dizer como publicar as atualizações que serão feitas no site no localhost? Existe algum plugin para isso? Como que vc faz?

  9. Eduardo

    Fiz tudo como orientado e quando vou entrar no site novo não carrega nada, fica a tela em branco. Não aparece erro algum.

  10. Daniel Pereira

    Olá amigos, alguém sabe como realizar a tarefa de “importar” o banco de dados pelo terminal ao invez de utilizar a ferramenta “phpmyadmin”, estou utilizando um servidor vps.

  11. Naldo Mesquita

    Everaldo!
    Só posso dizer MUITO OBRIGADO!!!!!
    Que Deus ilumine sempre a sua vida e que você tenha muito sucesso!

  12. Rafael

    E se eu tiver um blog/site no WordPress Web (ao invés de local) e quiser migrar tudo o que está lá para um servidor mais completo, como posso fazer?

    1. Alex

      Neste caso, você só consegue exportar o conteúdo propriamente (texto dos posts + imagens), mas não o tema, por exemplo. Basta ir a Ferramentas > Exportar e escolher “Todo o conteúdo”. Isso irá gerar um arquivo de exportação a ser salvo. Já na instalação no seu servidor, vá até Ferramentas > Importar, escolha “WordPress” para instalar o importador e em seguida carregue o arquivo gerado anteriormente. O processo pode levar vários minutos e, depois disso, sua nova instalação terá todos os posts e páginas como no original. Agora só falta escolher e instalar um tema (que pode ser o mesmo ou não da instalação no WordPress.com, a depender da disponibilidade).

      Note que esse processo de migração não é perfeito, mas vale a pena ser feito o quanto antes, sobretudo se sua audiência está crescendo! Com seu site em uma instalação própria do WordPress, você pode fazer as migrações seguintes (para um servidor mais poderoso, por exemplo) com perfeição e facilidade, mantendo o site exatamente como é no original.

      Isso sem contar as vantagens evidentes de uma instalação própria do WP, sobretudo o universo imenso de plugins disponíveis para expandir as funcionalidades do seu site. Em resumo: migre já! Espero que isso ajude :)

  13. Jonathan

    Olá pessoal, fiz uma migração desse site soplacas.com.br, ele estava na url soplacas.com.br/site, aparentemente funcionando, só que a maioria das mídias não estão sendo carregadas, sendo que, os arquivos estão todos na pasta de upload, o que pode ter acontecido?

  14. Sérgio Kucera

    Poxa, o seu tutorial ajudou muito!

    Mas eu tenho a acrescentar:
    É muito mais prático editar o arquivo .sql (gerado durante o backup) com um editor de textos, como o Notepad++, pois ele permite usar a função substituir de uma só vez.
    Dessa forma, você não precisa usar os comandos dentro do MyPHP Admin.
    Isto também é útil para pessoas que usam a função Rede do WordPress e têm vários sites em uma mesma instalação, porque são criadas várias tabelas, tais como wp_2, wp_3, wp_4, etc (uma para cada site), e o seu tutorial se aplica a apenas ao WordPress normal.

    Mesmo assim, foi o seu texto que fez cair a ficha e eu finalmente entendi!
    Muito obrigado!

    1. Alex

      Obrigado pelo comentário e contribuição, Sérgio! Realmente, editar o sql como texto é também uma boa opção (só fica meio pesado quando o banco de dados é muito grande, mas ainda assim é factível). A migração de instalações Multisite realmente tem suas peculiaridades, talvez valha até um tutorial separado :)

  15. Douglas

    Consegui fazendo isso que vc disse no post , mas quando vou entrar entrar no painel admin , ele diz que tem que atualizar o banco de dados e mostra um botão para o wordpress atualizar. Fiquei com medo de dar algum problema , eu uso a versão 4.3 portugues.

    1. Sérgio Kucera

      Quando você atualiza o WordPress, sempre há o risco de algum plugin parar de funcionar. Mas bons plugins são atualizados constantemente, então pode ser um problema passageiro.

      Eu prefiro manter o WordPress atualizado.

    1. Sérgio Kucera

      Seu site mudou de endereço?
      Se sim, veja se você fez TODAS as substituições de endereço no banco de dados e veja também se o arquivo wp-admin.php está realmente na pasta raiz do seu site.

      1. sherman

        Olá, estou com o mesmo problema Sérgio, e fiz tudo certo conforme explica ai na matéria, estou migrando o site para o localhost. O /wp-admin nao abre mesmo. error 404

        1. Sérgio Kucera

          Sherman, para mim fica meio vago saber o que aconteceu com o seu site, mas se você está trocando de servidor, pode tentar o seguinte (é o que eu faria):
          1) Conferir se o servidor NS está configurado corretamente, ou seja, se o seu registrador redireciona os pedidos de acesso para o NS da Localhost (caso o domínio do site também seja da Localhost, desconsidere).
          2) Caso o nome do site tenha mudado, pegar o arquivo de backup sql que você tem do servidor antigo e abri-lo em um programa editor de texto (como o Notepad++) e usar a opção “Localizar e substituir”, para trocar o endereço siteantigo.com.br para sitenovo.com.br
          3) Abrir o arquivo wpconfig.php do site ANTIGO e substituir nele o endereço do servidor SQL, o usuário e a senha. Já que, depois da troca, o servidor, banco de dados, usuário e senha são outros.

          Mas enfim, o problema continua? Você fez uma instalação nova do WordPress no servidor novo?
          Sugiro que use o plugin Jetpack, que permite fazer cópia das imagens do site nos servidores do WordPress (para agilizar o carregamento). Isso vai permitir que nenhuma imagem se perca ao trocar de servidor, pois elas já estarão todas na internet (ou na “nuvem”).

          1. Sérgio Kucera

            Sim, depois de fuçar muito eu entendi como o WordPress se comporta. Apenas fiz uma instalação nova (manual) do WordPress e restaurei todos os backups que eu tinha por cima. Por fim atualizei o arquivo wpconfig

  16. jocipp

    Tentei migrar usando o plugin Duplicador, na hora de acessar o novo endereço deu um erro com o plugin jetpack, class.jetpack-user-agent.php na linha 63. por favor alguém poderia me ajudar.

  17. maironabner

    Não realizei o procedimento ainda, mas preciso migrar um projeto inteiro que está no MAMP (mac) para o wamp , porém no fim do processo perco quase todas as informações como meus plugins e alterações do css.
    Este procedimento deixa tudo conforme o outro?

  18. brunagomescoelho

    Olá, Boa tarde !

    Preciso de uma ajuda urgente!

    Eu gostaria de migrar do Joomla para o WordPress usando o mesmo domínio e hospedagem. Isso é possível? Eu teria que instalar um tema parecido e eu conseguiria importar TUDO?

    Desde já muito obrigada !

    1. Alex

      Olá, Marciano! Esse problema está relacionado ao servidor de banco de dados de sua hospedagem! Contacte o suporte deles para que eles possam fazer um diagnóstico do que está acontecendo!

  19. Samuel SS

    Estou com um problema que não consigo resolver.
    Todas as alterações funcionaram bem.
    Só as imagens que os caminhos não alteram para o novo dominio
    E o wp-admin redireciona para o dominio antigo, assim fico sem acesso ao painel.
    Alguem consegue me ajudar?

      1. Dayse Cristina

        Vocês conseguiram resolver esse problema? Estou passando por ele agora e ainda sem sucesso.

  20. Vagner Faustino Fernandes

    Bom dia.

    Gostaria de saber se o plugin WordPress duplicator cria a cópia integral do WordPress já contendo o banco de dados que no caso está também em localhost, ou em relação ao banco de dados precisa ser feitas configurações específicas no SQL através do php-admin.

    Perguntando isso pois o meu cliente quer migrar do Joomla para o WordPress usando o mesmo domínio, inativando ele no Joomla para ativar / setar no WordPress.

    1. Alex

      Difícil saber à distância por que aconteceu, Branca, mas se aparece “Index of /” é porque não há um arquivo index.php/.html na pasta raiz. Aparece uma listagem de arquivos?

      1. Branca Josivan Oliveira

        Não aparece lista de arquivo, somente tela branca com o texto acima ja citado.
        entrei em contato com o servidor e falarem ser o DNS nao registrado no registro.br. Fiz a alteracao e estou aguardando o prazo de ate 48horas. Aviso de nao der certo.

  21. Saulo Teodoz

    Precisei vir aqui e agradecer imensamente pois me salvou! Utilizei 3 tutoriais e depois de dias finalmente tomei coragem de tentar outro e caí nesse pra minha sorte. Muito obrigado!

Deixe um comentário

Hospede seu projeto em WordPress com alto desempenho