|
| 1 | +Title: Criando sites estáticos com Pelican Framework |
| 2 | +Slug: criando-sites-estaticos-com-pelican |
| 3 | +Date: 2014-08-28 00:30 |
| 4 | +Tags: tutorial,pelican,blog,framework |
| 5 | +Author: Arthur Alves |
| 6 | +Email: arthur.4lves@gmail.com |
| 7 | +Github: arthur-alves |
| 8 | +Twitter: Arthur_4lves |
| 9 | +Facebook: Arthur4lves |
| 10 | +Category: Pelican |
| 11 | + |
| 12 | +<figure style="float:right;"> |
| 13 | +<img style="border-radius: 50%;" src="/images/arthur-alves/captaoboing.png"> |
| 14 | +</figure> |
| 15 | +</br> |
| 16 | +###O que é? |
| 17 | + |
| 18 | +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. |
| 19 | +</br> |
| 20 | +###Configurando o ambiente |
| 21 | +<small>**Obs**: *Se já tiver um virtualenv instalado pule esta parte*</small> |
| 22 | +</br> |
| 23 | +Instale no seu ambiente o Python Package Index, ou famoso **pip**: |
| 24 | + |
| 25 | + sudo apt-get install python-pip |
| 26 | + |
| 27 | +Recomendo fortemente o uso do **virtualenv**, é muito simples de instalar. |
| 28 | + |
| 29 | + pip install virtualenv |
| 30 | + |
| 31 | +E logo vamos instalar o assistente dele, o **Virtualenvwrapper** (Opcional): |
| 32 | + |
| 33 | + pip install virtualenvwrapper |
| 34 | + |
| 35 | +Crie uma pasta na sua **home**, como por exemplo, "mkdir .venvs", e configure também seu ~/.bashrc com as seguintes linhas: |
| 36 | + |
| 37 | + export WORKON_HOME=~/.venvs |
| 38 | + source /usr/local/bin/virtualenvwrapper.sh |
| 39 | + |
| 40 | +Depois valide: |
| 41 | + |
| 42 | + . ~/.bashrc |
| 43 | + |
| 44 | +Agora crie seu virtualenv com o seguinte comando: |
| 45 | + |
| 46 | + mkvirtualenv pelican |
| 47 | + |
| 48 | + |
| 49 | +</br> |
| 50 | +###Instalando o Pelican |
| 51 | + |
| 52 | +Agora que o ambiente está pronto, vamos instalar o Pelican. Basta fazer o seguinte: |
| 53 | + |
| 54 | + pip install pelican markdown |
| 55 | + |
| 56 | +<small>**Obs**: *Por padrão o Pelican utiliza o rst, mas vou utilizar o markdown. Se não quiser, remova o markdown da instalação.*</small> |
| 57 | + |
| 58 | +Crie uma pasta separada para trabalhar com o Pelican e iniciarmos nossas tarefas. |
| 59 | +Feito isso, vamos iniciar com o comando abaixo: |
| 60 | + |
| 61 | + pelican-quickstart |
| 62 | + |
| 63 | +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: |
| 64 | + |
| 65 | + Where do you want to create your new web site? [.] #pasta onde você quer salvar seu projeto |
| 66 | + What will be the title of this web site? #Titulo do site |
| 67 | + Who will be the author of this web site? #Seu nome aqui |
| 68 | + What will be the default language of this web site? [en] - #pt para portugues |
| 69 | + Do you want to specify a URL prefix? e.g., http://example.com (Y/n) - #Url do seu blog |
| 70 | + What is your URL prefix? #www.seublog.dev |
| 71 | + Do you want to enable article pagination? (Y/n) - #Paginação |
| 72 | + How many articles per page do you want? [10] - #Itens por paginação |
| 73 | + Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n) - Sim - #Facilita muito |
| 74 | + Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n) - #Um server para testes |
| 75 | + Do you want to upload your website using FTP? (y/N) - #Opcional |
| 76 | + Do you want to upload your website using SSH? (y/N) - #Opcional |
| 77 | + Do you want to upload your website using Dropbox? (y/N) - #Opcional |
| 78 | + Do you want to upload your website using S3? (y/N) - #Opcional |
| 79 | + Do you want to upload your website using Rackspace Cloud Files? (y/N) - #Opcional |
| 80 | + Do you want to upload your website using GitHub Pages? (y/N) - #Opcional |
| 81 | + |
| 82 | + |
| 83 | +Feito isso ele irá criar uma estrutura com esta abaixo: |
| 84 | + |
| 85 | +>├── content |
| 86 | +│ └── teste.md # este arquivo é o que vamos adicionar |
| 87 | +├── output |
| 88 | +├── develop_server.sh |
| 89 | +├── fabfile.py |
| 90 | +├── Makefile |
| 91 | +├── pelicanconf.py |
| 92 | +└── publishconf.py |
| 93 | + |
| 94 | +</br> |
| 95 | + |
| 96 | +Seguindo a estrutura acima, dentro da pasta **content**, crie o arquivo **teste.md** para iniciarmos |
| 97 | +nosso primeiro post. |
| 98 | + |
| 99 | +E vamos digitar o seguinte: |
| 100 | + |
| 101 | + Title: Hello Pelican! |
| 102 | + Date: 2014-08-19 17:00 |
| 103 | + Category: Python |
| 104 | + Tags: pelican, markdown |
| 105 | + Slug: primeiro-artigo |
| 106 | + Author: Arthur Alves |
| 107 | + Summary: Um resumo sobre o post do Pelican |
| 108 | + |
| 109 | + #Testando nosso primeiro post no Pelican |
| 110 | + |
| 111 | + Pelican é um gerador de páginas estáticas criado em python para facilitar nossa vida, na |
| 112 | + criação de blogs, landingpages ou site estáticos. |
| 113 | + |
| 114 | +</br> |
| 115 | +Salve o nosso arquivo, volte para a pasta raiz do projeto e vamos ver o nosso resultado com o seguinte comando: |
| 116 | + |
| 117 | + make html && make serve |
| 118 | + |
| 119 | +ou |
| 120 | + |
| 121 | + ./develop_server.sh start |
| 122 | + |
| 123 | +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**. |
| 124 | + |
| 125 | +Se você respondeu "Y", no pelican-quickstart para gerar seu **make file**, estes comandos irão funcionar. |
| 126 | +E você pode ver seu resultado em [http://127.0.0.1:8000/](http://127.0.0.1:8000/) |
| 127 | + |
| 128 | +Mas se não gerou, não tem problema, você pode fazer da seguinte forma: na pasta raiz do projeto digite: |
| 129 | + |
| 130 | + pelican content -s pelicanconf.py -o output |
| 131 | + |
| 132 | +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. |
| 133 | +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. |
| 134 | + |
| 135 | +### Temas e um pouco do arquivo pelicanconf.py. |
| 136 | + |
| 137 | +Abra seu arquivo **pelicanconf.py**, e veja seu conteudo. Repare que existe algumas variáveis que com a ajuda do **[Jinja2](http://jinja.pocoo.org/docs/)**, ele popula algumas informações no template, vejamos por exemplo abaixo. |
| 138 | + |
| 139 | + #!/usr/bin/env python |
| 140 | + # -*- coding: utf-8 -*- # |
| 141 | + from __future__ import unicode_literals |
| 142 | + |
| 143 | + AUTHOR = u'Arthur Alves' # Autor do site |
| 144 | + SITENAME = u'Meu Blog Pelican' # Nome do site |
| 145 | + SITEURL = 'blogdoarthur.dev' # url do site |
| 146 | + |
| 147 | + TIMEZONE = 'America/Sao_Paulo' |
| 148 | + |
| 149 | + DEFAULT_LANG = u'pt' |
| 150 | + |
| 151 | +Altere conforme a sua necessidade. Em **TIMEZONE**, caso o seu seja diferente, você pode alterar conforme esta página no [Wikipedia](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Vamos agora instalar um tema, utilizando o comando facilitador **pelican-themes**, digite no seu terminal: |
| 152 | + |
| 153 | + pelican-themes -l |
| 154 | + |
| 155 | +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](https://github.com/getpelican/pelican-themes), veja pelas screenshots qual te agrada mais. Se quiser baixar todos clone o diretório, ou clique em download Zip ou clicando [aqui](https://github.com/getpelican/pelican-themes/archive/master.zip). |
| 156 | + |
| 157 | +Depois de escolhido seu tema, vamos usar o seguinte comando na pasta raiz do seu projeto para instalá-los: |
| 158 | + |
| 159 | + pelican-themes --install caminho/onde/baixou/seu-tema/favorito |
| 160 | + |
| 161 | +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: |
| 162 | + |
| 163 | + THEME = u'themes/o-tema-que-escolheu' |
| 164 | + |
| 165 | + |
| 166 | +Depois disso só digitar novamente: |
| 167 | + |
| 168 | + make html && make serve |
| 169 | + |
| 170 | +E seu tema está instalado. Mais sobre configurações deste arquivo leia na [Doc do Pelican](http://docs.getpelican.com/). |
| 171 | + |
| 172 | +</br> |
| 173 | + |
| 174 | +###Curiosidades e erros. |
| 175 | + |
| 176 | +O nome **Pelican** é um anagrama de **calepin**, que significa bloco de notas em francês. |
| 177 | + |
| 178 | +O site do Python Club é feito com o framework Pelican. |
| 179 | + |
| 180 | +Se você teve algum erro de encode ou coisa do tipo: |
| 181 | + |
| 182 | + UnicodeEncodeError: 'ascii' codec can't encode character u'\xc9' in position 13: ordinal not in range(128) |
| 183 | + |
| 184 | +Isso significa que sua versão do Pelican é mais antiga, pois isso já foi corrigido e você pode instalar direto do repositório.: |
| 185 | + |
| 186 | + pip install -e "git+https://github.com/getpelican/pelican.git#egg=pelican" |
| 187 | + |
| 188 | +Ou então trocar a variável $LANG, que deu certo com algumas pessoas no [github](https://github.com/getpelican/pelican), digite no terminal o seguinte: |
| 189 | + |
| 190 | + export LANG=en.UTF-8 |
| 191 | + |
| 192 | +Pois é, funciona. Mas prefira instalar a versão mais nova, já com o patch. |
| 193 | + |
| 194 | +Bem pessoal, é simples, mas espero que ajude o pessoal a ficar mais íntimo do Pelican e ajudar com o [pythonclub](http://pythonclub.com.br/). |
| 195 | + |
0 commit comments