У мене часто запитують яка "тема" або "движок" використовуються в даному блозі. Відповісти на такі питання одним словом або пропозицією важко, тому вирішив написати замітку, щоб в подальшому просто приводити посилання на неї. Не виключено, правда, що якісь речі можуть змінитися, але якщо перероблю що-небудь кардинально, то напишу нову статтю.
Мені було ліньки шукати картинку, тому просто фотографія поточного стану стікерів на моєму ноутбуці
За час ведення блогу, а це вже близько 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 викладаю тільки вже сгенерированную версію. Це зроблено тому, що в исходниках зберігаються чернетки. Щоб впровадити функціонал коментарів в такому блозі необхідно використовувати сторонні ресусурси, наприклад коментарі Вконтакте, Facebook або Disqus, останній до речі можна назвати більш універсальним. Але современем Я зрозумів, що коментарі в блозі не потрібні. Якщо хтось захоче прокоментувати вашу статтю, він може зробити це (і швидше за все зробить) в одній із соціальних мереж. Такий підхід мене влаштовує.
Також варто згадати про зображення. Всі зображення для свого блогу, не рахуючи аватара і favicon Я зберігаю на flickr.com. Це дає мені безкоштовне сховище + CDN. Щоб опублікувати нову статтю або будь-які зміни мені потрібно запустити спеціальний скрипт, який робить всю магію збірки, а потім завантажує вихідні коди в приватний репозиторій а згенеровані html + css в публічний.
Наступна важлива частина блогу, це AWS Route53, сервіс для управління доменними іменами, з дуже потужним функціоналом, я б сказав найпотужнішим, принаймні виходячи з мого досвіду. Якщо говорити коротко і без технічних подробиць. Я використовую Github і Gitlab для віддачі статичних файлів мого блогу, а Amazon Route53 направляє користувачів на один або інший хостинг. За замовчуванням трафік розподіляється 50/50, але якщо раптом, один із майданчиків перестане відповідати, весь трафік повернеться на що залишилася. Таким чином, якщо Github ляже, мій блог все ще буде доступний без додаткових маніпуляцій і навпаки у випадку з Gitlab. Звичайно, якщо раптом впадуть обидва ці сервісу блог таки стане недоступний, але ймовірність цього дуже мала.
Отже, плюси використання jekyll:
- Відсутність бази даних і необхідності утримувати сервер
- Статичні сайти швидкі
- Гнучка конфігурація і розширюваність
- Безкоштовний CDN і захист від атак
- Ruby
мінуси:
- Більшість функціональності доведеться писати на Javascript (як наприклад кнопка наверх)
- Щоб оновити блог потрібен комп'ютер, який підтримує Ruby
- У Github поки складності з https, в разі використання власних доменів