Cactus 3 を発表できることをうれしく思います。Cactus 3 は、アセットのフィンガープリンティング、アセット パイプライン、きれいな URL、ネイティブ Mac ファイルシステム イベント、自動ネームサーバー構成、複数の展開バックエンド (Google サイト) のサポートなど、一連の優れた新機能をもたらします。コードの大部分が書き直され、広範な単体テストが追加されました。 Thomas Orozco と他の貢献者に感謝します。
Cactus は、Python と Django テンプレート システムを使用した、シンプルだが強力な静的 Web サイト ジェネレーターです。 Cactus を使用すると、ローカルで開発し、サイトを S3 に直接デプロイすることも簡単になります。会社、ポートフォリオ、個人、サポート Web サイトやブログに最適です。
概要を簡単に理解するには、この短いビデオ チュートリアルをご覧ください。
Cactus は、最近の Web サイトのほとんどの動的な機能は Javascript を使用して実行でき、実際のサイトは静的なままでよいという考えに基づいています。静的 Web サイトはホスティングが簡単で、通常は非常に高速です。
私が Cactus を開発したのは、Sofa のデザイナーが高速な Web サイトを構築して展開するために使用できる、標準的で簡単なシステムが欲しかったからです。したがって、典型的なユーザーは、技術に精通していて、テンプレートを使用したいが、django や S3 のセットアップには手間をかけたくないデザイナーになります。
それ以来、ブログ、スプライト、バージョン管理をサポートし、拡張可能なプラグイン システムによってかなり進化しました。
静的サイト ジェネレーターに関する詳細な議論は、この Hacker News ディスカッションで見つけることができます。
ブログ プロジェクトの例も含まれています。
次のワンライナーで Cactus をインストールします
sudo easy_install cactus
エラーが表示されなかった場合は、新しいプロジェクトを生成できます。
cactus create ~/www.mysite.com
サイトの編集とプレビューを開始するには、次のように入力します。次に、ブラウザで localhost:8000 を指定して編集を開始します。 Cactus はプロジェクトを自動的に再構築し、変更に応じてブラウザを更新します。
cd ~/www.mysite.com
cactus serve
サイトを S3 にデプロイする準備ができたら、次のコマンドを実行できます。 Amazon アクセスキーが必要になります。まだお持ちでない場合は、ここで入手方法をお読みください。
cactus deploy
出来上がり。 Web サイトは Cactus によって生成され、S3 でホストされています。
このように新しいプロジェクト構造を生成することで、新しいプロジェクトを作成できます。宛先フォルダーがまだ存在していないことを確認してください。
cactus create [path]
エラーが表示されなかった場合、指定したパスは次のようになります。
- .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
サイトを生成した後、テンプレートを利用してコンテンツにページを追加することで構築を開始できます。たとえば、 /articles/2010/my-article.html
ページが必要な場合は、ページ フォルダー内のディレクトリを含むファイルを作成します。その後、ファイルを編集して、django のテンプレート機能を使用できます。
サイトを構築すると、ビルド フォルダーに静的バージョンが生成され、任意のホストにアップロードできます。基本的に、ページ フォルダーから各ページをレンダリングし、それをビルド フォルダーにコピーし、すべての静的アセットをそれに追加して、自己完結型の Web サイトになります。次のようにサイトを構築できます。
cd [your-cactus-path]
cactus build
レンダリングされた Web サイトが (非表示の) [パス]/.build フォルダーに表示されます。 Cactus は、小さな Web サーバーを実行してサイトをプレビューし、変更を加えたときにサイトを更新することもできます。これは、開発中にライブの視覚的なフィードバックを得るために非常に便利です。
次のように実行できます。
cactus serve
Cactus では、テンプレート タグ {% static %} と {% url %} を使用して、プロジェクト内のページや静的アセットに相対的にリンクすることが簡単にできます。たとえば、 /blog/2011/Jan/my-article.html
ページにいて、 /contact.html
にリンクしたい場合は、次のように記述します。
<a href="{% url '/contact.html' %}">Contact</a>
通常使用する URL を使用してください。先頭のスラッシュを忘れないでください。
Cactus は Django テンプレートを使用します。これらは他のテンプレート システムと非常に似ており、継承などの優れた機能を備えている必要があります。一言で言えば、変数はこの{{ name }}
のようになり、タグはこの{% block title %}Welcome{% endblock %}
のようになります。完全なドキュメントは django サイトで読むことができます。
サイトのプラグインを有効にするには、ファイル名を [PLUGIN].disabled.py から [PLUGIN].py に変更します。
Cactus は Web サイトを S3 に直接デプロイできます。必要なのは、Amazon 認証情報とバケット名だけです。 Cactus はこれらを構成ファイル名 config.json で記憶し、今後のデプロイを容易にします。秘密キーは、キーチェーンまたは他の OS 上の同様のサービスに安全に保存されます。
cactus deploy
導入後は、Web サイトに直接アクセスできます。また、Cactus はすべてのテキスト ファイルが圧縮されていることを確認し、キャッシュ ヘッダーを追加します。
Cactus 上にブログを構築する方法の完全な例については、CactusBlog を参照してください。
ブログ プラグインは、メタデータから投稿のタイトル、作成者、日付を取得します。例えば:
title: My first post
author: Koen Bok
date: 22-07-2012
{% extends "post.html" %}
{% block body %}
{% endblock %}
config.json
変更して、メタデータの解析に使用されるカスタム ブログ パス、デフォルトの作成者名、または日付パターンを設定します。デフォルトは次のとおりです。
"blog": {
"path": "blog",
"author": "Unknown",
"date-format": "%d-%m-%Y"
}
デフォルトでは、各ページの上に含める変数を宣言できます。次に例を示します。
test_text: Lorem Ipsum
<p>{{ test_text }}</p>
代わりに YAML を使用して変数を宣言できます。 ---
と...
ドキュメント区切り文字でブロックを囲むだけです。これで、オブジェクトと配列がテンプレート内で使用できるようになります。
---
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>
この機能にはPyYAMLライブラリが使用されます。
Cactus には、静的ファイル用のアセット パイプラインが付属しています。これを使用したい場合は、必ず {% static %} テンプレート タグを使用して静的アセットにリンクしてください。プロセス中に名前が変更される可能性があります。
config.json
変更し、フィンガープリントしたい拡張機能を追加します。
"fingerprint": [
"js",
"css"
],
これにより、有効期限の長いキャッシュを有効にすることができます。ファイルが変更されると、その変更がファイル名に反映されます。 CDN を使用する場合に最適です。
config.json
変更し、最適化する拡張機能を追加します。
"optimize": [
"js",
"css"
],
デフォルトでは、Cactus は以下を使用します。
これがどのように機能するかを理解するには、プロジェクトのplugins/static_optimizes.py
を確認してください。独自のオプティマイザーを追加するのは非常に簡単です。
サイトマップに絶対パスを含めたい場合は、config.json に site-url キーを追加する必要があります。
これを有効にするには、構成を変更して以下を追加します。
"site-url": "http://yoursite.com",
サイトマップを Google ウェブマスター ツールで有効にしたい場合は、これを行う必要があることに注意してください。
URL に「.html」を含めたくない場合は、Cactus が URL を書き換えて、「/my-page.html」を「/my-page/」のように表示させることができます。ページ/index.html」ファイル。
これを有効にするには、構成を変更して以下を追加します。
"prettify": true
これを使用する場合は、検索ランキングに影響を与えないように、使用している URL に「メタ正規」を必ず設定する必要があることに注意してください。
<link rel="canonical" href="{{ CURRENT_PAGE.absolute_final_url }}" />
ホストゾーンを設定し、ドメインの正しいネームサーバーレコードを生成するには、バケットが有効なドメイン名であることを確認して、次のコマンドを実行します。
cactus domain:setup
Cactus は、レジストラで入力できる一連のネームサーバーを返します。リストを再度表示するには、次のコマンドを実行します。
cactus domain:list
ドメインが「ネイキッド」(www なしなど)の場合、Cactus は、ドメインの www バリアントをネイキッド ドメインにリダイレクトする追加のバケットを作成します(つまり、www.cactus.com を cactus.com に)。上記は今のところAmazonのみです。
Cactus は、ページに基づいてrobots.txt
およびsitemap.xml
ファイルを自動生成します。
これは、ボットが Google や Bing などのページにインデックスを付けるのに役立ちます。
Cactus は Python 2.6、2.7、3.4、および 3.5 でテストされています。おそらくPython 3.3でも動作します。