Rebirth, ep. 3

По традиции, в очередные новогодние выходные уже в четвертый раз запускается этот бложек. Предыдущий закончился два года назад, а год назад он закрылся совсем по техническим причинам.

В этот раз было решено все упростить еще на порядок и отказаться от избыточного вордпресса в пользу генераторов статических сайтов на более приятном, чем php, языке, то есть на python. Все плюшки с большим быстродействием, более простым устройтвом и markdown'ом предполагались не менее важными. Рекомендую просмотреть интереный обзор генераторов на хабре.

Первый взгляд упал на Hyde («Where is Jessiaca Hyde?»), но от него пришлось отказаться сперва по причине собственной глупости (не смог завести nginx - см. соотв. раздел ниже) и окончательно из-за его заброшенности (последний коммит был год назад). Поэтому текущий запуск был произведен на Pelican. По мере обрастания бложика важными и не очень финтифлюшками, этот пост будет дополняться.

Архитектурно все было решено довольно просто: сайт полностью располагается в уютной папочке в дропбоксе, которая синхронизируется с сервером. Генерация происходит автоматически на сервере по мере публикации новых исходников постов.

Dropbox

Серверный консольный дропбокс довольно прожорлив, как оказалось. Минимальный сервер на DigitalOcean периодически не тянет такую ношу и прибивает его.

Nginx

Совершенно неочевидным оказалась причина того, что Nginx не хотел отдавать папку из домашней директории (не его, понятное дело). На третий день соития с этой проблемой было решено заглянуть в error log и узреть там, о чудо, «Nginx: stat() failed (13: permission denied)». Решение подоспело моментально.
Pelican оставляет расширения в адресах страниц, избавление от которых также было найдено, но всего лишь за каких-то полдня. Сайтостроитель из меня ещё тот.

Import

Импорт предыдущей инкарнации обошелcя не без приключений. Утилита для конвертации wordpress'a в markdown никак не заводилась из-за нехватки зависимостей (1, 2) и, удивительно, памяти сервера (3]).

sudo apt-get install -y libxml2-dev libxslt1-dev python-dev libz-dev
sudo apt-get build-dep python-lxml
sudo pip install lxml
sudo aptitude istall pandoc

pelican-import --wpfile -o oldsite -m markdown --dir-cat --dir-page ./oldsite.wordpress.2015-01-19.xml

Atom Feed

Оказалось, что тема использует слегка другие имена переменных, что приводило к тому, что юрл фида в теле страницы отображался криво.
Решение: в base.html файле темы нужна замена

<link href="{{ SITEURL }}/{{ FEED }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} ATOM Feed" />

<link href="{{ SITEURL }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} ATOM Feed" />.

Директория темы находится просто:

> pelican-themes -p
/usr/local/lib/python2.7/dist-packages/pelican/themes/monospace/templates/base.html