Nous sommes heureux d'annoncer Cactus 3. Il apporte un ensemble de nouvelles fonctionnalités intéressantes telles que l'empreinte digitale des actifs, un pipeline d'actifs, de jolies URL, des événements natifs du système de fichiers Mac, la configuration automatique du serveur de noms, la prise en charge de plusieurs backends de déploiement (Google Sites) et bien plus encore. De grandes parties du code ont été réécrites, accompagnées d'une vaste suite de tests unitaires. Un grand merci à Thomas Orozco et aux autres contributeurs.
Cactus est un générateur de sites Web statiques simple mais puissant utilisant Python et le système de modèles Django. Cactus facilite également le développement local et le déploiement de votre site directement sur S3. Il fonctionne très bien pour les sites Web et les blogs d’entreprise, de portefeuille, personnels, d’assistance.
Pour avoir un aperçu rapide, regardez ce court didacticiel vidéo.
Cactus est basé sur l'idée que la plupart des fonctionnalités dynamiques des sites Web de nos jours peuvent être réalisées en utilisant Javascript tandis que le site lui-même peut rester statique. Les sites Web statiques sont faciles à héberger et généralement très rapides.
J'ai développé Cactus parce que je voulais un système standard et simple que les concepteurs de Sofa pourraient utiliser pour créer et déployer des sites Web rapides. Les utilisateurs typiques seraient donc des concepteurs férus de technologie, souhaitant utiliser des modèles, mais n'aimant pas se soucier de la configuration de Django ou de S3.
Depuis lors, il a beaucoup évolué avec un système de plugins qui prend en charge les blogs, les spritings, le versioning et qui est extensible.
Vous pouvez trouver plus de discussions sur les générateurs de sites statiques dans cette discussion Hacker News.
Un exemple de projet de blog est également inclus.
Installez Cactus avec le liner suivant
sudo easy_install cactus
Si vous n'avez vu aucune erreur, vous pouvez maintenant générer un nouveau projet
cactus create ~/www.mysite.com
Pour commencer à modifier et à prévisualiser votre site, tapez ce qui suit. Pointez ensuite votre navigateur sur localhost:8000 et commencez à éditer. Cactus reconstruira automatiquement votre projet et actualisera votre navigateur en cas de modifications.
cd ~/www.mysite.com
cactus serve
Une fois que vous êtes prêt à déployer votre site sur S3, vous pouvez exécuter ce qui suit. Vous aurez besoin de vos clés d'accès Amazon. Si vous n'en avez pas encore, découvrez comment en obtenir un ici.
cactus deploy
Voilà. Votre site internet généré par Cactus et hébergé sur S3 !
Vous pouvez créer un nouveau projet en générant une nouvelle structure de projet comme celle-ci. Assurez-vous que le dossier de destination n'existe pas encore.
cactus create [path]
Si vous n’avez vu aucune erreur, le chemin que vous avez indiqué devrait maintenant ressembler à ceci.
- .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
Après avoir généré votre site, vous pouvez commencer à créer en ajoutant des pages au contenu, qui peuvent s'appuyer sur des modèles. Ainsi, par exemple, si vous voulez une page /articles/2010/my-article.html
vous créerez le fichier avec les répertoires dans votre dossier pages. Ensuite, vous pouvez modifier le fichier et utiliser les fonctionnalités de modèle de Django.
Lorsque vous créez votre site, il génère une version statique dans le dossier de construction que vous pouvez télécharger sur n'importe quel hôte. Fondamentalement, il affichera chaque page de votre dossier de pages, la copiera dans le dossier de construction et y ajoutera tous les éléments statiques afin qu'il devienne un site Web autonome. Vous pouvez créer votre site comme ceci :
cd [your-cactus-path]
cactus build
Votre site Web rendu peut maintenant être trouvé dans le dossier (caché) [chemin]/.build. Cactus peut également exécuter un petit serveur Web pour prévisualiser votre site et le mettre à jour lorsque vous apportez des modifications. C'est vraiment pratique lors du développement pour obtenir un retour visuel en direct.
Vous pouvez l'exécuter comme ceci :
cactus serve
Cactus facilite la création de liens relatifs vers des pages et des ressources statiques au sein de votre projet en utilisant les balises de modèle {% static %} et {% url %}. Par exemple, si vous êtes à la page /blog/2011/Jan/my-article.html
et que vous souhaitez créer un lien vers /contact.html
vous écrivez ce qui suit :
<a href="{% url '/contact.html' %}">Contact</a>
Utilisez simplement l'URL que vous utiliseriez normalement : n'oubliez pas la barre oblique de début.
Cactus utilise les modèles Django. Ils devraient être très similaires aux autres systèmes de modèles et avoir des fonctionnalités intéressantes comme l'héritage. En un mot : une variable ressemble à ceci {{ name }}
et une balise comme ceci {% block title %}Welcome{% endblock %}
. Vous pouvez lire la documentation complète sur le site Django.
Pour activer un plugin pour votre site, modifiez le nom du fichier de [PLUGIN].disabled.py en [PLUGIN].py.
Cactus peut déployer votre site Web directement sur S3, tout ce dont vous avez besoin sont vos informations d'identification Amazon et un nom de bucket. Cactus s'en souvient dans un fichier de configuration nommé config.json pour rendre les futurs déploiements indolores. La clé secrète est stockée en toute sécurité dans le trousseau ou dans des services similaires sur d'autres systèmes d'exploitation.
cactus deploy
Après le déploiement, vous pouvez visiter le site Web directement. Cactus s'assure également que tous vos fichiers texte sont compressés et ajoute des en-têtes de mise en cache.
Pour un exemple complet de création d’un blog sur Cactus, voir CactusBlog.
Le plugin Blog prend le titre de l’article, l’auteur et la date des métadonnées. Par exemple:
title: My first post
author: Koen Bok
date: 22-07-2012
{% extends "post.html" %}
{% block body %}
{% endblock %}
Modifiez config.json
pour définir un chemin de blog personnalisé, un nom d'auteur par défaut ou un modèle de date utilisé pour analyser les métadonnées. Les valeurs par défaut sont :
"blog": {
"path": "blog",
"author": "Unknown",
"date-format": "%d-%m-%Y"
}
Par défaut vous pouvez déclarer les variables à inclure au-dessus de chaque page, par exemple :
test_text: Lorem Ipsum
<p>{{ test_text }}</p>
Vous pouvez plutôt déclarer les variables en utilisant YAML. Entourez simplement le bloc avec les séparateurs de documents ---
et ...
Ensuite, les objets et les tableaux seront disponibles dans les modèles :
---
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>
La bibliothèque PyYAML est utilisée pour cette fonctionnalité.
Cactus est livré avec un pipeline d'actifs pour vos fichiers statiques. Si vous souhaitez l'utiliser, assurez-vous d'utiliser la balise de modèle {% static %} pour créer un lien vers vos ressources statiques : elles pourraient être renommées au cours du processus.
Modifiez config.json
et ajoutez les extensions pour lesquelles vous souhaitez prendre des empreintes :
"fingerprint": [
"js",
"css"
],
Cela vous permet d'activer la mise en cache avec des dates d'expiration longues. Lorsqu'un fichier change, son nom reflète le changement. Idéal lorsque vous utilisez un CDN.
Modifiez config.json
et ajoutez les extensions que vous souhaitez optimiser :
"optimize": [
"js",
"css"
],
Par défaut, Cactus utilisera :
Consultez plugins/static_optimizes.py
dans votre projet pour comprendre comment cela fonctionne. C'est très simple d'ajouter vos propres optimiseurs !
Si vous souhaitez que votre plan de site ait des chemins absolus, vous devez ajouter une clé d'URL de site à votre config.json
Vous pouvez l'activer en ajoutant, en modifiant votre configuration et en ajoutant :
"site-url": "http://yoursite.com",
Notez que vous devez le faire si vous souhaitez que votre plan de site soit valide pour Google Webmaster Tools.
Si vous ne souhaitez pas avoir de ".html" dans vos URL, Cactus peut les réécrire pour vous et faire apparaître "/my-page.html" comme "/my-page/", en créant le "/my-page.html". page/index.html".
Vous pouvez l'activer en ajoutant, en modifiant votre configuration et en ajoutant :
"prettify": true
Notez que si vous envisagez de l'utiliser, vous devez absolument définir votre « Méta canonique » sur l'URL que vous utilisez afin de ne pas nuire à votre classement dans les recherches :
<link rel="canonical" href="{{ CURRENT_PAGE.absolute_final_url }}" />
Pour configurer une zone hébergée et générer les enregistrements de serveur de noms corrects pour votre domaine, assurez-vous que votre bucket est un nom de domaine valide et exécutez :
cactus domain:setup
Cactus reviendra avec un ensemble de serveurs de noms que vous pourrez ensuite saisir auprès de votre registraire. Pour revoir la liste, exécutez :
cactus domain:list
Si votre domaine est « nu » (par exemple sans www), Cactus ajoutera un compartiment supplémentaire qui redirigera la variante www de votre domaine vers votre domaine nu (donc www.cactus.com vers cactus.com). Tout ce qui précède concerne Amazon uniquement pour le moment.
Cactus générera automatiquement un fichier robots.txt
et sitemap.xml
pour vous en fonction de vos pages.
Cela aidera les robots à indexer vos pages pour Google et Bing par exemple.
Cactus est testé sur Python 2.6, 2.7, 3.4 et 3.5. Cela fonctionne probablement aussi sur Python 3.3.