RomeoGolf

Пт 15 Январь 2016

Pelican и создание сайта — начало

Почему статический сайт, почему Pelican и с чего начать

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

Надо сразу упомянуть некоторые детали: излагается точка зрения автора, худо-бедно подтвержденная собственным опытом с использованием настольного компьютера под управлением Windows (XP и 7).

Если возникает навязчивое желание или настоятельная необходимость поселить на просторах интернета немножечко себя, возникает масса поводов для раздумий. Нужно выбрать способ размещения сайта — статический, с использованием системы управления контентом (CMS), что-нибудь совсем самодельное, может быть, с применением каких-нибудь фреймворков или даже без. При выборе CMS или генератора статических сайтов надо определиться с языком, на котором это дело будет крутиться. Надо выбрать хостинг со всеми вытекающими заботами — при приемлемом уровне цены (а лучше — халявы) нужно, чтобы хостер поддерживал нужную CMS и базу данных…

Конечно, сайт можно просто заказать. Разработку, оформление, размещение, поддержку, раскрутку… Только пихай туда статьи и фотки. Но, во-первых, неинтересно, во-вторых, для хобби довольно-таки затратно. Подчеркиваю — речь идет именно о хобби.

Профессионалу очевидно — нормальный инструмент требует соответствующих вложений. Профессиональный инструмент требует порой значительных затрат. Но он для того и служит, чтобы приносить заработок и окупаться. Если сайт предназначается для использования в профессиональной сфере — это инструмент, и отношение к нему должно быть соответствующее. Для себя же это скорее игрушка, можно обойтись и самоделкой.

Почему «статика»

Итак, игрушку хотелось бы подешевле, но такую же, как настоящая. А хостеров так много, они такие разные… Кто-то поддерживает PHP, а кто-то — нет. Где-то можно разместить сайт с движком на Ruby или Python, но не везде. У кого-то MySQL, а у кого-то PostgreSQL… А на самых дешевых (тем более, бесплатных) нет вообще ничего. И получается, что статический сайт не ограничен по площадке размещения — он заработает везде!

Еще один заметный плюс для «чайника» — для того, чтобы посмотреть, на что похож готовый свежесобранный статический сайт, не требуется веб-сервер, даже локальный, и не нужен никакой движок — CMS, фреймворк, свои костылевелосипеды — ничего, только браузер. Запускаешь index.html в корне сайта и наслаждаешься результатом (ну, или страдаешь, но это уже вопросы кривизны рук и художественности вкуса).

Можно упомянуть и такой условный плюс — возможность поковыряться непосредственно в конечном результате — поправить разметку, стили и все такое. Преимущество слабенькое, но для отладки, особенно если не очень-то разбираешься в HTML и CSS, может немножко помочь. Но лучше не надо.

Прочие преимущества «статики» для простой игрушки с двумя десятками страниц не имеют особого значения, но давайте на них посмотрим:

  • Скорость загрузки страниц. Нет программной обработки запроса на генерацию страницы, не требуется времени на формирование.
  • Безопасность. Не надо следить за обновлениями из-за внезапно обнаруженной критической уязвимости используемого софта, ибо нету нашего софта на сервере.
  • Неустареваемость. Нет настоятельной необходимости следить за актуальностью софта по упомянутой причине. Технология и так устаревшая до безнадежности (первые сайты были именно статическими). Готовые страницы, лежащие на сервере, не зависят от версии генератора. От свежести используемой программы зависит, пожалуй, только удобство работы.
  • Переносимость. Можно спокойно таскать с хостинга на хостинг хоть по десять раз на дню, не думая о том, подходит ли вам площадка. Все подходят.
  • Контроль версий. Для статических сайтов можно вести историю, используя любую удобную систему контроля версий, в некоторых случаях это может быть удобно и полезно, опять же, разновидность резервного копирования.

Самый заметный недостаток статического сайта (который некоторые называют достоинством) — отсутствие базы данных и средств работы с ней. Нет обработки информации от пользователя на стороне сервера, ее хранения и отображения, а значит, нет и обратной связи. Нельзя полностью автономно сделать комментарии, форум, формы заказа или запроса чего-либо, даже счетчик посещения страниц. «Нельзя автономно» — еще не значит «нельзя ни в какую». Можно встроить в код страницы и использовать сторонние сервисы, среди которых встречаются как хорошие, так и бесплатные.

Почему Pelican

Ну, допустим, статический сайт. Но не полностью же вручную его делать! Мало того, что муторно и неинтересно, так еще в процессе можно многое забыть, упустить. Поправишь разметку одной страницы — надо скопировать эту правку на все остальные. Изменишь имя или папку одной картинки или статьи — разыскивай все ссылки и корректируй. Да и вообще, делать навигацию по сайту вручную достаточно непросто. Однако, эти операции автоматизируемы.

Генераторы статических сайтов (по крайней мере, существенной частью) основаны на шаблонах страниц, так что о разметке, дизайне и стилях надо заботиться в одном месте — в шаблоне. Тексты пишутся с использованием упрощенных языков разметки, типа того же Markdown, что тоже упрощает дело. Навигация по сайту, типа меню или облака тегов, формируется автоматом, что не может не радовать. Остается выбрать генератор.

Лично для меня выбор начался с языка. Те генераторы, которые я накопал в сети, написаны на Ruby, Python, Bash, CofeeScript, PHP. Причем, в основном встречались первые два. Учитывая работу в среде Windows, в любом случае надо устанавливать интерпретатор. Мне ближе всего из перечисленного Python, причем, 3.3 уже установлен. А из питонова гнезда пеликан показался самым симпатичным чисто субъективно — вроде, немало хороших отзывов (хотя и другие не ругают), вроде, неплохая документация (ну, не у него одного), вроде, прилично информации помимо официальной (ну, у других даже не смотрел)…

Вообще-то говоря, язык написания генератора не важен до тех пор, пока не возникнет желание или необходимость написать собственный плагин или поправить/дополнить движок. Так что, имеет смысл обратить внимание на тот, у которого разработка не заглохла, но и не в зачаточной стадии. Pelican и здесь неплох.

Что же надо для начала

  • Нулевое, в виде обеспечения всего остального — нужно вычислительное устройство, подключенное к интернету. Настольный (или подстольный) компьютер, ноутбук, планшет, да хоть телефон, если хватит памяти, и операционная система позволяет установить Python. Интернет нужен сначала для установки недостающих модулей Python, потом для публикации результатов работы и наслаждения ими. Кажется, это очевидно. Само собой, нужен браузер. Чем свежее — тем лучше. Ну, и не помешает предварительно-ознакомительно полистать пеликановую документацию. К сожалению, на английском. Желателен файловый менеджер с поддержкой консоли — вводом команд и просмотром результата. В Windows для этой цели хорош FAR, хотя можно обойтись и чистой консолью cmd.exe.

  • Первое — Python. Язык скриптовый, интерпретируемый. Без интерпретатора программы на нем не пойдут. Во многих дистрибутивах Linux идет «из коробки» или ставится элементарно. Установка для Windows с официального сайта тоже не вызывает безумных трудностей, но есть некоторые особенности.

    • Если месье знает толк в извращениях и по-прежнему насилует Windows XP (или XP — его), то Python 3.3 — потолок. Версия 3.4 уже не пойдет.
    • Если по какой-то причине (например, по предыдущей) стоит именно 3.3, то в ней «из коробки» нет модуля pip, а без него будет заметно хуже, чем с ним. С версии 3.4 он должен уже идти в комплекте поставки, а на 3.0–3.2 работа пеликана не гарантируется. Этот модуль нужен для установки остальных модулей, он умеет определять зависимости (если требуемому модулю для работы нужны еще какие-то), самостоятельно находить их и устанавливать. Pip можно взять, например, здесь или здесь. При этом его тоже еще надо установить. Со скриптом get-pip.py у меня как-то сразу не заладилось, не стал разбираться в причинах. Запустил в консоли команду

      C:\Python33\python.exe pip-7.1.2-py2.py3-none-any.whl/pip install pip-7.1.2-py2.py3-none-any.whl
      

      из папки, в корне которой лежал скачанный pip-7.1.2-py2.py3-none-any.whl, модуль установился. В качестве консоли использовал FAR — тут тебе и командная строка, и простой выбор рабочего каталога. Напомню, речь идет о работе в Windows.

    • Официальная документация Pelican и некоторые его пользователи рекомендуют установить и использовать virtualenv. Сильно сомневаюсь в необходимости этой операции, особенно если Python планируется использовать только для Pelican.

  • Второе — собственно Pelican. Установка выполняется очень просто в соответствии с документацией:

    pip install pelican
    

    Здесь неочевидная тонкость для тех, кто с питонами на «вы», особенно, если дело творится под Windows: это не команда интерпретатора Python, и вводить ее надо не в консоли Python, а просто в консоли — FAR или cmd.exe. Можно создать текстовый файл с расширением .cmd или .bat с этой строчкой внутри и запустить его на выполнение с тем же эффектом. Эффект будет положительным, если известен путь к pip (например, прописан в переменной PATH или pip прямо тут, в текущей папке), ибо, по сути, это программа. В Windows, чтобы наверняка, можно написать

    C:\Python33\Scripts\pip.exe install pelican
    

    Если все пройдет, как задумано, pip установит модули, без которых Pelican работать не будет:

    • feedgenerator, для генерации Atom feeds
    • jinja2, для поддержки шаблонов, используемых при разработке сайта
    • pygments, для подсветки синтаксиса примеров кода на публикуемых страницах
    • docutils, для поддержки reStructuredText в качестве входного формата текстов для сайта
    • pytz, для определения временной зоны
    • blinker, для системы сигналов, широковещательных и между объектами
    • unidecode, для ASCII-транслитерации текста Unicode
    • six, утилиты совместимости Python 2 и 3
    • MarkupSafe, для безопасной работы со строками на языках разметки XML/HTML/XHTML
    • python-dateutil, чтобы читать даты в метаданных

    В конце будет установлен и сам pelican.

    Аналогичным образом стоит установить Markdown, модуль для обработки языка разметки, на котором писать куда удобнее, чем на HTML:

    pip install Markdown
    

    Хотя можно писать и на reStructuredText (он же reST), поддержка которого к этому моменту уже установлена. Но лучше все равно поставить сразу — не помешает, и его могут требовать некоторые темы или плагины.

Можно попробовать, заработает ли

Создадим папку (директорию, каталог, как хотите) для проекта сайта. Практически где угодно. Например, D:\site. Зайдя в эту папку, запустим команду

C:\python33\Scripts\pelican-quickstart.exe

То есть, документация рекомендует быть проще и скомандовать

pelican-quickstart

но, напоминаю, это не просто команда, это программа, которая команду выполняет, и лежит она в папке Scripts там, где установлен Python Программка запустится, и мы будем отвечать на вопросы по-английски, появляющиеся в окне консоли. Если в конце вопроса есть в квадратных скобках вариант ответа по умолчанию или (Y/n), можно тупо давить ввод. Если нет — надо хоть что-то писать. В конце этой викторины (если использовать ответы по умолчанию) в выбранной папке появятся еще две папки — content и output, а также набор файлов — develop_server.sh, fabfile.py, Makefile, pelicanconf.py, publishconf.py.

Уже сейчас, не написав ни строчки, можно собрать полупустой сайт, если эту заготовку позволительно так назвать. Для этого, опять же в корне D:\site, надо дать команду

c:\python33\Scripts\pelican.exe content

И хотя папка content (предназначенная для заготовок статей) пуста, и на выходе будет все по нулям:

Done: Processed 0 articles, 0 drafts, 0 pages and 0 hidden pages in 0.08 seconds.

в папке output появится папка theme и файлы html: archives, authors, categories, index и tags. Файл index.html можно запустить и посмотреть, что за ерунда получилась. Там будет заголовок и немножко ссылок на сайты инструментов, при помощи которых это всё получилось: Pelican, Python.org и Jinja2. И всё это упаковано в умопомрачительный дизайн в крайне минималистском стиле.

Итого: инструмент готов к использованию.

P. S. Разбор анкеты pelican-quickstart

Для тех, у кого совсем-совсем плохо с английским, или очень-очень лениво — что от нас хочет утилита pelican-quickstart, вольный перевод.

Welcome to pelican-quickstart v3.6.3. — Добро пожаловать. Номер версии.

This script will help you create a new Pelican-based website. — Этот скрипт поможет вам создать новый пеликановый вебсайт.

Please answer the following questions so this script can generate the files needed by Pelican. — Пожалуйста, ответьте на следующие вопросы, чтобы скрипт сгенерировал файлы, необходимые Пеликану.

> Where do you want to create your new web site? [.] Где вы желаете создать сайт? По умолчанию — прямо здесь, в этой папке. Можно просто нажать Enter.
> What will be the title of this web site? Какой заголовок у этого сайта? Надо хоть что-нибудь написать.
> Who will be the author of this web site? Кто будет автор этого сайта? Тоже надо написать.
> What will be the default language of this web site? [en] Какой будет язык по-умолчанию для этого сайта? Предлагается английский, можно написать ru, но вообще-то неважно, все равно потом лезть в настройки и можно поправить позже.
> Do you want to specify a URL prefix? e.g., http://example.com (Y/n) Желаете указать URL-префикс? Если жамкнуть ввод, будет понято, что таки да, и появится следующий вопрос:
> What is your URL prefix? (see above example; no trailing slash) А какой тогда префикс? (см. пример выше, без слэша в конце), но можно поставить, например, тупо слэш.
> Do you want to enable article pagination? (Y/n) Вам нужно разбиение на несколько страниц статей? (по умолчанию будет «да!», как и в других местах с вопросом Y/n, или «нет!», если y/N, то есть, смотря какая буква заглавная)
> How many articles per page do you want? [10] Сколько статей на странице вам надо? (по умолчанию — 10)
> What is your time zone? [Europe/Paris] Ваша временная зона? Или, по-русски говоря, часовой пояс? (По умолчанию — Париж, свою можно спросить у Вики)
> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n) Вам надо сделать Fabfile/Makefile для автоматической генерации и публикации? Вообще-то, не обязательно. Поначалу будем делать вручную, а там видно будет.
> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n) Вам нужна автоперезагрузка скрипта simpleHTTP для поддержки разработки сайта и темы? Вообще-то, можно обойтись без этого скрипта совсем.
> Do you want to upload your website using FTP? (y/N) Хотите выкладывать ваш сайт на хостинг с использованием FTP? Если честно, пока не собираемся выкладывать, а потом определимся.
> Do you want to upload your website using SSH? (y/N) Хотите выгружать через SSH?
> Do you want to upload your website using Dropbox? (y/N) или Dropbox?
> Do you want to upload your website using S3? (y/N) или S3?
> Do you want to upload your website using Rackspace Cloud Files? (y/N) или Rackspace Cloud Files? (японский городовой, кто это вообще?)
> Do you want to upload your website using GitHub Pages? (y/N) Будете использовать GitHub Pages? (Вот, это уже ближе к правде…)
Done. Your new project is available at d:\site Всё. Ваш новый проект доступен в указанной папке.


Теги: