Переезд блога
Я почти пол года не писал в блог. Давно пора это исправить. После небольшого копания в коде я решил изменить свой блог и начать работу с новой платформой.
Мне нравится внешний вид блога, но крайне не устраивает его техническая часть. Первая версия была реализована в виде велосипеда на .net framework. Затем, чуть больше года назад была обновлена до .net core. И все бы хорошо, если бы. В последнее время мне не нравится направление, куда двигается microsoft и платформа .net core в частности. К тому же накопилась боль в виде поддержки и обновлений кода. Больше всего мне не нравится процесс обновления сайтов на .net. Это компиляция (что не всегда плохо), но это сотни а то и тысячи файлов для двухстраничного блога. От этого становится грустно, хочется, чтобы было минимум лишних файлов. Я давно хотел попробовать и вот, остановил свой выбор на генераторе статичных сайтов.
Пришлось пожертвовать нативным блоком комментариев. В целом комментариев на сайте было не очень много, всегда есть способ связаться с автором посредством других способов. На замену пришел известный Disqus. Не могу сказать, что я сильно в восторге от этой системы комментариев, но, бесплатно и работает.
Платформа
Свой выбор я остановил на платформе Hugo. Это приложение на Go. Я давно мечтаю познакомиться поглубже с Go, возможно это поможет ближе подойти к цели. Он реально быстрый. Генерация и обновление сайта занимают пару секунд. Он генерирует статичный сайт, который может быть развернут на самом дешевом хостинге. Ну и бонусом идет куча тем, можно выбрать готовую либо собрать под себя.
Установка и настройка
Устанавливается Hugo командой
brew install hugo
Далее нужно создать сайт, выбрать шаблон, скачать и настроить сайт 💥.
Новый пост создается командой hugo new posts/post-name.md
. Огромный плюс, что все тексты записей хранятся в репозитории. Можно сделать его открытым. Можно видеть весь changelog, без каких-либо трудностей.
Для того, чтобы запустить сервер на локальной машине выполняем команду hugo server -D
, получаем примерно следующий результат.
| RU
+------------------+-----+
Pages | 133
Paginator pages | 12
Non-page files | 0
Static files | 573
Processed images | 0
Aliases | 2
Sitemaps | 1
Cleaned | 0
Total in 680 ms
Watching for changes in /.../blog/{content,data,layouts,static,themes}
Watching for config changes in /.../blog/config.json
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
Press Ctrl+C to stop
Build & Deploy
Я сделал простой shell скрипт, который компилирует сайт и заливает его в продакшен:
#!/usr/bin/env bash
hugo
#!/bin/bash
cd ./public
rsync \
--verbose \
--compress \
--progress \
--recursive \
--times \
--omit-dir-times \
--chown=www-data \
--rsync-path="sudo -u www-data rsync" \
./ username@oxozle.com:/var/www/oxozle.com/