iridiumtechru.github.io:$ cd ~

Создание сайта(блога) на GitHub Pages

О создании этого блога.


По некоторым причинам искал платформу для создания блога. Из условий была простота использования и бесплатность. Выбор пал на GitHub Pages в надежде получить все из коробки и не ковыряться в разметке и javascript. После создания репозитория и подключения первой понравившейся темы стало понятно что без кастомизации не обойтись.

GitHub Pages использует Jekyll, написанный на Ruby. Все советуют поставить Ruby и Jekyll на локальную машину, выкачать репозиторий понравившейся темы и начинать настройку на локальной машине. Поскольку Ruby я не пользовался, то решил найти альтернативу. Сначала подцепил готовую тему, но в ней не было примеров создания постов.

Я выкачал репозиторий и попытался начать разработку на связке Pelican и Python. Сгенерированный сайт выглядел слишком сыро и я решил не выпендриваться и сделать так как все.

Инструкция для Windows

Ставим Ruby: Добавляем ruby в PATH и ставим MSYS2 (всё опционально при установке).

MSYS2 уже стоял и я этот шаг пропустил.

Запускаем cmd или Ruby cmd и ставим Jekyll:

gem install jekyll

Он выпадает с кракозяблами. Меняем в консоли кодировку:

chcp 65001

Читаем ошибку:

make: x86_64-w64-mingw32-gcc: Команда не найдена
make: *** [Makefile:242: ruby_http_parser.o] Ошибка 127

Открываем MSYS2 cmd и ставим gcc:

pacman -S mingw-w64-x86_64-toolchain

В нем выбираем mingw-w64-x86_64-gcc. Дожидаемся установку и идем на настройку

Инструкция для Linux

Ставим Ruby и RubyDev:

sudo apt-get install ruby ruby-dev

Ставим Jekyll:

sudo gem install jekyll

Он ругается на Bundler. Ставим Bundler:

sudo gem install bundler

Настройка среды

По желанию ставим дефолтные темы либо пакеты от которых зависит выбранная нами тема. Сначала я использовал коробочную:

sudo gem install jekyll-theme-hacker

Потом нашел расширенную на ее основе:

git clone https://github.com/tocttou/hacker-blog.git

Для нее ставим зависимости. Они прописаны в _config.yml:

sudo gem install jekyll-seo-tag
sudo gem install jekyll-paginate
sudo gem install jekyll-sitemap

Объеденияем всё со своим репозиторием и переходим в него. Указываем свои данные в _config.yml. Чистим папку _posts и наполняем блог своими постами по аналогии с содержимым.

Запускаем тестовый сервер на http://localhost:4000:

jekyll serve

Всё готово! Можно закоммитить в свой репозторий.

Тюнинг

Подправляем header и footer в _incudes/. Там лежат настраиваемые куски html вставляемые во время генерации в index.html.

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

В _layouts/ лежат шаблоны для генерации контента. Смесь html и Liquid. В _saas assets и css лежат файлы отвечающие за внешний вид.

После создания первого поста пришлось изменить в index.html:

<p>{{% post.content | strip_html | truncatewords:50 %}}<p>

на

<p>{{ post.excerpt | strip_html | truncatewords:50 }}</p>

для того чтобы на превью поста отображался только первый абзац.

Предыдущую строчку можно отобразить только при помощи: {% raw %} тега.


Выводы

  1. Если вы новичок, используйте готовый шаблон. Особенно если не знаете Ruby.
  2. Используйте локальную разработку, чтоб видеть ошибки. Например если неправильно назовете файл поста. GitHub не покажет вам ошибки сборки, а пришлет их на почту.
  3. Из коробки дается самый минимум, но небольшого тюнинга достаточно для старта.

Ссылки: