Wir freuen uns, Cactus 3 ankündigen zu können. Es bietet eine Reihe großartiger neuer Funktionen wie Asset-Fingerprinting, eine Asset-Pipeline, hübsche URLs, native Mac-Dateisystemereignisse, automatische Nameserver-Konfiguration, Unterstützung für mehrere Bereitstellungs-Backends (Google Sites) und mehr. Große Teile des Codes wurden neu geschrieben, begleitet von einer umfangreichen Reihe von Unit-Tests. Vielen Dank an Thomas Orozco und andere Mitwirkende.
Cactus ist ein einfacher, aber leistungsstarker statischer Website-Generator, der Python und das Django-Vorlagensystem verwendet. Cactus erleichtert außerdem die lokale Entwicklung und die direkte Bereitstellung Ihrer Site in S3. Es eignet sich hervorragend für Unternehmens-, Portfolio-, Privat-, Support-Websites und Blogs.
Um einen schnellen Überblick zu erhalten, schauen Sie sich dieses kurze Video-Tutorial an.
Cactus basiert auf der Idee, dass die meisten dynamischen Funktionen auf Websites heutzutage mit Javascript ausgeführt werden können, während die eigentliche Website statisch bleiben kann. Statische Websites sind einfach zu hosten und in der Regel sehr schnell.
Ich habe Cactus entwickelt, weil ich ein einfaches Standardsystem wollte, mit dem Designer bei Sofa schnelle Websites erstellen und bereitstellen können. Typische Benutzer wären also technisch versierte Designer, die Vorlagen verwenden möchten, sich aber nicht gerne mit der Einrichtung von Django oder S3 herumschlagen.
Seitdem hat es sich mit einem Plugin-System, das Blogging, Spriting und Versionierung unterstützt und erweiterbar ist, erheblich weiterentwickelt.
Weitere Diskussionen zu statischen Site-Generatoren finden Sie in dieser Hacker News-Diskussion.
Es ist auch ein Beispiel-Blogprojekt enthalten.
Installieren Sie Cactus mit dem folgenden Einzeiler
sudo easy_install cactus
Wenn Sie keine Fehler sehen, können Sie jetzt ein neues Projekt erstellen
cactus create ~/www.mysite.com
Geben Sie Folgendes ein, um mit der Bearbeitung und Vorschau Ihrer Website zu beginnen. Richten Sie dann Ihren Browser auf „localhost:8000“ und beginnen Sie mit der Bearbeitung. Cactus erstellt Ihr Projekt automatisch neu und aktualisiert Ihren Browser bei Änderungen.
cd ~/www.mysite.com
cactus serve
Sobald Sie bereit sind, Ihre Site auf S3 bereitzustellen, können Sie Folgendes ausführen. Sie benötigen Ihre Amazon-Zugangsschlüssel. Wenn Sie noch keins haben, lesen Sie hier, wie Sie eines bekommen.
cactus deploy
Voila. Ihre von Cactus generierte und auf S3 gehostete Website!
Sie können ein neues Projekt erstellen, indem Sie eine neue Projektstruktur wie diese erstellen. Stellen Sie sicher, dass der Zielordner noch nicht existiert.
cactus create [path]
Wenn Sie keine Fehler gesehen haben, sollte der von Ihnen angegebene Pfad nun so aussehen.
- .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
Nachdem Sie Ihre Website erstellt haben, können Sie mit der Erstellung beginnen, indem Sie Seiten zu Inhalten hinzufügen, die auf Vorlagen basieren können. Wenn Sie beispielsweise eine Seite /articles/2010/my-article.html
wünschen, würden Sie die Datei mit Verzeichnissen in Ihrem Seitenordner erstellen. Anschließend können Sie die Datei bearbeiten und die Vorlagenfunktionen von Django verwenden.
Wenn Sie Ihre Site erstellen, wird im Build-Ordner eine statische Version generiert, die Sie auf einen beliebigen Host hochladen können. Grundsätzlich wird jede Seite aus Ihrem Seitenordner gerendert, in den Build-Ordner kopiert und alle statischen Assets hinzugefügt, sodass daraus eine eigenständige Website wird. Sie können Ihre Website wie folgt erstellen:
cd [your-cactus-path]
cactus build
Ihre gerenderte Website befindet sich jetzt im (versteckten) Ordner [Pfad]/.build. Cactus kann auch einen kleinen Webserver betreiben, um eine Vorschau Ihrer Website anzuzeigen und sie zu aktualisieren, wenn Sie Änderungen vornehmen. Dies ist bei der Entwicklung sehr praktisch, um visuelles Live-Feedback zu erhalten.
Sie können es so ausführen:
cactus serve
Mit Cactus können Sie relativ einfach Links zu Seiten und statischen Assets innerhalb Ihres Projekts erstellen, indem Sie die Vorlagen-Tags {% static %} und {% url %} verwenden. Wenn Sie sich beispielsweise auf der Seite /blog/2011/Jan/my-article.html
befinden und auf /contact.html
verlinken möchten, schreiben Sie Folgendes:
<a href="{% url '/contact.html' %}">Contact</a>
Verwenden Sie einfach die URL, die Sie normalerweise verwenden würden. Vergessen Sie nicht den führenden Schrägstrich.
Cactus verwendet die Django-Vorlagen. Sie sollten anderen Vorlagensystemen sehr ähnlich sein und über einige nette Funktionen wie Vererbung verfügen. Kurz gesagt: Eine Variable sieht so aus {{ name }}
und ein Tag so: {% block title %}Welcome{% endblock %}
. Sie können die vollständige Dokumentation auf der Django-Site lesen.
Um ein Plugin für Ihre Site zu aktivieren, ändern Sie den Dateinamen von [PLUGIN].disabled.py in [PLUGIN].py.
Cactus kann Ihre Website direkt in S3 bereitstellen. Sie benötigen lediglich Ihre Amazon-Anmeldeinformationen und einen Bucket-Namen. Cactus speichert diese in einer Konfigurationsdatei mit dem Namen config.json, um zukünftige Bereitstellungen problemlos zu gestalten. Der geheime Schlüssel wird sicher im Schlüsselbund oder ähnlichen Diensten auf anderen Betriebssystemen gespeichert.
cactus deploy
Nach der Bereitstellung können Sie die Website direkt besuchen. Cactus stellt außerdem sicher, dass alle Ihre Textdateien komprimiert sind und fügt Caching-Header hinzu.
Das vollständige Beispiel zum Erstellen eines Blogs auf Basis von Cactus finden Sie unter CactusBlog.
Das Blog-Plugin übernimmt Titel, Autor und Datum des Beitrags aus Metadaten. Zum Beispiel:
title: My first post
author: Koen Bok
date: 22-07-2012
{% extends "post.html" %}
{% block body %}
{% endblock %}
Ändern Sie config.json
, um einen benutzerdefinierten Blogpfad, einen Standardnamen des Autors oder ein Datumsmuster festzulegen, das zum Parsen von Metadaten verwendet wird. Die Standardeinstellungen sind:
"blog": {
"path": "blog",
"author": "Unknown",
"date-format": "%d-%m-%Y"
}
Standardmäßig können Sie Variablen deklarieren, die über jeder Seite eingefügt werden sollen, zum Beispiel:
test_text: Lorem Ipsum
<p>{{ test_text }}</p>
Sie können die Variablen stattdessen auch mit YAML deklarieren. Umschließen Sie den Block einfach mit den Dokumententrennzeichen ---
und ...
Dann stehen die Objekte und Arrays in den Vorlagen zur Verfügung:
---
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>
Für diese Funktionalität wird die PyYAML- Bibliothek verwendet.
Cactus verfügt über eine Asset-Pipeline für Ihre statischen Dateien. Wenn Sie es verwenden möchten, stellen Sie sicher, dass Sie das Vorlagen-Tag {% static %} verwenden, um eine Verknüpfung zu Ihren statischen Assets herzustellen: Sie werden dabei möglicherweise umbenannt.
Ändern Sie config.json
und fügen Sie die Erweiterungen hinzu, die Sie per Fingerabdruck erfassen möchten:
"fingerprint": [
"js",
"css"
],
Dadurch können Sie Caching mit langen Ablaufdaten aktivieren. Wenn sich eine Datei ändert, spiegelt ihr Name die Änderung wider. Ideal, wenn Sie ein CDN verwenden.
Ändern Sie config.json
und fügen Sie die Erweiterungen hinzu, die Sie optimieren möchten:
"optimize": [
"js",
"css"
],
Standardmäßig verwendet Cactus:
Sehen Sie sich plugins/static_optimizes.py
in Ihrem Projekt an, um zu verstehen, wie das funktioniert. Es ist ganz einfach, eigene Optimierer hinzuzufügen!
Wenn Ihre Sitemap absolute Pfade haben soll, müssen Sie Ihrer config.json einen Site-URL-Schlüssel hinzufügen
Sie können dies aktivieren, indem Sie Ihre Konfiguration ändern und Folgendes hinzufügen:
"site-url": "http://yoursite.com",
Beachten Sie, dass Sie dies tun müssen, wenn Ihre Sitemap für die Google Webmaster-Tools gültig sein soll.
Wenn Sie „.html“ nicht in Ihren URLs haben möchten, kann Cactus diese für Sie umschreiben und dafür sorgen, dass „/meine-seite.html“ wie „/meine-seite/“ aussieht, indem es das „/meine-“ erstellt. page/index.html“-Datei.
Sie können dies aktivieren, indem Sie Ihre Konfiguration ändern und Folgendes hinzufügen:
"prettify": true
Beachten Sie, dass Sie, wenn Sie dies verwenden möchten, Ihr „Meta Canonical“ unbedingt auf die von Ihnen verwendete URL einstellen sollten, um Ihr Suchranking nicht zu beeinträchtigen:
<link rel="canonical" href="{{ CURRENT_PAGE.absolute_final_url }}" />
Um eine gehostete Zone einzurichten und die richtigen Nameserver-Datensätze für Ihre Domain zu generieren, stellen Sie sicher, dass Ihr Bucket ein gültiger Domainname ist, und führen Sie Folgendes aus:
cactus domain:setup
Cactus wird mit einer Reihe von Nameservern zurückkommen, die Sie dann bei Ihrem Registrar eingeben können. Um die Liste erneut anzuzeigen, führen Sie Folgendes aus:
cactus domain:list
Wenn Ihre Domain „nackt“ ist (z. B. ohne www), fügt Cactus einen zusätzlichen Bucket hinzu, der die www-Variante Ihrer Domain auf Ihre nackte Domain umleitet (also www.cactus.com zu cactus.com). Alles oben Genannte ist vorerst nur für Amazon verfügbar.
Cactus generiert automatisch eine robots.txt
und sitemap.xml
Datei basierend auf Ihren Seiten.
Dies wird Bots dabei helfen, Ihre Seiten beispielsweise für Google und Bing zu indizieren.
Cactus wird auf Python 2.6, 2.7, 3.4 und 3.5 getestet. Es funktioniert wahrscheinlich auch unter Python 3.3.