|
| 1 | +Title: Sites Estáticos com Lektor |
| 2 | +Slug: sites-estaticos-com-lektor |
| 3 | +Date: 2016-04-30 12:00 |
| 4 | +Tags: tutorial,lektor,blog,framework |
| 5 | +Category: Lektor |
| 6 | +Author: Humberto Rocha |
| 7 | +Email: humrochagf@gmail.com |
| 8 | +Github: humrochagf |
| 9 | +Twitter: humrochagf |
| 10 | +Facebook: humrochagf |
| 11 | +Linkedin: humrochagf |
| 12 | + |
| 13 | +**Publicado originalmente em:** [humberto.io/2016/4/sites-estaticos-com-lektor](http://humberto.io/2016/4/sites-estaticos-com-lektor/) |
| 14 | + |
| 15 | +Faz pelo menos 4 anos que eu ensaio para montar um blog, e nessa brincadeira já montei alguns, mas quando chegava na hora de criar o meu eu nunca conseguia publicar. |
| 16 | + |
| 17 | +Inicialmente com ferramentas de publicação como wordpress o problema era a dificuldade de customizar e o tanto de coisa que vinha junto que eu não ia usar mas ficava me tirando a atenção. Em seguida com o [GitHub Pages](https://pages.github.com) eu descobri o [Pelican](http://blog.getpelican.com) por indicação do [Magnun Leno](http://mindbending.org/pt) e comecei a fazer muita coisa com ele, mas da mesma forma que eu ganhei em liberdade de customização, o processo autoral é o mesmo de desenvolvimento, e como descrito no subtitulo do blog, meu lado cientista, pythonista e curioso ficava ali me cutucando para melhorar o site ao invés de escrever conteúdo. |
| 18 | + |
| 19 | +Eis que em uma conversa no [grupo de telegram da comunidade python](https://telegram.me/pythonbr) me citam o Lektor e aí começou a aventura. |
| 20 | + |
| 21 | +## Lektor? |
| 22 | + |
| 23 | +[Lektor](https://www.getlektor.com) é um gerenciador de conteúdo estático criado por [Armin Ronacher](http://lucumr.pocoo.org) (sim, o criador do [flask](http://flask.pocoo.org)) que permite a criação de websites a partir de arquivos de texto. |
| 24 | + |
| 25 | +## Porque usar? |
| 26 | + |
| 27 | +Como descrito no próprio [site](https://www.getlektor.com/docs/what) ele bebeu das fontes dos CMS`s, dos frameworks e dos geradores de site estático e chegou em algo que eu considero um ponto de equilíbrio entre eles, e que nos leva as seguintes vantagens: |
| 28 | + |
| 29 | +- **Estático:** O site final é totalmente estático, o que permite sua hospedagem em qualquer lugar; |
| 30 | +- **CMS:** Uma interface de produção de conteúdo que roda localmente e tira a necessidade de entender programação para poder produzir conteúdo. (no meu caso me tira do mundo do código e me deixa focar no conteúdo); |
| 31 | +- **Framework:** Ele possuí um sistema de models em arquivos de texto e um sistema de templates que usa Jinja2 que cria um ambiente familiar para quem já desenvolveu algo em django, flask e similares; |
| 32 | +- **Deploy:** O sistema de deploy dele é reduzido á uma configuração em um arquivo, o que permite a rápida publicação sem ficar dias aprendendo técnicas de deploy quando tudo que você quer no começo é colocar seu site no ar. |
| 33 | + |
| 34 | +## Instalação |
| 35 | + |
| 36 | +A instalação do Lektor é bem direta: |
| 37 | + |
| 38 | +``` |
| 39 | +$ curl -sf https://www.getlektor.com/install.sh | sh |
| 40 | +``` |
| 41 | + |
| 42 | +Este comando instala diretamente no sistema, se você prefere instalar em sua virtualenv: |
| 43 | + |
| 44 | +``` |
| 45 | +$ virtualenv venv |
| 46 | +$ . venv/bin/activate |
| 47 | +$ pip install Lektor |
| 48 | +``` |
| 49 | + |
| 50 | +Esta forma é desencorajada pelos desenvolvedores pois o lektor gerencia virtualenvs internamente para instalação de seus plugins, portanto caso seja desenvolvedor e quer ter mais controle sobre o lektor instale a versão de desenvolvimento e esteja pronto para sujar as mãos quando for preciso, e quem sabe até contribuir com o desenvolvimento do lektor: |
| 51 | + |
| 52 | +``` |
| 53 | +$ git clone https://github.com/lektor/lektor |
| 54 | +$ cd lektor |
| 55 | +$ make build-js |
| 56 | +$ virtualenv venv |
| 57 | +$ . venv/bin/activate |
| 58 | +$ pip install --editable . |
| 59 | +``` |
| 60 | + |
| 61 | +**Obs.:** requer `npm` instalado para montar a interface de administração. |
| 62 | + |
| 63 | +## Criando o Site |
| 64 | + |
| 65 | +Após a instalação para criar o seu site basta utilizar o comando de criação de projeto: |
| 66 | + |
| 67 | +``` |
| 68 | +$ lektor quickstart |
| 69 | +``` |
| 70 | + |
| 71 | +Ele irá te fazer algumas perguntas e criar um projeto com o nome que você informou. |
| 72 | + |
| 73 | +### Estrutura |
| 74 | + |
| 75 | +Esta é a estrutura básica de um site gerado pelo lektor: |
| 76 | + |
| 77 | +``` |
| 78 | +meusite |
| 79 | +├── assets/ |
| 80 | +├── content/ |
| 81 | +├── templates/ |
| 82 | +├── models/ |
| 83 | +└── meusite.lektorproject |
| 84 | +``` |
| 85 | + |
| 86 | +- **assets:** Pasta onde ficam os arquivos .css, .js, .ico entre outros recursos estáticos; |
| 87 | +- **content:** Pasta onde ficam os arquivos que iram gerar as páginas do site, cada subpasta corresponde a uma página no site gerado; |
| 88 | +- **templates:** Pasta onde ficam os arquivos de template que definem a sua estrutura visual; |
| 89 | +- **models:** Pasta onde ficam os arquivos que definem a modelagem de dados; |
| 90 | +- **meusite.lektorproject:** Arquivo com as configurações gerais do site. |
| 91 | + |
| 92 | +### Executando localmente |
| 93 | + |
| 94 | +Para rodar o site em sua máquina basta entrar no diretório criado e iniciar o servidor local: |
| 95 | + |
| 96 | +``` |
| 97 | +$ cd meusite |
| 98 | +$ lektor server |
| 99 | +``` |
| 100 | + |
| 101 | +Com o servidor rodando acesse [localhost:5000](http://localhost:5000) para ver o resultado: |
| 102 | + |
| 103 | + |
| 104 | + |
| 105 | +### Acessando o Admin |
| 106 | + |
| 107 | +Para acessar o admin clique na imagem de lápis no canto superior direito da página que você criou ou acesse [localhost:5000](http://localhost:5000/admin) |
| 108 | + |
| 109 | + |
| 110 | + |
| 111 | +## Publicando o Site |
| 112 | + |
| 113 | +Exitem duas maneiras de se fazer o deploy do site construído com o lektor, a manual, que é basicamente rodar o comando `build` e copiar manualmente os arquivos para o servidor: |
| 114 | + |
| 115 | +``` |
| 116 | +$ lektor build --output-path destino |
| 117 | +``` |
| 118 | + |
| 119 | +E a forma automática, que pode ser feita (neste caso para o GitHub Pages) adicionando a seguinte configuração no arquivo `meusite.lektorproject`: |
| 120 | + |
| 121 | +```ini |
| 122 | +[servers.production] |
| 123 | +target = ghpages://usuario/repositorio |
| 124 | +``` |
| 125 | + |
| 126 | +E rodando em seguida o comando: |
| 127 | + |
| 128 | +``` |
| 129 | +$ lektor deploy |
| 130 | +``` |
| 131 | + |
| 132 | +**Obs.:** O deploy faz um force push na branch `master` ou `gh-pages` dependendo do tipo de repositório, portanto, cuidado para não sobrescrever os dados de seu repositório. Mantenha o código fonte em uma branch separada, você pode dar uma conferida no [meu repositório](https://github.com/humrochagf/humrochagf.github.io) para ter uma idéia. |
| 133 | + |
| 134 | +Para informações mais detalhadas você pode acessar a [documentação do lektor](https://www.getlektor.com/docs) e também ficar de olho nas próximas postagens. |
0 commit comments