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!
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!
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.
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.