Temos o prazer de anunciar o Cactus 3. Ele traz um conjunto de novos recursos excelentes, como impressão digital de ativos, pipeline de ativos, URLs bonitos, eventos nativos do sistema de arquivos Mac, configuração automática de servidores de nomes, suporte para back-ends de implantação múltipla (Google Sites) e muito mais. Grandes partes do código foram reescritas, acompanhadas por um extenso conjunto de testes unitários. Muito obrigado a Thomas Orozco e outros colaboradores.
Cactus é um gerador de sites estáticos simples, mas poderoso, usando Python e o sistema de templates Django. O Cactus também facilita o desenvolvimento local e a implantação direta do seu site no S3. Funciona muito bem para sites e blogs de empresas, portfólio, pessoais, de suporte.
Para obter uma visão geral rápida, assista a este breve tutorial em vídeo.
O Cactus é baseado na ideia de que a maioria dos recursos dinâmicos dos sites hoje em dia podem ser feitos usando Javascript, enquanto o site real pode permanecer estático. Sites estáticos são fáceis de hospedar e geralmente muito rápidos.
Desenvolvi o Cactus porque queria um sistema padrão e fácil que os designers da Sofa pudessem usar para construir e implantar sites rápidos. Portanto, usuários típicos seriam designers que entendem de tecnologia, desejam usar modelos, mas não gostam de mexer na configuração do Django ou S3.
Desde então, ele evoluiu bastante com um sistema de plugins que suporta blogs, spriting, versionamento e é extensível.
Você pode encontrar mais discussões sobre geradores de sites estáticos nesta discussão do Hacker News.
Há também um exemplo de projeto de blog incluído.
Instale o Cactus com o seguinte forro
sudo easy_install cactus
Se você não viu nenhum erro, agora você pode gerar um novo projeto
cactus create ~/www.mysite.com
Para começar a editar e visualizar seu site, digite o seguinte. Em seguida, aponte seu navegador para localhost:8000 e comece a editar. O Cactus reconstruirá automaticamente seu projeto e atualizará seu navegador com as alterações.
cd ~/www.mysite.com
cactus serve
Quando estiver pronto para implantar seu site no S3, você poderá executar o seguinte. Você precisará de suas chaves de acesso da Amazon. Se você ainda não tem um, leia como conseguir um aqui.
cactus deploy
Voilá. Seu site gerado pela Cactus e hospedado no S3!
Você pode criar um novo projeto gerando uma nova estrutura de projeto como esta. Certifique-se de que a pasta de destino ainda não exista.
cactus create [path]
Se você não viu nenhum erro, o caminho apontado deve ficar assim.
- .build Generated site (upload this to your host)
- pages Your actual site pages
- index.html
- sitemap.xml
- robots.txt
- error.html A default 404 page
- templates Holds your django templates
- base.html
- static Directory with static assets
- images
- css
- js
- plugins A list of plugins. To enable remove disabled from the name
Depois de gerar seu site você pode começar a construir adicionando páginas aos conteúdos, que podem contar com templates. Então, por exemplo, se você quiser uma página /articles/2010/my-article.html
você criaria o arquivo com diretórios na sua pasta de páginas. Então você pode editar o arquivo e usar os recursos de modelo do Django.
Quando você cria seu site, ele gera uma versão estática na pasta de construção que você pode enviar para qualquer host. Basicamente, ele irá renderizar cada página da sua pasta de páginas, copiá-la para a pasta de construção e adicionar todos os ativos estáticos a ela para que se torne um site independente. Você pode construir seu site assim:
cd [your-cactus-path]
cactus build
Seu site renderizado agora pode ser encontrado na pasta (oculta) [path]/.build. O Cactus também pode executar um pequeno servidor web para visualizar seu site e atualizá-lo quando você fizer qualquer alteração. Isso é realmente útil durante o desenvolvimento para obter feedback visual ao vivo.
Você pode executá-lo assim:
cactus serve
O Cactus facilita o link relativo para páginas e ativos estáticos dentro do seu projeto usando as tags de modelo {% static %} e {% url %}. Por exemplo, se você estiver na página /blog/2011/Jan/my-article.html
e quiser criar um link para /contact.html
você escreveria o seguinte:
<a href="{% url '/contact.html' %}">Contact</a>
Basta usar o URL que você normalmente usaria: não se esqueça da barra inicial.
Cactus usa os modelos Django. Eles devem ser muito semelhantes a outros sistemas de templates e ter alguns recursos interessantes, como herança. Resumindo: uma variável se parece com esta {{ name }}
e uma tag como esta {% block title %}Welcome{% endblock %}
. Você pode ler a documentação completa no site do Django.
Para habilitar um plugin para o seu site, altere o nome do arquivo de [PLUGIN].disabled.py para [PLUGIN].py.
O Cactus pode implantar seu site diretamente no S3, tudo que você precisa são suas credenciais da Amazon e um nome de bucket. O Cactus se lembra disso em um arquivo de configuração chamado config.json para tornar as implantações futuras fáceis. A chave secreta é armazenada com segurança no Keychain ou em serviços semelhantes em outros sistemas operacionais.
cactus deploy
Após a implantação, você pode visitar o site diretamente. O Cactus também garante que todos os seus arquivos de texto sejam compactados e adiciona cabeçalhos de cache.
Para obter um exemplo completo de como construir um blog sobre o Cactus, consulte CactusBlog.
O plugin do blog obtém o título da postagem, o autor e a data dos metadados. Por exemplo:
title: My first post
author: Koen Bok
date: 22-07-2012
{% extends "post.html" %}
{% block body %}
{% endblock %}
Modifique config.json
para definir um caminho de blog personalizado, nome de autor padrão ou padrão de data usado para analisar metadados. Os padrões são:
"blog": {
"path": "blog",
"author": "Unknown",
"date-format": "%d-%m-%Y"
}
Por padrão você pode declarar variáveis a serem incluídas acima de cada página, por exemplo:
test_text: Lorem Ipsum
<p>{{ test_text }}</p>
Você pode declarar as variáveis usando YAML. Basta cercar o bloco com os ---
e ...
Separadores de Documentos. Então os objetos e arrays estarão disponíveis dentro dos templates:
---
header_text: Lorem Ipsum
custom_object:
name: Lorem
description: Ipsum
custom_array:
-
name: lorem
-
name: ipsum
...
{% for item in custom_array %}
<p>{{ header_text }}: {{ item.name }}</p>
{% endfor %}
<p>{{ custom_object.name }} | {{ custom_object.description }}</p>
A biblioteca PyYAML é usada para esta funcionalidade.
O Cactus vem com um pipeline de ativos para seus arquivos estáticos. Se desejar usá-lo, certifique-se de usar a tag de modelo {% static %} para vincular aos seus ativos estáticos: eles podem ser renomeados no processo.
Modifique config.json
e adicione as extensões que você deseja registrar:
"fingerprint": [
"js",
"css"
],
Isso permite ativar o cache com datas de expiração longas. Quando um arquivo é alterado, seu nome refletirá a alteração. Ótimo para quando você usa um CDN.
Modifique config.json
e adicione as extensões que deseja otimizar:
"optimize": [
"js",
"css"
],
Por padrão, o Cactus usará:
Confira plugins/static_optimizes.py
em seu projeto para entender como isso funciona. É muito fácil adicionar seus próprios otimizadores!
Se desejar que seu mapa do site tenha caminhos absolutos, você precisa adicionar uma chave de URL do site ao seu config.json
Você pode ativar isso adicionando, modificando sua configuração e adicionando:
"site-url": "http://yoursite.com",
Observe que você precisa fazer isso se quiser que seu mapa do site seja válido para as Ferramentas do Google para webmasters.
Se você não quiser ter ".html" em seus URLs, o Cactus pode reescrevê-los para você e fazer com que "/my-page.html" pareça "/my-page/", criando o "/my- arquivo page/index.html".
Você pode ativar isso adicionando, modificando sua configuração e adicionando:
"prettify": true
Observe que se for usar isso, você definitivamente deve definir seu "Meta canônico" para o URL que está usando, para não prejudicar suas classificações de pesquisa:
<link rel="canonical" href="{{ CURRENT_PAGE.absolute_final_url }}" />
Para configurar uma zona hospedada e gerar os registros de servidor de nomes corretos para seu domínio, certifique-se de que seu bucket seja um nome de domínio válido e execute:
cactus domain:setup
O Cactus retornará com um conjunto de servidores de nomes que você poderá inserir com seu registrador. Para ver a lista novamente, execute:
cactus domain:list
Se o seu domínio estiver 'nu' (por exemplo, sem www), o Cactus adicionará a criação de um intervalo extra que redireciona a variante www do seu domínio para o seu domínio nu (portanto, www.cactus.com para cactus.com). Todos os itens acima são apenas da Amazon por enquanto.
O Cactus gerará automaticamente um arquivo robots.txt
e sitemap.xml
para você com base em suas páginas.
Isso ajudará os bots a indexar suas páginas para Google e Bing, por exemplo.
Cactus é testado em Python 2.6, 2.7, 3.4 e 3.5. Provavelmente também funciona no Python 3.3.