Criando sites estáticos com Pelican Framework
Posted on Qui 21 janeiro 2016 in Pelican
O que é?
As vezes temos a necessidade de criar algo rápido, como por exemplo um blog ou uma landing page, e não desejamos utilizar ferramentas muito robustas como Django, Web2py, etc. Na verdade eu faço isso mas é um exagero. Em um outro projeto meu queria uma solução muito rápida e simples, e é ai que entrou o Pelican, o framework/gerador de páginas estáticas feito em Python. Existem outros geradores em diversas linguagens, mas como nós sabemos, tudo em python é muito mais divertido.
Configurando o ambiente
Obs: Se já tiver um virtualenv instalado pule esta parte Instale no seu ambiente o Python Package Index, ou famoso pip:
sudo apt-get install python-pip
Recomendo fortemente o uso do virtualenv, é muito simples de instalar.
pip install virtualenv
E logo vamos instalar o assistente dele, o Virtualenvwrapper (Opcional):
pip install virtualenvwrapper
Crie uma pasta na sua home, como por exemplo, "mkdir .venvs", e configure também seu ~/.bashrc com as seguintes linhas:
export WORKON_HOME=~/.venvs
source /usr/local/bin/virtualenvwrapper.sh
Depois valide:
. ~/.bashrc
Agora crie seu virtualenv com o seguinte comando:
mkvirtualenv pelican
Instalando o Pelican
Agora que o ambiente está pronto, vamos instalar o Pelican. Basta fazer o seguinte:
pip install pelican markdown
Obs: Por padrão o Pelican utiliza o rst, mas vou utilizar o markdown. Se não quiser, remova o markdown da instalação.
Crie uma pasta separada para trabalhar com o Pelican e iniciarmos nossas tarefas. Feito isso, vamos iniciar com o comando abaixo:
pelican-quickstart
Este comando lhe fará uma série de perguntas sobre seu site, basta responder de acordo com suas necessidades. As opções em maísculas são as default, veja abaixo:
Where do you want to create your new web site? [.] #pasta onde você quer salvar seu projeto
What will be the title of this web site? #Titulo do site
Who will be the author of this web site? #Seu nome aqui
What will be the default language of this web site? [en] - #pt para portugues
Do you want to specify a URL prefix? e.g., http://example.com (Y/n) - #Url do seu blog
What is your URL prefix? #www.seublog.dev
Do you want to enable article pagination? (Y/n) - #Paginação
How many articles per page do you want? [10] - #Itens por paginação
Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n) - Sim - #Facilita muito
Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n) - #Um server para testes
Do you want to upload your website using FTP? (y/N) - #Opcional
Do you want to upload your website using SSH? (y/N) - #Opcional
Do you want to upload your website using Dropbox? (y/N) - #Opcional
Do you want to upload your website using S3? (y/N) - #Opcional
Do you want to upload your website using Rackspace Cloud Files? (y/N) - #Opcional
Do you want to upload your website using GitHub Pages? (y/N) - #Opcional
Feito isso ele irá criar uma estrutura com esta abaixo:
├── content
| └── teste.md # este arquivo é o que vamos adicionar
├── output
├── develop_server.sh
├── fabfile.py
├── Makefile
├── pelicanconf.py
└── publishconf.py
Seguindo a estrutura acima, dentro da pasta content, crie o arquivo teste.md para iniciarmos nosso primeiro post.
E vamos digitar o seguinte:
Title: Hello Pelican!
Date: 2014-08-19 17:00
Category: Python
Tags: pelican, markdown
Slug: primeiro-artigo
Author: Arthur Alves
Summary: Um resumo sobre o post do Pelican
#Testando nosso primeiro post no Pelican
Pelican é um gerador de páginas estáticas criado em python para facilitar nossa vida, na
criação de blogs, landingpages ou site estáticos.
Salve o nosso arquivo, volte para a pasta raiz do projeto e vamos ver o nosso resultado com o seguinte comando:
make html && make serve
ou
./develop_server.sh start
Este último é melhor para se trabalhar, pois a cada alteração ele atualiza automaticamente sem necessidade de reiniciar o comando, que é o caso do make html && make serve.
Se você respondeu "Y", no pelican-quickstart para gerar seu make file, estes comandos irão funcionar. E você pode ver seu resultado em http://127.0.0.1:8000/
Mas se não gerou, não tem problema, você pode fazer da seguinte forma: na pasta raiz do projeto digite:
pelican content -s pelicanconf.py -o output
Com este comando você está dizendo para o Pelican que você quer que todos os arquivos da pasta content, seja transformada em html de acordo com o arquivo de configuração pelicanconf.py, (que foi gerado automaticamente pelo pelican-quickstart lembra?) e deverá ser enviado para a pasta output. Feito isso ele vai gerar os "htmls" na pasta output do projeto. E você pode ver o resultado com o template padrão do Pelican.
Temas e um pouco do arquivo pelicanconf.py.
Abra seu arquivo pelicanconf.py, e veja seu conteudo. Repare que existe algumas variáveis que com a ajuda do Jinja2, ele popula algumas informações no template, vejamos por exemplo abaixo.
1 2 3 4 5 6 7 8 9 10 11 | #!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
AUTHOR = u'Arthur Alves' # Autor do site
SITENAME = u'Meu Blog Pelican' # Nome do site
SITEURL = 'blogdoarthur.dev' # url do site
TIMEZONE = 'America/Sao_Paulo'
DEFAULT_LANG = u'pt'
|
Altere conforme a sua necessidade. Em TIMEZONE, caso o seu seja diferente, você pode alterar conforme esta página no Wikipedia. Vamos agora instalar um tema, utilizando o comando facilitador pelican-themes, digite no seu terminal:
pelican-themes -l
Repare que ele te apresenta todos os temas que você possui. E se quiser instalar outro tema, recomendo que procure no site pelican-themes do github, veja pelas screenshots qual te agrada mais. Se quiser baixar todos clone o diretório, ou clique em download Zip ou clicando aqui.
Depois de escolhido seu tema, vamos usar o seguinte comando na pasta raiz do seu projeto para instalá-los:
pelican-themes --install caminho/onde/baixou/seu-tema/favorito
Esse comando é muito simples, ele só cria uma pasta com o nome de themes, dentro da raiz do projeto e coloca o tema lá, você pode fazer isso manualmente claro. No seu arquivo pelicanconf.py, crie uma variável como esta abaixo com o caminho:
THEME = u'themes/o-tema-que-escolheu'
Depois disso só digitar novamente:
make html && make serve
E seu tema está instalado. Mais sobre configurações deste arquivo leia na Doc do Pelican.
Curiosidades e erros.
O nome Pelican é um anagrama de calepin, que significa bloco de notas em francês.
O site do Python Club é feito com o framework Pelican.
Se você teve algum erro de encode ou coisa do tipo:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xc9' in position 13: ordinal not in range(128)
Isso significa que sua versão do Pelican é mais antiga, pois isso já foi corrigido e você pode instalar direto do repositório.:
pip install -e "git+https://github.com/getpelican/pelican.git#egg=pelican"
Ou então trocar a variável $LANG, que deu certo com algumas pessoas no github, digite no terminal o seguinte:
export LANG=en.UTF-8
Pois é, funciona. Mas prefira instalar a versão mais nova, já com o patch.
Bem pessoal, é simples, mas espero que ajude o pessoal a ficar mais íntimo do Pelican e ajudar com o pythonclub.