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_exif, php_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.
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.
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.
Observações:
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.
Finalizando:
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">