Содержание статьи
Как человеку, который застал примитивный веб-дизайн девяностых, мне странно видеть, что теперь для любого сайта ставят полноценный движок. WordPress, Drupal, Joomla и прочие популярные CMS рассчитаны на тысячи страниц и поддержку ресурса силами целой команды. Но зачастую их используют, чтобы сделать персональный блог или даже сайт-визитку. Стоит ли городить огород, если всё, что нам нужно — это публиковать статический контент?
Если избавиться от движка и класть на сервер только HTML, то это значительно снизит потребление ресурсов, сделает сайт быстрее, ну и, конечно, упростит (вернее, упразднит) настройку и обновление серверного софта. Можно будет спокойно переходить на хостинг попроще и экономить деньги, а в случае чего в момент мигрировать на другую площадку. Ну и, конечно, такой сайт невозможно будет взломать, ведь взламывать в нем нечего.
Если ты вдруг подумал, что я предлагаю тебе уподобиться пещерным людям и вручную делать каждый .html, то ты ошибаешься. Современный способ иной: запустить CMS на локальной машине, а на сервер выкладывать только статические файлы. Это оставляет возможность пользоваться шаблонизатором: если тебе понадобится поменять что-то в теме, то править каждую страницу не придется.
Генераторы статических сайтов могут взять на себя и такие вещи, как пагинацию, автоматическое создание главной страницы и страниц рубрик, сортировку, а также многие другие штуки, которые обычно реализуются при помощи динамических движков.
В 2013 году в «Хакере» уже публиковалась подборка статических блогогенераторов, статья называлась «Просто пиши». Однако с тех пор прошло много времени и не все перечисленные проекты до сих пор поддерживаются. К тому же в этом классе программ появились новые лидеры. Среди движков на Node.js популярен Hexo, а поклонникам Ruby рекомендую глянуть на Jekyll.
Здесь же мы рассмотрим работу с движком Lektor, который написан на Python и сочетает в себе простоту, удобство и расширяемость, а также обладает вебовой админкой. Запустив локальный сервер, ты сможешь просматривать и редактировать сайт так, будто ты работаешь с полноценной CMS. Закончив редактировать, ты одной командой сможешь синхронизировать изменения с копией на сервере.
Lektor — это новый проект Армина Ронахера, автора популярного минималистичного веб-фреймворка Flask и языка шаблонов Jinja2. Собственно, в Lektor, как и во Flask, используются шаблоны Jinja, и именно в них — вся сила «Лектора».
Ставим Lektor
Команда установки Lektor написана прямо на главной странице сайта. Если у тебя macOS или Linux, то ты можешь просто скопировать ее в командную строку и запустить:
curl -sf https://www.getlektor.com/install.sh | sh
Аналогичная команда есть и для Windows, она заметно длиннее.

Ещё тебе нужно убедиться, что в системе есть Python 2.x и библиотека Imagemagick. В Ubuntu все зависимости ставятся одной командой:
sudo apt-get install python-dev libssl-dev libffi-dev imagemagick
В Windows и macOS для установки Imagemagick тебе сначала понадобится поставить пакетный менеджер — Chocolatey или Homebrew соответственно. Кстати, для macOS у Lektor есть десктопное приложение, которое само установит тебе утилиты командной строки — нужно лишь выбрать пункт меню Install Shell Command.
Если же ты собираешься модифицировать сам Lektor, то разработчики рекомендуют ставить версию с GitHub и создать виртуальное окружение (в других случаях оно не нужно). Руководство ты найдешь на странице проекта.
Разбираем простой проект
Чтобы не создавать каталоги и основные файлы вручную, воспользуемся функцией создания типового проекта с набором стандартных элементов. Для этого открываем терминал, переходим в папку, где будет лежать проект, и пишем
lektor quickstart
Тебе зададут несколько вопросов: как будет называться проект, как написать твое имя, какой каталог использовать и создать ли шаблон для блога.

В последнем случае к тестовому проекту будет добавлена страница с постами и шаблон для них. Рекомендую согласиться — лишние примеры не повредят.

WWW
Сайт getlektor.com — отличное пособие по Lektor сразу в двух смыслах: во-первых, там есть документация, во-вторых, этот сайт сам сделан на Lektor и в нем использованы некоторые неочевидные трюки. Так что в его исходниках всегда можно что-нибудь подсмотреть.
Чтобы глянуть, на то, что у тебя вышло, пиши lektor server
. Запустится локальный сервер, при помощи которого можно тестировать сайты. Обычно он доступен по адресу http://127.0.0.1:5000/
.
Вот, как будет выглядеть тестовая страница.

Обрати внимание на карандаш в правом верхнем углу — это ссылка на редактирование страницы в админке.
Продолжение доступно только подписчикам
Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте
Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке
Вариант 2. Купи один материал
Заинтересовала информация, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для материалов, опубликованных более двух месяцев назад.
Уже подписан?
petrovichtim
08.08.2017 at 14:02
А рекламу от гугла она умеет?
Андрей Письменный
08.08.2017 at 14:11
petrovichtim, А что мешает добавить код AdSense в шаблон?
pancho
08.08.2017 at 18:10
Для сайтов визиток наверное подойдёт, но напильником пилить нужно много
Андрей Письменный
08.08.2017 at 18:51
Для сайтов-визиток вообще ничего особенно делать не нужно. Для проектов масштаба условной домашней странички или блога — штатными инструментами без всяких напильников (если под напильником подразумевается необходимость лезть внутрь движка). Для чего-то более стложного/странного — по ситуации.
pancho
08.08.2017 at 22:57
Под напильником я подразумевал доработку стилей. Приведённые на картинках примеры застряли в эпохе доткомов.
Про условную домашнюю страничку соглашусь… но я бы не стал такую никому показывать 🙂 только для себя
Подумалось об обучающей пользе инструмента… в школе для не сильно искушённой информатички или в университете когда делаешь курсовую в последнюю ночь.
jura12
08.08.2017 at 23:15
вообще-то сохраняешь файл в либреофисе в виде хтмл вот и сайт готов. Dreamweaver раньше такое делал.
jura12
08.08.2017 at 23:31
попробовал в manjaro linux. работает. понравилось. сайт для роутера или для технического сайта пойдет.
Themistocles
16.08.2017 at 20:57
Очень мило, спасибо за примеры, надо будет погонять.
bars
13.10.2017 at 21:13
В блоке [fields.picture] наверное не name=string, а type=string…
jean
28.11.2017 at 12:23
Андрей, спасибо!
Статья просто супер!
jean
27.12.2017 at 11:52
А по-моему отличный инструмент для персонального сайта. Никто не мешает сверстать свои html/css и получить красоту. Прелесть в нормальной админке, которую ты можешь под себя заточить без особых усилий.
Единственное обременение — придется поучить язык шаблонов Jinga.
И круто, что из коробки есть rsync — очень удобно, т.к. позволит заливать дельты изменений на боевой статический сервер. Соответственно экономия трафика.