Migrando do Wordpress para o Pelican

ter 02 setembro 2014

Hoje pela manhã eu terminei a migração desse meu blog do Wordpress para o Pelican. Eu utilizava o antigo sistema gerenciador de conteúdo há algum tempo, desde quando comecei as atividades aqui no caiocarrara.com.br. Na ocasião era a única ferramenta que conhecia e eu achava fácil para instalar e customizar, portanto foi a escolha mais óbvia para mim. De lá para cá, ainda que a utilização não tenha sido intensa, e talvez justamente por isso, o Wordpress estava suprindo minhas necessidades. Nos últimos dias comecei acessá-lo regularmente para rascunhar alguns artigos e juntamente com a utilização mais recorrente eu comecei a desgostar da ferramenta.

Assim como é muito mais rápido e convidativo abrir um editor de textos como o Sublime do que uma IDE como o Eclipse para programar, ou mesmo o console interativo do Python para uma validação de código rápida, acho muito mais convidativo abrir um editor de textos simples de minha preferência para rascunhar e escrever um artigo do que ter que sofrer as "intempéries" da Internet brasileira para abrir uma página de autenticação, se autenticar, clicar para escrever um post, esperar todo aquele editor de textos com recursos que raramente utilizo carregar para só então colocar um pedaço de ideia "no papel". Muitas vezes um texto é construído com a união de pequenas ideias que vão aparecendo. Repetir esse ciclo todo e juntar todas as ideias estava ficando lento. Naturalmente passei a anotar minhas ideias em arquivos de texto simples e o Pelican então caiu como uma luva!

Pelican

Basicamente o Pelican é um gerador de páginas HTML estáticas. Ele faz seu trabalho a partir de arquivos de textos com marcações especiais, como o reStructuredText ou o Markdown (minha preferência). Eu poderia me aprofundar nessa parte, mas o Arthur Alves já fez um belo trabalho lá no PythonClub explicando bem o Pelican no seu artigo Criando sites estáticos com Pelican Framework. Se alguém quiser saber mais os fundamentos do Pelican, esse artigo será ótimo!

Migrando Wordpress para o Pelican

Depois de brincar um pouco com o Pelican e me sentir um pouco mais familiarizado com o gerador e seus comandos resolvi colocar a mão na massa e partir para a migração. A seguir vou colocar uma receitinha de como fazer isso, os passos são os que lembro de ter feito.

O Pelican já possui uma ferramenta que faz todo o trabalho pesado de importação pra gente, chama-se pelican-import. Esse recurso atua sobre o xml de exportação gerado em seu site Wordpress. Para gerar esse arquivo acesse o painel de administração do seu Wordpress, no meu lateral esquerdo acesse Tools > Export. No meu caso eu selecionei para exportar All Content e cliquei para fazer o download.

Tendo o arquivo xml gerado, vamos certificar de ter instalado as dependências para se importar o conteúdo do XML. O Pelican utiliza os pacotes BeautifulSoup4 e lxml. A instalação é feita como com qualquer outro pacote:

$ pip install BeautifulSoup4 lxml

Estando com as dependências em ordem, já podemos rodar o pelican-import. Esse utilitário é capaz de importar um site de diversas fontes para o formato esperado pelo Pelican. Como estamos focando no Wordpress, o comando é o seguinte:

$ pelican-import --wpfile -m -o content/ /path/to/export.xml

No comando acima, além da chamada do utilitário de importação foram passados alguns parâmetros:

  • --wpfile: indica que a importação deverá utilizar um arquivo XML de exportação do Wordpress;
  • -m: indica que o arquivo de saída deverá estar no formado Markdown. O padrão é rst;
  • -o content/: indica o diretório nos quais os arquivos Mardown gerados deverão ser escritos;
  • /path/to/export.xml: o arquivo exportado do Wordpress.

Para testar a importação, basta executar o Pelican para gerar os arquivos html estáticos e rodar o servidor HTTP de desenvolvimento:

$ pelican content
$ ./development_server.sh start

Acesse localhost:8000 para ver como ficou.

No geral e para os tipos de posts e páginas que eu tinha no meu Wordpress essa sequência simples foi praticamente o suficiente. Adicionalmente eu precisei editar alguns links que ficaram quebrados e fazer algumas melhorias nos metadata dos arquivos do Pelican.

Deploy no Github Pages

Antes eu usava uma hospedagem particular para rodar o Wordpress, mas agora com as páginas estáticas eu não tenho mais a necessidade de ter o PHP e MySql, basta um servidor HTTP bem simples. Resolvi simplificar ainda mais e delegar isso para o serviço provido pelo próprio Github, o Github Pages. Essa foi a escolha mais imediata pois já estou utilizando o Github para versionar os meus artigos.

Todo usuário do Github já possui previamente uma conta no serviço Pages, basta criar um repositório cujo nome seja [username].github.io. No meu caso o repositório ficou com o nome caiocarrara.github.io. Os arquivos que estiverem no branch master desse repositório são utilizados pelo Pages para exibir as páginas do site na url com o mesmo nome do repositório criado.

Seguindo a mesma ideia do pessoal do PythonClub, eu criei um branch chamado pelican para os arquivos do Pelican e os Markdown originais das minhas publicações e o branch master abriga somente as páginas html geradas. Para ajudar um pouco nesse processo de subir para o Github os arquivos a cada geração, eu utilizo um utilitário chamado ghp-import. Para instalá-lo utilize o pip também:

$ pip install ghp-import

Após a geração do Pelican, basta executar:

$ ghp-import output
  • output: indica o diretório onde estão os arquivos gerados pelo Pelican

O comando ghp-import atualiza o branch local de nome gh-pages com o conteúdo do diretório output. Depois disso, basta fazer o push do branch gh-pages para o branch master do reposiório remoto:

$ git push origin gh-pages:master

E pronto! Pode ser que a sincronia do Github Pages demore um pouquinho para de fato publicar a primeira versão da sua página, mas se tudo deu certo logo estará no ar!

Além disso também atualizei meu DNS para utilizar o domínio caiocarrara.com.br no Github Pages, caso essa também seja a vontade de quem lê esse artigo, recomendo a própria documentação do Github para isso: Github Pages - Custom URLs. Qualquer dúvida deixa nos comentários que posso ajudar!

Para quem quiser dar uma olhada, o repositório desse site está no meu Github: caiocarrara.github.io.

Bom, é isso. Até a próxima!


Encontrou algum erro, gostaria de compartilhar algum comentário comigo ou fazer qualquer sugestão? Entre em contato através de alguma das formas listadas na página de contato.