Новая статья - Под капотом у блога 2022
У меня часто спрашивают какая “тема” или “движок” используются в данном блоге. Ответить на такие вопросы одним словом или предложением тяжело, поэтому решил написать заметку, чтобы в дальнейшем просто приводить ссылку на нее. Не исключено, правда, что какие-то вещи могут измениться, но если переделаю что-нибудь кардинально, то напишу новую статью.
Обзор
Jekyll
За время ведения блога, а это уже около 6 лет, Я пробовал разные площадки и “движки”. Ко всем технологиям/сервисам что пробовал, у меня были претензии. Всегда всплывали вопросы кастомизации, комментариев, добавления новых статей, безопасности, интеграции с социальными сетями и т.д. Конечно был вариант написать все с нуля, но в наше время это глупо. В какой-то момент узнал про Jekyll и Github pages и это оказалось спасением. Найти информацию про две эти штуки легко, в том числе и на русском языке. Расскажу только основные моменты.
Jekyll - это генератор статических сайтов, написанный на Ruby. Это значит что на выходе мы получаем просто html+css страницы, которые можно залить на любой хостинг статичесих файлов и сайт будет полностью работоспособным. А github pages позволяет опубликовать такой статический сайт абсолютно бесплатно, в том числе и на кастомном доменном имени, как в моем случае.
Таким образом, я получил полностью настраиваемый блог, который при желании можно “допрограммировать”, для которого не нужно держать сервер или платный хостинг. Итак, что же конкретно Я использую.
Вот содержимое моего gem файла:
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, в случае использования собственных доменов