Антон Рябов bio photo

Антон Рябов

Не люблю бриться и у меня умный взгляд.

Email Twitter Telegram Github PGP RSS

Под капотом у блога

Новая статья - Под капотом у блога 2022


У меня часто спрашивают какая “тема” или “движок” используются в данном блоге. Ответить на такие вопросы одним словом или предложением тяжело, поэтому решил написать заметку, чтобы в дальнейшем просто приводить ссылку на нее. Не исключено, правда, что какие-то вещи могут измениться, но если переделаю что-нибудь кардинально, то напишу новую статью.

Мне было лень искать картинку, поэтому просто фотография текущего состояния стикеров на моем ноутбуке

Обзор

Jekyll

За время ведения блога, а это уже около 6 лет, Я пробовал разные площадки и “движки”. Ко всем технологиям/сервисам что пробовал, у меня были претензии. Всегда всплывали вопросы кастомизации, комментариев, добавления новых статей, безопасности, интеграции с социальными сетями и т.д. Конечно был вариант написать все с нуля, но в наше время это глупо. В какой-то момент узнал про Jekyll и Github pages и это оказалось спасением. Найти информацию про две эти штуки легко, в том числе и на русском языке. Расскажу только основные моменты.

Jekyll - это генератор статических сайтов, написанный на Ruby. Это значит что на выходе мы получаем просто html+css страницы, которые можно залить на любой хостинг статичесих файлов и сайт будет полностью работоспособным. А github pages позволяет опубликовать такой статический сайт абсолютно бесплатно, в том числе и на кастомном доменном имени, как в моем случае.

Таким образом, я получил полностью настраиваемый блог, который при желании можно “допрограммировать”, для которого не нужно держать сервер или платный хостинг. Итак, что же конкретно Я использую.

Вот содержимое моего gem файла:

source 'https://rubygems.org'

gem 'jekyll'
gem 'jekyll-sitemap'
gem 'octopress'
gem 'jekyll-tagging'
gem 'jekyll-redirect-from'
gem 'pygments.rb'
gem 'jemoji'

jekyll - собственно генератор jekyll-site - модуль для генерации карты сайта octopress - для управления страницами, добавлением, переименованием и т.д. jekyll-tagging - модуль добавляющий функционал тегов jekyll-redirect-from - модуль для добавления редиректов pygments.rb - подстветка синтаксиса jemoji - модуль, который позволяет использовать emoji, но Я ими еще ни разу не воспользовался

Внешний вид

Это основа, которая отвечает за генерацию. Следующим моментом является внешний вид. Когда я начал переход на jekyll + github pages больше всего мне понравилась тема - Minimal mistakes. Тогда это была версия 2 и по началу меня все устраивало. Затем Я модифицировал некоторые вещи, а когда тема полностью обновилась, не стал переходить на новую версию. Таким образом сейчас я использую собственный вариант, той старой второй версии.

Все исходные коды блога храню в приватном репозитории, а на github выкладываю только уже сгенерированную версию. Это сделано потому, что в исходниках хранятся черновики. Чтобы внедрить функционал комментариев в таком блоге необходимо использовать сторонние ресусурсы, например комментарии Вконтакте или Disqus, последний кстати можно назвать более универсальным. Но современем Я понял, что комментарии в блоге не нужны. Если кто-то захочет прокомментировать вашу статью, он может сделать это (и скорее всего сделает) в одной из социальных сетей. Такой подход меня устраивает.

Изображения

Также стоит упомянуть про изображения. Все изображения для своего блога, не считая аватара и favicon Я храню на flickr.com. Это дает мне бесплатное хранилище + CDN. Чтобы опубликовать новую статью или какие-либо изменения мне нужно запустить специальный скрипт, который делает всю магию сборки, а затем загружает исходные коды в приватный репозиторий а сгенерированные html + css в публичный.

Amazon Route53

Следующая важная часть блога, это AWS Route53, сервис для управления доменными именами, с очень мощным функционалом, я бы сказал самым мощным, по крайней мере исходя из моего опыта. Если говорить коротко и без технических подробностей. Я использую Github и Gitlab для отдачи статических файлов моего блога, а Amazon Route53 направляет пользователей на один или другой хостинг. По умолчанию трафик распределяется 50/50, но если вдруг, одна из площадок перестанет отвечать, весь трафик повернется на оставшуюся. Таким образом, если Github ляжет, мой блог все еще будет доступен без дополнительных манипуляций и наоборот в случае с Gitlab. Конечно, если вдруг упадут оба эти сервиса блог таки станет недоступен, но вероятность этого очень мала.

Выводы

Итак, плюсы использования jekyll:

  • Отсутсвие базы данных и необходимости содержать сервер
  • Статические сайты быстрые
  • Гибкая конфигурация и расширяемость
  • Бесплатный CDN и защита от атак
  • Ruby

Минусы:

  • Большинство функциональности придется писать на Javascript (как например кнопка наверх)
  • Чтобы обновить блог нужен компьютер, который поддерживает Ruby
  • У Github пока сложности с https, в случае использования собственных доменов
#TechAndDev