hugo: установка и начало работы
Этот блог создан при помощи генератора статичных веб-страниц на основе шаблонов hugo. В этой статье я расскажу о преимуществах такого метода создания сайтов, а также приведу примеры начала работы. В качестве ОС используется Linux Mint 21.
Статические страницы против динамической генерации⌗
Предположим, вы написали в блокноте HTML-документ для вашей домашней страницы, загрузили его на веб-сервер, и теперь любой желающий может прочитать, что вы любите сыр, а на досуге коллекционируете консервные банки. После этого вы решили добавить на ваш сайт контента, и написали ещё много страниц, всё вручную. А теперь представьте, что вы решили поменять название вашего сайта в шапке страницы, и вам придётся переписывать каждую страницу вручную.
Тут на сцене появляются динамические генераторы. Они представляют из себя сценарии, выполняющиеся на сервере, и формирующие каждую страницу вашего сайта на основе нескольких файлов. Оформление отдельно, содержимое отдельно. В тот момент, когда посетитель сайта запрашивает определённую страницу, она формируется сценарием «на лету», и отдаётся веб-сервером. Одним из популярных языков для написания таких сценариев является, например, PHP.
Если вам понадобится заменить элемент в шапке сайта, вам достаточно будет отредактировать один файл. Это удобно, но небезопасно, так как сценарий обрабатывает введённый посетителем адрес, который может быть специальным образом сфабрикован, чтобы использовать ошибки в коде, или уязвимости самого языка сценария. В результате злоумышленник может, выполнив произвольный код, взломать ваш сайт, и использовать его в своих целях.
Выход есть⌗
Решением обеих вышеуказанных проблем являются генераторы статических страниц. Они, так же, как и динамические сценарии, используют шаблоны, и формируют на их основе статический HTML, который вы и загружаете на веб-сервер. Так, как фактически код выполняется один раз, на вашем компьютере, созданные таким методом сайты не поддаются взлому. Менять дизайн, заголовки, и содержимое тоже очень просто. Одним из таких генераторов является hugo, написанный на языке Go.
Установка, первая страница⌗
В Linux Mint установка проста до неприличия:
sudo apt install hugo
Для создания первого сайта дайте команду:
hugo new site mycoolsite.com
После этого в текущем каталоге появится новый, под названием mycoolsite.com, в котором будут раположены начальные файлы шаблонов для генерации сайта. Рекомендую дополнительно создать репозитарий GIT в этом каталоге:
cd mycoolsite.com
git init
git add ./*
Теперь нужно установить тему. Именно тема определяет, как именно будет выглядеть ваш сайт, будет это блог, сайт-визитка, или что угодно ещё. Для начала вы можете скопировать тему этого блога, выполнив команды:
git clone https://github.com/trefmanic/hugo-theme-terminal-hacked.git themes/terminal-hacked
Отредактируйте файл config.toml:
baseURL = 'http://mycoolsite.com'
languageCode = 'en-us'
title = 'My COOL New Hugo Site'
theme = 'terminal-hacked'
Добавьте первую запись:
hugo new posts/myfirstpost.md
В каталоге content появится дополнительный каталог posts, в котором, в свою очередь, ваша первая запись myfirstpost.md. Оформление контента выполяется на языке разметки Markdown. Если вы скопировали мою тему, то сейчас содержимое этого файла выглядит примерно так:
---
title: "Myfirstpost"
date: "2023-04-12T14:46:51+05:00"
updated: false
tags: ["", ""]
keywords: ["", ""]
description: ""
showFullContent: false
published: false
---
Перейдите на строку ниже трёх знаков дефиса, и напишите
## Привет, мир!
Это моя первая запись в блоге, работающем на [hugo][1]
[1]: https://gohugo.io
Для того, чтобы посмотреть, как выглядит ваш сайт в браузере, запустите hugo в режиме сервера:
hugo server -D
И откройте в браузере адрес: http://localhost:1313 по умолчанию. Если всё сделано правильно, вы должны увидеть заглавную страницу. Кликните на заголовок “Myfirstpost”, и вы должны увидеть только что написанную вами статью. Попробуйте внести изменения в файл myfirstpost.md, не закрывая браузера. Вы увидите, как содержимое обновляется при каждом изменении файла, что очень удобно. Когда вы закончите редактировать страницы вашего сайта, нажмите в терминале Ctrl-C для остановки сервера hugo.
Публикация сайта⌗
Когда содержимое вашего сайта вас устраивает, время его опубликовать. Обратите внимание, что в заголовке myfirstpost.md указан параметр published: false. Это означает, что пока ваша запись находится в состоянии черновика, и не будет сгенерирована и включена в готовый сайт. Поэтому мы и запускали hugo с параметром -D (development). Исправьте false на true, после чего запустите hugo без параметров:
hugo
После выполнения этой команды в каталоге вашего сайта появится каталог public, содержащий сгенерированные статические страницы для вашего сайта. Теперь вам осталось только выгрузить их на веб-сервер.