Migrando meu blog do WordPress para Ghost

Desde 2017 eu vinha utilizando o WordPress como CMS para o Blog. Depois de muitas dificuldades em relação a desempenho e hosting, decidi em 2022 migrar para o Ghost.
O Ghost é um aplicativo poderoso para criadores de novas mídias publicarem, compartilharem e expandirem seus negócios em torno de seu conteúdo. Ele vem com ferramentas modernas para criar um site, publicar conteúdo, enviar boletins informativos e oferecer assinaturas pagas aos membros.
Por que migrar?
O meu maior fator foi desempenho, na antiga hospedagem (SAN) o desempenho estava afetado, por questões do Wordpress e também da infraestrutura. O desenvolvimento do Ghost é utilizado as melhores e últimas linguagens de programação, por isso é fácilmente superior aoWordpress.
Outro fator foi o design, o Ghost possui temas minimalistas e era o que eu busca. Um padrão de postagens com imagem e conteúdo, bem simples e fácil de ler.
Pré-requisitos
Nesse post vou explicar como foi a migração do Wordpress para o Ghost. Desde a instalar, configurar e executar o Ghost no servidor Ubuntu 20.04 até a migração dos conteúdos.
Este é o guia para auto-hospedagem do Ghost usando a stack recomendada do Ubuntu 20.04.
A instalação de produção oficialmente recomendada requer a seguinte stack:
- Ubuntu 16.04, Ubuntu 18.04 ou Ubuntu 20.04
- NGINX (mínimo de 1.9.5 para SSL)
- Uma versão compatível do Node.js
- MySQL 5.7 ou 8.0
- Systemd
- Um servidor com pelo menos 1 GB de memória
- Um nome de domínio registrado
Lembrando que antes de começar, você deve configurar um registro A no DNS do seu domínio, apontando para o endereço IP do servidor. Isso deve ser feito com antecedência para que o SSL possa ser configurado durante a configuração.
Lembre-se de ter um domínio apontando para o seu servidor.
Backup do Wordpress
Antes de tudo é importante fazer os downloads dos conteúdos do seu Wordpress. Para isso foi simples, baixei o plugin do Ghost. Ele permite a migração dos conteúdos. Depois de instalado eu acessei:
Ferramentas > Export to Ghost.
Na opção de "Download to Ghost File" acontenceu o esperado, time-out no servidor antigo. Isso já estava na documentação oficial do Ghost.
Em alguns casos, sua instalação do WordPress não será capaz de lidar com a quantidade de conteúdo que está sendo exportado, seja porque há muitos dados ou porque a instalação do WordPress não teve tempo suficiente para processar os dados. Se você encontrar esses problemas, clique .json
abaixo do botão de download. Isso produzirá um único arquivo que conterá todas as suas postagens, páginas e tags e pulará a etapa de download da imagem.
Então optei pelo arquivo .JSON.
Também fiz o download via Gerenciador de Arquivo do cPanel da pasta Uploads. Isso será utilizado no final da instalação.
Configuração do servidor
Esta parte garantirá que todos os pré-requisitos sejam atendidos para a instalação do Ghost-CLI.
O servidor que utilizei foi da AWS junto com o Cloudflare.
Criar um novo usuário
Abra seu terminal e faça login no seu novo servidor como usuário root:
# Loga via SSH
ssh [email protected]_server_ip
# Cria um novo usuário
adduser <user>
# Adiciona o usuário ao grupo root para liberar acessos de admin
usermod -aG sudo <user>
# Loga com nova usuário
su - <user>
Atualizar pacotes
Certifique-se de que as listas de pacotes e os pacotes instalados estejam atualizados.
# Atualiza lista de pacotes
sudo apt-get update
# Atualiza pacotes instalados
sudo apt-get upgrade
Siga as instruções para inserir a senha que você acabou de criar na etapa anterior.
Instale o NGINX
O Ghost usa um servidor NGINX e a configuração SSL requer NGINX 1.9.5 ou superior.
# Instala o NGINX
sudo apt-get install nginx
Se estiver ufw
ativado, o firewall permite conexões HTTP e HTTPS. Abra o Firewall:
sudo ufw allow 'Nginx Full'
Instalar MySQL
Em seguida, você precisará instalar o MySQL para ser usado como banco de dados de produção.
# Instala o MySQL
sudo apt-get install mysql-server
MySQL no Ubuntu 18.04 ou 20.04
Se você estiver executando o Ubuntu 18.04 ou 20.04, é necessária uma senha para garantir que o MySQL seja compatível com o Ghost-CLI
. Isso requer alguns passos extras!
# Inicie com
sudo mysql
# Agora atualiza a senha com
# Altere o 'password' com sua senha
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
# Saia do MySQL
quit
# e logue com o usuário novamente
su - <user>
Instalar o Node.js
Você precisará ter uma versão compatível do Node instalada em todo o sistema da maneira descrita abaixo. Se você tiver uma configuração diferente, poderá encontrar problemas.
# Adiciona o repositório do Node na versão 14
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash
# Instala o Node.js
sudo apt-get install -y nodejs
Instale o Ghost-CLI
O Ghost-CLI é uma ferramenta de linha de comando para ajudá-lo a instalar e configurar o Ghost para uso de forma rápida e fácil. O módulo npm pode ser instalado com npm
ou yarn
.
sudo npm install [email protected] -g
Uma vez instalado, você sempre pode executar ghost help
para ver uma lista de comandos disponíveis.
Instalar o Ghost
Depois que seu servidor estiver configurado e ghost-cli
instalado corretamente, você poderá instalar o Ghost. Se você precisar de um controle mais refinado, a CLI possui sinalizadores e opções que permitem detalhar e personalizar as etapas de instalação.
Crie um diretório
O Ghost deve ser instalado em seu próprio diretório, com um proprietário e permissões apropriados.
# Cria o diretório: Altere `sitename` para sua preferência
sudo mkdir -p /var/www/sitename
# Difine proprietário da pasta: Altere <user> para o nome do seu usuário
sudo chown <user>:<user> /var/www/sitename
# Define as permissões 755 a pasta
sudo chmod 775 /var/www/sitename
# Navegue para a pasta
cd /var/www/sitename
Execute o processo de instalação
Agora instalamos o Ghost com um comando final.
ghost install
Instalar perguntas
Durante a instalação, a CLI fará várias perguntas para configurar seu site.
Blog URL
Insira o URL exato em que sua publicação estará disponível e inclua o protocolo para HTTP ou HTTPS. Por exemplo, https://exemplo.com
. Se você usar HTTPS, o Ghost-CLI oferecerá a configuração de SSL para você. O uso de endereços IP causará erros.
nome de host MySQL
Isso determina de onde seu banco de dados MySQL pode ser acessado. Quando o MySQL estiver instalado no mesmo servidor, use localhost
(pressione Enterpara usar o valor padrão). Se o MySQL estiver instalado em outro servidor, digite o nome manualmente.
Nome de usuário/senha do MySQL
Se você já possui um banco de dados MySQL existente, digite o nome de usuário. Caso contrário, digite root
. Em seguida, forneça a senha do seu usuário.
Nome do banco de dados fantasma
Digite o nome do seu banco de dados. Ele será configurado automaticamente para você, a menos que você esteja usando um usuário/senha MySQL não-root. Nesse caso, o banco de dados já deve existir e ter as permissões corretas.
Configurar um usuário MySQL fantasma? (Recomendado)
Se você forneceu seu usuário raiz do MySQL, o Ghost-CLI pode criar um usuário personalizado do MySQL que só pode acessar/editar seu novo banco de dados do Ghost e nada mais.
Configurar o NGINX? (Recomendado)
Configura o NGINX automaticamente, permitindo que seu site seja visualizado pelo mundo exterior.
Configurar SSL? (Recomendado)
Se você usou um https
URL de blog e já apontou seu domínio para o lugar certo, o Ghost-CLI pode configurar o SSL automaticamente para você usando Let's Encrypt . Como alternativa, você pode fazer isso mais tarde executando ghost setup ssl
a qualquer momento.
Digite seu e-mail
A configuração da certificação SSL requer um endereço de e-mail para que você possa ser informado se houver algum problema com seu certificado, inclusive durante a renovação.
Configurar o systemd? (Recomendado)
systemd
é a ferramenta de gerenciamento de processos recomendada para manter o Ghost funcionando sem problemas. Recomendamos escolher yes
, mas é possível configurar seu próprio gerenciamento de processos.
Iniciar?
Escolher yes
executa o Ghost e faz seu site funcionar.
Migrando o conteúdo
Agora já com os arquivos de conteúdo baixados fica mais fácil a migração.
Acessando o admin do Ghost url/ghost
no ícone da engrenagem acesse a opção Labs.
Settings > Labs > Import content (selecione o arquivo JSON, baixo no iniciado do post).
Feito isso, seus posts serão migrados para o Ghost. Agora precisamos migrar as imagens.
Lembra que fizemos o download da pasta uploads? Então, a estrutura basicamente é a mesma. Só precisamos copiar todo o conteúdo para /content/images/wordpress/
.
Agora, todos os posts e imagens devem aparecer no Ghost. :)
Dificuldades que tive:
A única dificuldade que tive foi nas permissões das pastas no servidor, então não se esqueca de acrescentar o "-p" na criação da pasta, além dos comandos de chown
e chmod
.