Мы рады анонсировать Cactus 3. Он содержит ряд замечательных новых функций, таких как снятие отпечатков активов, конвейер ресурсов, красивые URL-адреса, собственные события файловой системы Mac, автоматическая настройка сервера имен, поддержка нескольких серверов развертывания (сайты Google) и многое другое. Были переписаны большие части кода, сопровождаемые обширным набором модульных тестов. Большое спасибо Томасу Ороско и другим участникам.
Cactus — простой, но мощный генератор статических веб-сайтов, использующий Python и систему шаблонов Django. Cactus также упрощает локальную разработку и развертывание вашего сайта напрямую на S3. Он отлично подходит для корпоративных, портфолио, личных сайтов, веб-сайтов поддержки и блогов.
Чтобы получить краткий обзор, посмотрите этот короткий видеоурок.
Cactus основан на идее, что большинство динамических функций на веб-сайтах в наши дни можно реализовать с помощью Javascript, в то время как сам сайт может оставаться статичным. Статические веб-сайты легко размещать и обычно работают очень быстро.
Я разработал Cactus, потому что мне нужна была стандартная и простая система, которую дизайнеры Sofa могли бы использовать для создания и развертывания быстрых веб-сайтов. Таким образом, типичными пользователями будут дизайнеры, которые разбираются в технологиях, хотят использовать шаблоны, но не любят возиться с настройкой 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
Вуаля. Ваш сайт создан 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.
Когда вы создаете свой сайт, он создает статическую версию в папке сборки, которую вы можете загрузить на любой хост. По сути, он будет отображать каждую страницу из папки ваших страниц, копировать ее в папку сборки и добавлять к ней все статические ресурсы, чтобы она стала автономным веб-сайтом. Вы можете создать свой сайт следующим образом:
cd [your-cactus-path]
cactus build
Теперь ваш визуализированный веб-сайт можно найти в (скрытой) папке [path]/.build. Cactus также может запустить небольшой веб-сервер для предварительного просмотра вашего сайта и обновления его при внесении каких-либо изменений. Это очень удобно при разработке, чтобы получить живую визуальную обратную связь.
Вы можете запустить его следующим образом:
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 может развернуть ваш веб-сайт непосредственно на S3. Все, что вам нужно, — это ваши учетные данные Amazon и имя корзины. Cactus запоминает их в файле конфигурации с именем config.json, чтобы сделать будущие развертывания безболезненными. Секретный ключ надежно хранится в Связке ключей или аналогичных службах в других ОС.
cactus deploy
После развертывания вы можете напрямую посетить веб-сайт. 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
в своем проекте, чтобы понять, как это работает. Добавить свои собственные оптимизаторы очень легко!
Если вы хотите, чтобы ваша карта сайта имела абсолютные пути, вам нужно добавить ключ URL-адреса сайта в ваш config.json.
Вы можете включить это, изменив конфигурацию и добавив:
"site-url": "http://yoursite.com",
Обратите внимание: это необходимо сделать, если вы хотите, чтобы ваша карта сайта была действительна для Инструментов Google для веб-мастеров.
Если вы не хотите использовать «.html» в своих URL-адресах, Cactus может переписать их для вас и заставить «/my-page.html» выглядеть как «/my-page/», создав «/my- страница/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.