Pelican — генератор статических сайтов на Python. Для безопасного старта создайте изолированное окружение, установите Pelican и Markdown, сгенерируйте проект, настройте шаблоны и проверьте результат локальной сборкой. Изменения в конфигурации и темах сначала тестируйте в отдельной ветке или копии, а публикацию выполняйте только после проверки ссылок и содержимого.
Краткая сводка: что вы получите после чтения
- Рабочее Python-окружение с установленным Pelican.
- Понятную структуру проекта с контентом, шаблонами и готовыми файлами.
- Практический процесс публикации материалов в Markdown или reStructuredText.
- Правила безопасной установки плагинов и фиксации зависимостей.
- Способы ускорить сборку и снизить риск ошибок при деплое.
Установка Pelican и подготовка Python‑окружения
Pelican подходит для документации, блога, портфолио и небольших корпоративных сайтов, где не нужны серверные запросы для каждой страницы. Он не лучший выбор, если редакторам требуется сложная административная панель, пользователи должны отправлять данные через сайт или контент часто меняется без участия разработчика.
Подготовьте каталог и виртуальное окружение
Проверьте, что в системе доступны Python и менеджер пакетов:
python3 —version
python3 -m pip —version
Создайте отдельный каталог проекта и окружение:
mkdir my-pelican-site
cd my-pelican-site
python3 -m venv .venv
source .venv/bin/activate
В Windows PowerShell активация выполняется так:
py -m venv .venv
.venv\Scripts\Activate.ps1
Установите Pelican и нужный формат контента:
python -m pip install —upgrade pip
python -m pip install pelican[markdown]
Проверьте установленную команду:
pelican —version
Если установка изменила системный Python, остановитесь и пересоздайте окружение: зависимости проекта не должны смешиваться с глобальными пакетами. Для отката удалите каталог .venv, создайте его заново и установите зависимости из сохранённого файла.
Сгенерируйте каркас проекта
pelican-quickstart
Мастер задаст вопросы о названии сайта, авторе, часовом поясе, URL и каталоге публикации. Если ответы пока неизвестны, используйте временные значения и позже отредактируйте pelicanconf.py. Сохраните изменения в системе контроля версий до начала настройки темы.
Организация структуры сайта и работа с шаблонами Jinja2
Для работы понадобятся терминал, редактор кода, Git и доступ к выбранному хостингу. Типовая структура после запуска мастера выглядит так:
my-pelican-site/
├── content/
├── output/
├── pelicanconf.py
├── publishconf.py
└── tasks.py
Каталог content содержит исходные материалы, output — результат генерации. Конфигурационные файлы задают параметры локальной сборки и публикации. Каталог output обычно не редактируют вручную: его можно удалить и создать заново.
Настройте базовую конфигурацию
AUTHOR = ‘Редакция сайта’
SITENAME = ‘Мой сайт’
SITEURL = »
PATH = ‘content’
TIMEZONE = ‘Europe/Moscow’
DEFAULT_LANG = ‘ru’
ARTICLE_URL = ‘blog/{date:%Y}/{date:%m}/{slug}/’
ARTICLE_SAVE_AS = ‘blog/{date:%Y}/{date:%m}/{slug}/index.html’
STATIC_PATHS = [‘images’, ‘extra’]
DEFAULT_PAGINATION = False
Не добавляйте секреты, токены и пароли в этот файл. Публичные параметры можно хранить в репозитории, а закрытые значения передавать через переменные окружения в CI/CD.
Подключите пользовательскую тему
Создайте каталог темы:
mkdir -p themes/mytheme/templates
mkdir -p themes/mytheme/static/css
Добавьте путь к теме и включите её:
THEME = ‘themes/mytheme’
Минимальный шаблон themes/mytheme/templates/base.html:
<!doctype html>
<html lang=«{{ DEFAULT_LANG }}»>
<head>
<meta charset=«utf-8»>
<meta name=«viewport» content=«width=device-width, initial-scale=1»>
<title>{% block title %}{{ SITENAME }}{% endblock %}</title>
<link rel=«stylesheet» href=«{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/style.css»>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
Jinja2 позволяет переиспользовать общую разметку через блоки и наследование. Не вставляйте непроверенный пользовательский HTML в шаблоны без понимания контекста экранирования и политики безопасности.
Авторинг контента: Markdown, reStructuredText и метаданные
Перед пошаговой работой учтите риски:
- Ошибки в метаданных могут изменить URL, дату или видимость материала.
- Изменение шаблонов способно сломать все страницы, поэтому проверяйте локальную сборку.
- Удаление output безопасно только при условии, что исходники находятся в content и сохранены в Git.
- Ссылки на локальные файлы и изображения нужно проверять после генерации, а не только в редакторе.
-
Создайте материал.
Сохраните файл, например content/articles/first-post.md. Расширение определяет используемый синтаксис.
-
Добавьте метаданные.
Для Markdown используйте заголовок в формате Pelican:
Title: Первый материал
Date: 2026-09-23 10:00
Category: Новости
Tags: Pelican, Python
Slug: first-post
Summary: Краткое описание материалаТекст статьи начинается здесь.
-
Оформите основной текст.
Используйте заголовки, списки, ссылки и блоки кода Markdown. Не меняйте URL вручную после публикации без настройки перенаправлений.
-
Добавьте изображение.
Положите файл в каталог внутри content, например content/images/example.jpg, затем используйте относительный путь:

Проверьте имя файла, регистр букв и наличие изображения в сгенерированном каталоге.
-
При необходимости используйте reStructuredText.
Создайте файл с расширением .rst и оформите метаданные директивами документа. Не смешивайте синтаксис Markdown и reStructuredText в одном файле без специальной настройки.
-
Соберите сайт локально.
pelican contentДля разработки используйте режим наблюдения и локальный сервер, если он доступен в установленной версии:
pelican —listen
-
Проверьте результат в браузере.
Откройте локальный адрес, проверьте заголовок страницы, меню, изображения, внутренние ссылки и отображение на узком экране.
Плагины, расширения и безопасное управление зависимостями
Сначала зафиксируйте рабочее состояние, затем устанавливайте дополнения по одному. Это упрощает поиск причины ошибки и позволяет откатить конкретное изменение.
python -m pip freeze > requirements.txt
Проверяйте результат по чек-листу:
- Виртуальное окружение активировано перед установкой пакетов.
- Новая зависимость записана в файл зависимостей.
- Версии пакетов проверены в тестовой копии проекта.
- Плагины совместимы с используемой версией Pelican.
- Сайт собирается без предупреждений, которые влияют на страницы.
- Ссылки на изображения, CSS и JavaScript открываются корректно.
- Секреты отсутствуют в конфигурации и истории Git.
- Перед обновлением сохранена предыдущая рабочая версия.
Для отката верните предыдущую версию файла зависимостей и выполните установку заново:
python -m pip install -r requirements.txt
Не устанавливайте пакет из случайного архива или непроверенного репозитория. Если расширение требует дополнительных настроек, сначала прочитайте его документацию и протестируйте сборку в отдельной ветке.
Оптимизация сборки: кэширование, инкрементальные сборки и профилирование
Сначала измерьте проблему, затем меняйте конфигурацию. Частые ошибки:
- Редактирование файлов в output вместо исходников в content.
- Использование устаревших сгенерированных файлов после изменения шаблона.
- Случайное отключение очистки каталога, из-за чего остаются удалённые страницы.
- Добавление тяжёлых изображений без оптимизации и проверки размера итоговой страницы.
- Смешивание локального и production-конфигов, из-за чего публикуется неправильный SITEURL.
- Профилирование только локальной сборки без сравнения результата после деплоя.
- Изменение нескольких плагинов одновременно, затрудняющее диагностику.
Для чистой пересборки удалите результат и запустите генерацию заново:
rm -rf output
pelican content
В Windows удаление каталога можно выполнить командой:
Remove-Item -Recurse -Force output
pelican content
Кэширование и инкрементальные режимы применяйте только после проверки документации вашей версии Pelican и используемых плагинов. Если после оптимизации появляются старые страницы, временно вернитесь к чистой сборке и сравните каталог output с предыдущим артефактом.
Деплой и CI/CD: безошибочный выпуск и минимизация рисков
Выбор способа публикации зависит от доступа к серверу, требований к приватности и того, кто запускает сборку.
-
Статический хостинг из Git.
Подходит для публичного сайта: CI собирает Pelican и публикует каталог output. Удобно, когда нужен журнал изменений и автоматическая проверка каждой ветки.
-
Публикация по SSH или rsync.
Подходит для собственного VPS или обычного веб-сервера. Перед копированием сохраните текущую опубликованную версию, чтобы быстро вернуть её при ошибке.
-
Сборка на сервере.
Уместна, если сервер уже содержит Python-окружение и доступ к закрытым зависимостям. Риск выше: результат зависит от состояния сервера, поэтому фиксируйте версии Python и пакетов.
-
Ручная загрузка архива.
Подходит для редких выпусков и простого хостинга. Соберите сайт локально, проверьте архив, загрузите его во временный каталог и переключите публикацию только после проверки.
Минимальный безопасный процесс выпуска:
- Создайте отдельную ветку для изменений.
- Соберите сайт с production-конфигурацией.
- Проверьте ошибки сборки, ссылки, изображения и заголовки.
- Сохраните артефакт или текущую опубликованную версию.
- Опубликуйте новый результат.
- Проверьте сайт после публикации и при проблеме выполните откат.
Решения типичных затруднений и предостережения
Почему команда pelican не найдена?
Обычно виртуальное окружение не активировано или Pelican установлен в другое окружение. Активируйте .venv и запускайте команду через python -m pelican, если исполняемый файл не находится в PATH.
Почему изменения в шаблоне не отображаются?
Удалите каталог output и выполните чистую сборку. Также проверьте, что в конфигурации указан правильный путь THEME и редактируется именно используемый шаблон.
Как безопасно сменить адрес страницы?
Задайте новый Slug только после проверки всех внутренних ссылок. Для уже опубликованного материала настройте перенаправление со старого адреса, иначе внешние ссылки могут перестать работать.
Что делать при ошибке в метаданных?
Откройте сообщение сборщика и проверьте двоеточия, отступы, формат даты и кодировку файла. Если ошибка появилась после изменения, восстановите файл из Git и внесите правку заново.
Нужно ли коммитить каталог output?
Это зависит от модели хостинга. Если публикация выполняется CI из исходников, обычно достаточно хранить исходники и артефакты сборки; при ручной загрузке архив output можно хранить отдельно от исходного проекта.
Как откатить неудачный деплой?
Верните предыдущий коммит или сохранённый артефакт и повторите публикацию. Не исправляйте аварийно файлы прямо на сервере без фиксации причины и результата в репозитории.





















Отзывов пока нет. Вы можете оставить первый.