Octopress: как вести блог в стиле Unix-way

А вы когда-нибудь задумывались, как ведут свои блоги настоящие хакеры? Хакеры, которые живут в консоли, сидят в берлогах и ломают Пентагон? Я вот не знаю, но предполагаю - они и блоги ведут из консоли, создают пост одной консольной командой, а загружают его на сервера Пентагона другой. И если вы вдруг подумали, что такого не существует, а я брежу, то глубоко ошибаетесь - где-то с 2012 года невероятную популярность приобрел Octopress - истинный Unix-way в мире блогов.

Почему я так думаю? А подумайте сами: Octopress - это генератор статических сайтов, построенный на фреймворке Jerkyll для языка Ruby, использующий Markdown для написания постов и GitHub Pages для их размещения. Если вы не поняли из перечисленного выше ни слова: поздравляю, вы нормальный человек, можете закрыть пост. Для остальных же: прежде всего, это средство создания полнофункциональных статических сайтов, которые могут быть размещены где угодно - хоть на Narod.ru, хоть на Dropbox, хоть на своем сервере.

Установка

Внимание: Octopress, как и полагается хорошему софту, кросплатформеннен. Однако, устанавливать его под Windows категорически не рекомендуется: во-первых, виндовая консоль в принципе плохо дружит с UTF-8, во-вторых, проблемы могут вылезти в самом неожиданном месте. Если вы используете Windows - рекомендую установить любую виртуальную машину с OC Linux и работать с блогом из-под неё. Если вы используете Linux или Mac OS X, порядок действий следующий:

  1. Устанавливаем необходимые для работы зависимости. В Mac OS X все зависимости установлены по умолчанию, для Linux, вероятно, их потребуется установить следующей командой: sudo apt-get install ruby ruby-dev gcc make git
  2. Скачиваем и распаковываем сам блог: git clone git://github.com/imathis/octopress.git octopress cd octopress/
  3. Устанавливаем зависимости. Потребуются права рута: gem install bundler bundle install
  4. Устанавливаем стандартную тему: rake install

Пишем первый пост

Чтобы создать пост - просто набираем:

rake new_post['Заголовок поста']

Посты расположены в папке source/_posts/. Пишутся они на языке Markdown - в принципе, даже не умеюший программировать человек разберется с ним легко: просто откройте Markdown Cheatsheet и следуйте инструкциям. Интерес представляет, прежде всего, шапка генерируемого поста - она выглядит следующим образом:

layout: post

title: Заголовок вашего поста

date: 2015-06-29 20:29:04 +0300 # Дата создания поста

comments: true # Комментарии разрешены

topics: # Теги вашего поста. Если несколько - перечисляются так: [cat1, cat2, cat3]

Для русскоязычных блогеров особенное внимание стоит обратить на имя сгенерированного фвйла. По умолчанию,краткий заголовок вашего поста, отображаемый в URL, генерируется из заголовка поста, и виден в названии файла после даты создания. Для постов на русском это очень неудобно: в адресной строке браузера будет что-то вида zagolovok-vashego-pervogo-posta.html. Соответственно, его стоит заменить на более читаемое - для этого достаточно переименовать файл.

Ещё стоит отметить, что отделить краткое описание поста (то, что отображается на главной странице) от основного текста можно тегом:

< !-- mоrе -->

Когда пост написан - его всегда хочется посмотреть. Для этого набираем в консоли:

rake preview

Затем набираем в браузере http://localhost:4000 или http://your-virtual-machine-ip:4000, если вы работаете посредством виртуальной машины. Если вы работаете из-под виртуальной машины - потребуется пробросить порт, как правило, это можно сделать в настройках ВМ. Rake preview автоматически отслеживает все изменения в файлах, поэтому вы можете запустить его, писать пост и поглядывать на изменения.

Настраиваем сам блог

Octopress не был бы истинным хакерским блогом, если бы в нем не настраивалось все. Это достигается за счет использования Rakefile - когда вы запускаете rake preview, или rake generate, блог просто следует инструкциям из Rakefile, расположенного в корне. Базовые же настройки хранятся в _config.yml - в основном, там всё ясно из комментариев, самая интересная часть расположена вот здесь:

root: /

Да, мы можем настраивать вид ссылок в блоге. Что это значит? По умолчанию, все посты в блоге выглядят так: http://yourblog.com/2015/06/new-post.html. Вас это может не устраивать - тогда, необходимо поменять на устраивающие параметры. Например, в моем блоге все ссылки выглядят, как /posts/post-titie/, потому как они так выглядели в Anchor CMS, и я хотел, чтобы ссылки были совместимы. Нет проблем - прописываем в конфиг-файле:

permalink: /posts/:title/

Вторым интересным моментом является установка тем. Для Octopress их написано очень много - красивых, хороших и разных, лучшие опубликованы здесь: 3rd Party Octopress Themes. Большинство тем устанавливается следующим образом:

git submodule add GIT_URL .themes/THEME_NAME

rake install['THEME_NAME']

Публикуем пост

После того, как вы настроили блог, можно его сгенерировать:

rake generate

После генерации вы получите статические HTML, CSS и JS-файлы в папке public. Осталось его залить на хост - и ваш блог доступен всем. Однако, вот тут есть одна проблема, о которой стоит упомянуть: по умолчанию, Octopress поддерживает публикацию сайта через Git и Rsync. В России, да и не только, для загрузки контента на хост используется FTP. Публикация через FTP делается следующим образом:

  1. Скачиваем программу lftp следующим образом:

sudo apt-get install lftp (Linux)

brew install lftp (Mac OS X)

  1. Открываем Rakefile, и вставляем следующий код:

ftp_user = "username"

ftp_password = "password"

ftp_server = "host"

ftp_target = "/folder/"

deploy_default = "lftp"

Теперь мы можем загрузить ваш блог на сервер, набрав всего одну команду:

rake deploy

А что дальше?

Разумеется, перечисленными выше возможностями Octopress не ограничивается. Это очень мощная платформа - и уложить все её возможности в один пост немыслимо, поэтому здесь перечислены лишь самые основы. Остальное же можно найти по следующим ссылкам:

Удачи!

P.S Кстати, ещё одно преимущество Octopress - очень лёгкие страницы. Этот пост я писал в поезде, где телефон ловил только EDGE-интернет, и пока остальные страницы грузились минуту, мой блог грузился реактивно - за несколько секунд.

 
comments powered by Disqus