Pelican: uma interessante ferramenta em Python para gerar sites estáticos

Em meus estudos geralmente eu dou de cara com coisas bastante interessantes relativas a minha profissão ou que podem vir a ser úteis no meu dia-a-dia. Recentemente eu encontrei uma ferramenta bem bacana de criação de sites, que é ideal pra quem deseja criar um blog simples para compartilhar ideias ou pra quem – assim como eu – deseja montar um site simples de portfolio, entre outras possibilidades.

Eu tinha ouvido falar a respeito de geradores de páginas estáticas, mas até então nunca senti necessidade de saber mais a respeito, já que o WordPress supria minhas necessidades – ou assim eu achava. Mesmo assim eu pesquisei sobre como funcionam ferramentas como o Nanoc, o Middleman, o Jekyll (feitos em Ruby), o Pelican, o Octopress e o Hyde (esses feitos em Python) entre alguns outros e gostei bastante. Então resolvi escolher uma ferramenta e me dedicar a ela.

Escolhi então o Pelican. Escrita totalmente em Python (linguagem que eu gosto pra caramba), essa ferramenta é um gerador de páginas estáticas que permite criar de uma forma bem dinâmica blogs e sites web completos, com paginação, comentários, categorias/tags, etc. em HTML, CSS e JavaScript. Nada de linguagens server-side como PHP, ASP e outras. É ideal para quem deseja criar coisas minimalistas e simples, que sejam rápidas de carregar e não exijam muitos recursos do servidor.

A desvantagem clara do Pelican em comparação com o WordPress ou o Blogger é que infelizmente essa ferramenta não é pra qualquer um: embora não seja extremamente difícil de usar, quem é blogueiro de primeira viagem não vai se sentir muito a vontade ao usá-lo, pois é necessário ter noções de desenvolvimento web e de linguagens de marcação como o Markdown, além de noções de como usar emuladores de terminal/linha de comando, gerenciamento de servidores web e/ou controle de versão (dependendo de como se deseja fazer deploy do site), entre outras coisas pouco amigáveis a leigos.

Entretanto, a forma como o Pelican funciona traz muitas vantagens: nem todo mundo gosta de usar um editor de texto aberto em um navegador para produzir seu conteúdo e o Pelican permite escrever textos no seu PC, com seu editor de texto favorito. Além disso, um site completo feito apenas em HTML/CSS/JS pode ser hospedado em qualquer lugar, o que pode inclusive diminuir custos (o que nunca é uma coisa ruim, não é mesmo?).

Aprendi a usar o Pelican recentemente e gostei muito do resultado, tanto que assim que eu conseguir dominá-lo completamente, abandonarei este blog no WordPress.com e transferirei todo meu conteúdo dele para um site feito nessa ferramenta. Enquanto isso não acontece, vou estudando como se faz, e que melhor maneira de afiar os conhecimentos do que compartilhando-os com todos? 😉

Então nas próximas linhas explicarei como instalar e usar essa ferramenta, bem como testar e publicar seu primeiro site. O Pelican pode ser usando em ambiente Windows, Linux ou Mac, mas na elaboração desse tutorial eu estou usando o Ubuntu 14.04.

Você vai precisar dos seguintes ingredientes:

  • Linguagem Python instalada. Quem usa Linux ou Mac não precisa se preocupar. Usuários de Windows podem instalá-la manualmente;
  • Virtualizador Virtual Env instalado.
  • O editor de texto de sua preferência. Eu gosto muito do Sublime Text;
  • Noções básicas de uso de linha de comando/terminal do Linux/Mac. Um guia completo de como usar o terminal do Linux pode ser encontrado aqui, mas relaxa que a gente vai usar pouca coisa dele e eu tentarei explicar da forma mais amigável possível.

Instalação e configuração

Em seu sistema Linux favorito, abra um terminal e instale o Virtual Env com o comando abaixo. Digite sua senha caso solicitado:

[sourcecode]
sudo apt-get install python-virtualenv
[/sourcecode]

O Virtual Env permitirá que instalemos o Pelican em um ambiente isolado do restante do sistema. Assim poderemos instalar todos os pacotes e bibliotecas necessárias apenas nesse ambiente, sem que o sistema operacional se encha de pacotes desnecessários. Explicarei apenas o necessário do Virtual Env para usarmos o Pelican. Se você deseja aprender a usá-lo de forma mais aprofundada, recomendo este material.

Continuando, agora navegue para dentro de uma pasta de sua preferência com o comando cd do terminal. Dentro dele, digite o seguinte comando para criar um ambiente do Virtual Env (substitua “pelican-venv” pelo nome que quiser):

[sourcecode]
virtualenv pelican-venv
[/sourcecode]

Será gerada uma estrutura de arquivos divididos nas pastas bin, include, lib e local. Agora ative seu novo ambiente virtual com o seguinte comando:

[sourcecode]
source bin/activate
[/sourcecode]

Sua linha de comando agora será precedida do nome do ambiente virtual, entre parênteses. Isso simboliza a ativação bem-sucedida do seu Virtual Env.

[sourcecode]
(pelican-venv)usuario@computador:~/pelican-venv$
[/sourcecode]

A partir de agora será possível instalar o que quiser em seu ambiente virtual sem encher seu Linux de tralha e o melhor: sem necessidade de acesso via superusuário (nada de comandos sudo)!

Agora vamos começar de facto a trabalhar com o Pelican. Antes de mais nada, vamos instalar o Pelican em nosso novo ambiente.

Por padrão o Pelican usa a linguagem reStructuredText para a redação de textos. Mas eu prefiro usar a linguagem Markdown pra isso, pois eu a considero mais fácil de escrever. Assim sendo, vamos instalar o Pelican e a linguagem Markdown com este comando:

[sourcecode]
pip install pelican markdown
[/sourcecode]

Agora vamos criar uma quinta pasta para manter tudo organizado em nosso ambiente. É nessa nova pasta que eu criarei meu site estático com o Pelican. Então digite o seguinte comando para criar uma pasta chamada /src:

[sourcecode]
mkdir src
[/sourcecode]

Entre nessa nova pasta com o comando cd:

[sourcecode]
cd src
[/sourcecode]

Agora digite as seguintes palavrinhas mágicas:

[sourcecode]
pelican-quickstart
[/sourcecode]

Um assistente fará algumas perguntas e a partir das respostas concedidas, gerará um site estático pronto de acordo com tudo que você definiu nesta etapa. Responda a cada uma e dê Enter para que seja exibida a pergunta seguinte. Caso erre alguma coisa, basta dar um Ctrl+C no teclado e repetir o comando pelican-quickstart novamente.

As perguntas que o assistente exibe são as seguintes, nesta exata ordem:

  • Where do you want to create your new web site? (Como já estamos na pasta onde o Pelican será instalado, deixe em branco e tecle Enter);
  • What will be the title of this web site? (Nome do site);
  • Who will be the author of this web site? (Autor principal do site. Até onde eu sei, o Pelican só suporta um autor. Confirmarei posteriormente);
  • What will be the default language of this web site? (Defina aqui o idioma principal do Pelican);
  • Do you want to specify a URL prefix? e.g., http://example.com (Caso o site deva fazer parte de um subdomínio, defina o domínio principal aqui);
  • Do you want to enable article pagination? (Ative ou desative o recurso de paginação do seu site. “y” para Sim e “n” para Não).
  • How many articles per page do you want? (Defina quantas postagens por página você quer que sejam exibidas no seu site);
  • Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Caso deseje usar o comando de compilação “make” do terminal para fazer deploy do seu site. Não será abordado nesse tutorial);
  • Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Ativar esse recurso permitirá testar o site em um servidor web local antes de publicá-lo. Explicarei mais adiante. Ative-o com “y”);
  • Do you want to upload your website using FTP?
  • Do you want to upload your website using SSH?
  • Do you want to upload your website using Dropbox?
  • Do you want to upload your website using S3?
  • Do you want to upload your website using Rackspace Cloud Files?
  • Do you want to upload your website using GitHub Pages?

As últimas seis opções são opções de deploy e hospedagem. Como podemos ver, o Pelican suporta FTP, SSH e deploy para diversos serviços como Dropbox, Amazon, GitHub Pages e outros. Não usaremos nada disso no momento, então responda Não para todas elas ou simplesmente vá apertando Enter.

Ao final do processo sua instalação do Pelican estará pronta para uso e agora você poderá escrever e publicar seus textos.

Criando e publicando conteúdo

Se você tiver feito tudo direitinho até agora, então dentro da pasta src do seu Virtual Env deverá haver os seguintes arquivos e pastas:

Captura de tela de 2015-04-13 22:06:40Antes de mais nada, vamos prestar atenção nestas duas pastas: content e output.

A pasta content é onde deverão ficar todos os arquivos de texto com extensão do Markdown (*.md). Com seu editor de texto favorito, você poderá escrever seus textos e salvá-los nesta pasta.

Ao terminar de redigir um ou mais textos e em seguida rodar um comando específico (veremos isso mais adiante), o Pelican verificará todo o conteúdo da pasta content e em seguida gerará o site HTML com toda sua estrutura de arquivos e pastas dentro da pasta output. É esse conteúdo que poderá ser enviado por deploy para onde você quiser, seja para um servidor web comum via FTP ou SSH, seja para um repositório do GitHub Pages, ou outro destino de sua escolha.

Ou seja: você cria conteúdo “de um lado” na pasta content e o seu site sai prontinho para uso “do outro lado”, na pasta output. Vamos ver como esse processo funciona? Vamos começar escrevendo nosso primeiro texto. Para isso, confira como é a sintaxe da linguagem Markdown na documentação oficial. Não é nada de outro mundo e dá pra se acostumar rapidinho. 🙂

Existem dois tipos de conteúdo possíveis de serem feitos no Pelican: Artigos (posts comuns de blog, exibidos em ordem cronológica inversa) e Páginas, que geralmente não precisam ser alterados com frequência (como uma página Sobre ou Contato, por exemplo). Comecemos escrevendo um artigo para nosso site.

Todo artigo e página do Pelican deve obrigatoriamente ter nas primeiras linhas alguns metadados de identificação do texto. Dados como título e autor do texto, data e hora de publicação, categorias e tags às quais o texto pertence, entre outros.

[sourcecode]
Title: Olá mundo!
Date: 04-13-2015
Category: Início
Tags: portfolio, pelican, páginas estáticas
Slug: ola-mundo
Author: Fulano de Tal
Summary: Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent quam turpis, ultricies quis enim sed, convallis viverra felis. Praesent justo arcu, tempor id ullamcorper eu, fringilla sit amet erat.

– [Site 1](http://google.com/)
– [Site 2](http://google.com/)
– [Site 3](http://google.com/)

# Cabeçalho 1
## Cabeçalho 2
### Cabeçalho 3
#### Cabeçalho 4
##### Cabeçalho 5
###### Cabeçalho 6

[/sourcecode]

Acima vemos um exemplo de artigo escrito em Markdown de acordo com o padrão do Pelican, com os metadados nas primeiras linhas, seguidos do texto em si. Crie seu texto (ou copie o exemplo acima) e salve-o com o nome “ola-mundo.md” dentro da pasta content.

Para criar uma página fixa do seu site (uma página Sobre, por exemplo), basta criar uma outra pasta chamada pages dentro da pasta content e criar um novo arquivo Markdown com o texto de sua página, seguindo os mesmos padrões para Artigos que vimos acima.

Agora é só rodar o seguinte comando:

[sourcecode]
pelican content
[/sourcecode]

O terminal retornará a seguinte informação, confirmando a geração de seu site com um texto publicado localmente.

[sourcecode]
Done: Processed 1 article(s), 0 draft(s) and 0 page(s) in 0.13 seconds.
[/sourcecode]

Para previsualizar nosso site rodando no navegador, basta navegar com o comando de terminal cd para dentro da pasta output (observe que agora há vários arquivos dentro dessa pasta) e rodar um comando nativo do Python para ativar um servidor web local:

[sourcecode]
python -m SimpleHTTPServer
[/sourcecode]

Agora abra seu navegador e entre no endereço http://localhost:8000 e… voilà!

pelican-siteNavegue a vontade pelo seu site novinho em folha e modifique seus textos como achar necessário. Sempre que quiser fazer alguma mudança no conteúdo, rode novamente o comando pelican content no terminal para que o Pelican detecte as mudanças e faça as devidas alterações nos arquivos estáticos. Assim que tudo estiver pronto, basta subir todo o conteúdo da pasta output para seu servidor web remoto.


Enfim, essa é a ferramenta Pelican, que me agradou pra caramba como um meio viável de gerar páginas leves e versáteis para os mais diversos projetos de pequeno porte. É sem dúvida uma boa ferramenta nos casos em que usar o WordPress para construir sites é usar bazuca pra matar muriçoca.

Conforme eu aprenda mais sobre o Pelican, publicarei novos tutoriais. Pretendo aprender a criar novos templates para mudar o visual de um site feito nessa ferramenta (inclusive quero criar um tema responsivo usando o Foundation Framework). Também pretendo ensinar a hospedar um site feito em Pelican no serviço GitHub Pages.

Enquanto isso, vão estudando aí. E não deixem de consultar a documentação do Pelican para mais informações. ^^

Carrinho de compras