Личный сайт на базе Hugo и GitHub Pages

Введение

В данной статье будет рассмотрен процесс создания личного сайта при помощи генератора статических сайтов Hugo1. Публикация сайта будет произведена при помощи GitHub Pages2. Для реализации данного проекта будут использованы инструменты:

  1. Ubuntu Server 22.04
  2. Hugo v0.92.2+extended
  3. Vim
  4. Аккаунт на GitHub

Установка и начальная настройка

Для начала необходимо установить Hugo.

sudo apt install hugo

Далее необходимо создать директорию, которая будет вмещать в себя сам сайт и перейти в неё.

hugo new site MyNewSite
cd MyNewSite

В данный момент мы находимся в директории нашего сайта. В ней необходимо инициализировать Git.

git init

После того как директория нашего сайта превратилась в наш репозиторий, необходимо прописать настройки самого генератора HUGO, которые значительно упростят жизнь в дальнейшем. Первым делом необходимо скорректировать файл default.md, который находится в директории archetypes:

vim archetypes/default.md

В данный файл необходимо добавить параметр публикации материала (в данном примере параметр прописан так, чтобы дата публикации, по умолчанию, совпадала с датой создания статьи), а также изменить параметр draft следующим образом: Было:

title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true

Стало:

	title: "{{ replace .Name "-" " " | title }}"
	date: {{ .Date }}
-	draft: true
+	publishDate: {{ .Date }}
+	draft: false

Далее необходимо подключить стороннюю тему к сайту. В данной статье будет применена простенькая тема Poison3. Подключить тему можно при помощи подмодулей git. Для этого необходимо перейти в директорию themes. В командной строке прописываем следующее:

cd themes
git submodule add https://github.com/lukeorth/poison.git
cd .. # Возвращаемся в корневую директорию сайта

Так как выбранная тема добавляет к стандартному Hugo дополнительные возможности, необходимо изменить и настроить конфигурационный файл соответствующим образом. Для этого необходимо добавить в него ряд параметров, которые можно скопировать из руководства на официальном сайте темы.

vim config.toml

Ниже приведен описание основных параметров.

ПараметрОписание
baseURLАдрес вашего сайта
themeНазвание используемой темы сайта
brandИмя вашего сайта
brand_imageПуть до логотипа сайта
DescriptionОписание вашего сайта
faviconПуть до фавикона вашего сайта (отображается во вкладке в браузере)
menuПараметр отвечает за список страниц сайта (будет подробнее описан далее)
название_urlИконки со ссылками на соц. сети
название_colorПараметры цвета интерфейса (Например, цвет фона)

Параметр menu отвечает за то, как выглядит список страниц на сайте. Имеет 2 типа:

ТипОписание
ОдностраничникСсылается на конкретную страницу (Например, страницу “Обо мне”)
СписокВыводит список страниц из определённого раздела (Например 5 последних постов из директории “Posts”)

Глобально, данные типы отличаются наличием параметров HasChildren и Limit. Где есть данные параметры- это список, а где нет- это одностраничник. После того как все параметры были корректно прописаны и скорректированы, необходимо отразить изменения в системе контроля версий:

git add .
git commit -m 'First commit'

Далее предлагается провести тестовое развёртывание.

Публикация в GitHub Pages

Для того, чтобы опубликовать получившийся сайт при помощи GitHub Pages, необходимо, разумеется, иметь активный аккаунт GitHub. Далее необходимо создать новый публичный репозиторий и связать его с локальным, в котором лежит наш сайт. Для этого можно воспользоваться инструкциями, которые представлены в самом GitHub:

git remote add origin git@github.com:Имя_пользователя/название_репозитория.git
git branch -M main
git push -u origin main

Далее необходимо на GitHub пройти во вкладку “Settings” –> “Pages”. Далее в разделе “Build and deployment” параметр “Source” выставить “GitHub Actions”. После этого система предложит выбрать готовый workflow “Hugo” –> нажимаем “Configure”. В системе уже существует готовый процесс, который будет публиковать материалы в GitHub Pages. Ничего менять не нужно, стоит лишь в разделе build добавить параметр extended со значнием true. Это необходимо для того, чтобы все элементы сайта работали корректно.

  build:
    runs-on: ubuntu-latest
    env:
      HUGO_VERSION: 0.120.4
+     extended: true

После внесения изменений, нажимаем кнопку “Commit changes” и подтверждаем коммит. Таким образом мы добавили в наш репозиторий файл, который содержит инструкцию для GitHub Actions по сборке и развёртыванию сайта. Для того, чтобы изменения отразились также и в локальном репозитории, прописываем в консоли:

git pull

Теперь по ссылке имя_пользователя.github.io доступна первая версия сайта. Осталось лишь заполнить сайт статьями и “навести марафет”.

Публикация материалов

Hugo поддерживает markdown разметку, что позволяет использовать в тексте блоки кода, диаграммы, таблицы и так далее. Будем пользоваться этим преимуществом. Для того, чтобы добавить материалы на сайт, необходимо использовать команду:

hugo new posts/first_post.md # Создать markdown файл в директории content/posts
vim content/posts/first_post.md # Открыть созданный файл в редакторе vim

В открывшемся файле необходимо сделать следующие шаги:

  1. Отредактировать шапку
  2. Написать что-нибудь

Для примера, напишем следующее:

### Привет, мир!

1. Создана первая страница
2. ¯\_()_/¯

echo "Hellow, mama, ya v televizore!"

Завершив написание поста, необходимо выйти из текстового редактора с сохранением данных. Также предлагаю Создать файл “Обо мне”, он же “About”. Чтобы не заморачиваться, пропишем простенькое предложение и не будем использовать отдельный текстовый редактор, а воспользуемся хередоком.

hugo new about/about.md
cat << EOF > content/about/about.md
My name is $LOGNAME
ha
ha
ha-ha
EOF

Чтобы наши страницы загрузились на сайт, необходимо отправить изменения в репозиторий:

git add . && git commit -m "Add About and first post"
git push

Как только изменения попадут в репозиторий и пройдут через GitHub Actions, они появятся в соответствующих разделах на сайте. Попробуйте!

Послесловие

В данной статье были затронуты лишь самые азы работы с Hugo, GitHub Actions и темой Poison. Hugo- очень удобный и довольно простой способ создания личного блога или простеньких сайтов. Страницы быстро загружаются, а администрирование сайта требует минимум усилий. В перспективе возможно рассмотреть переезд на собственный хостинг в лице GitLab и внедрение удобной среды создания статей (вместе с современным markdown редактором). Подробнее с этими инструментами Вы можете ознакомиться в соответствующей документации:


  1. Официальный сайт Hugo ↩︎

  2. GitHub Actions ↩︎

  3. Сайт темы Poison  ↩︎