Гид по технологиям

Установка Hugo на Ubuntu 18.04

• 6 min read • DevOps • Обновлено 24 Nov 2025
Установка Hugo на Ubuntu 18.04 — руководство
Установка Hugo на Ubuntu 18.04 — руководство

Важно: команды в статье предполагают доступ под root или пользователя с sudo. Замените примеры имён и адреса на ваши реальные значения.

О чём статья

  • Установка Hugo из релиза (.deb)
  • Создание сайта, страницы «About» и первой записи блога
  • Подключение темы и настройка шаблона
  • Сборка и запуск локального сервера Hugo
  • Альтернативные варианты установки и развёртывания (snap, сборка из исходников)
  • Мини-плейбук для DevOps: systemd + Nginx
  • Контроль качества, список проверок и рекомендации по безопасности

Требования

  • Сервер с Ubuntu 18.04
  • Настроенный статический IP 136.243.240.39 (примеры в статье)
  • Доступ root или sudo

Начало работы — обновление системы

Перед установкой рекомендуется обновить пакеты:

apt-get update -y
apt-get upgrade -y

После обновления перезагрузите сервер, чтобы все изменения вступили в силу.

Установка Hugo (.deb из релизов GitHub)

По умолчанию в стандартных репозиториях Ubuntu 18.04 может не быть последней версии Hugo. Приведён пример установки конкретного релиза v0.58.2:

wget https://github.com/gohugoio/hugo/releases/download/v0.58.2/hugo_0.58.2_Linux-64bit.deb

dpkg -i hugo_0.58.2_Linux-64bit.deb

# если есть ошибки зависимостей
apt-get install -f

Проверка установки:

hugo version

Ожидаемый вывод (пример):

Hugo Static Site Generator v0.58.2-253E5FDC linux/amd64 BuildDate: 2019-09-13T08:05:59Z

Справка по командам Hugo:

hugo --help

(Команды и флаги перечислены в выводе справки — используйте их для настройки сборки и сервера.)

Создание сайта и первой структуры контента

Создаём новый сайт с именем test.example.com:

hugo new site test.example.com

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

Просмотр содержимого каталога сайта:

ls test.example.com/

Ожидаемая структура:

archetypes  config.toml  content  data  layouts  static  themes

Создаём страницу «About» и первую запись блога

cd test.example.com
hugo new about.md
# откроется файл content/about.md
nano content/about.md

Пример содержимого about.md (установите draft: false чтобы страница публиковалась):

---
title: "About"
date: 2019-09-10T06:57:08Z
draft: false
---

I am hitesh jethva working as a technical writer.

Создаём пост блога:

hugo new post/first.md
nano content/post/first.md

Пример поста:

---
title: "First"
date: 2019-09-10T06:58:51Z
draft: false
---

## This is my first blog post

Hi How are you!

Переведите и отредактируйте контент под свои нужды.

Настройка темы

В примере используется тема hugo-strata-theme. Скачиваем тему в каталог themes:

cd themes
wget https://github.com/digitalcraftsman/hugo-strata-theme/archive/master.zip
unzip master.zip
mv hugo-strata-theme-master hugo-strata-theme

Копируем пример конфигурации темы в корневой config.toml сайта:

cat hugo-strata-theme/exampleSite/config.toml > ../config.toml

Откройте ../config.toml и настройте baseURL и меню. Пример правки baseURL:

baseurl = "/"

Добавим пункт About в главное меню:

 [[menu.main]]
  name = "About"
  url  = "about"
  weight = 5

Скопируйте или создайте файл layouts/index.html в корне сайта, чтобы использовать шаблон темы для главной страницы:

nano /root/test.example.com/layouts/index.html

Вставьте следующий минимальный фрагмент, использующий partials темы:

{{ define "main" }}
        {{ if not .Site.Params.about.hide }}
                {{ partial "about" . }}
        {{ end }}

        {{ if not .Site.Params.portfolio.hide }}
                {{ partial "portfolio" . }}
        {{ end }}

        {{ if not .Site.Params.recentposts.hide }}
                {{ partial "recent-posts" . }}
        {{ end }}

        {{ if not .Site.Params.contact.hide }}
                {{ partial "contact" . }}
        {{ end }}
{{ end }}

Сборка сайта и запуск встроенного сервера

Собираем статические файлы Hugo:

cd /root/test.example.com
hugo

Пример вывода сборки:

                   | EN  
+------------------+----+
  Pages            | 17  
  Paginator pages  |  0  
  Non-page files   |  0  
  Static files     | 26  
  Processed images |  0  
  Aliases          |  5  
  Sitemaps         |  1  
  Cleaned          |  0  

Total in 18 ms

Запускаем сервер для локального просмотра и связываем с IP сервера:

hugo server --bind=0.0.0.0 --baseUrl=http://136.243.240.39 -D -F

Вы увидите сообщение о том, что веб-сервер доступен по адресу http://136.243.240.39:1313/

Просмотр в браузере

Откройте http://136.243.240.39:1313/. Вы увидите сгенерированный сайт, пункт About и записи блога.

Пример сайта, сгенерированного с помощью Hugo

Панель Hugo: страница About

Страница About в интерфейсе

Первый пост в списке

Заголовки изображений демонстрируют стандартный интерфейс темы и страницы сайта.

Альтернативные способы установки Hugo

  1. Установка через snap (быстро, актуальные сборки):
snap install hugo --channel=extended/stable

Преимущество: автоматические обновления snap. Недостаток: может отличаться путь установки и требования к ядру.

  1. Сборка из исходников (go build) — когда нужна кастомная сборка или последняя версия из master:
apt-get install golang-go git -y
GO111MODULE=on go get -u github.com/gohugoio/hugo
  1. PPA / менеджеры пакетов (редко для Hugo) — следите за надёжными репозиториями.

Когда использовать каждый вариант: snap для простоты, .deb для контролируемых релизов, сборка из исходников для разработки.

Развёртывание для продакшна: systemd + Nginx (мини-плейбук)

Если хотите, чтобы сайт работал как служба и был доступен по порту 80/443, соберите сайт в статические файлы и раздавайте их через Nginx или другой веб-сервер.

Пример рабочих шагов (статический сайт в /var/www/test.example.com):

  1. Соберите сайт локально на сервере:
hugo -D
# результат в папке public/
cp -r public/* /var/www/test.example.com/
  1. Настройте Nginx серверный блок:
# /etc/nginx/sites-available/test.example.com
server {
    listen 80;
    server_name test.example.com 136.243.240.39;
    root /var/www/test.example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
  1. Включите блок и перезапустите Nginx:
ln -s /etc/nginx/sites-available/test.example.com /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
  1. (Опционально) systemd юнит для автоматической сборки и деплоя при обновлении репозитория:
# /etc/systemd/system/hugo-deploy.service
[Unit]
Description=Build and deploy Hugo site

[Service]
Type=oneshot
WorkingDirectory=/root/test.example.com
ExecStart=/usr/bin/hugo -D
ExecStartPost=/bin/cp -r public/* /var/www/test.example.com/

[Install]
WantedBy=multi-user.target

Запускайте вручную или через CI/CD при деплое.

Отладка и распространённые проблемы

  • Проблема: hugo: command not found — проверьте, установлен ли бинарник в PATH или используйте полный путь /usr/bin/hugo.
  • Проблема: неправильные права в /var/www — убедитесь, что Nginx имеет доступ к файлам (chown -R www-data:www-data /var/www/test.example.com).
  • Проблема: тема не отображается — проверьте, что каталог темы лежит в themes и config.toml ссылается на неё.
  • Проблема: draft: true — контент по умолчанию не публикуется; используйте -D флаг при сборке/сервере.

Контроль качества и тесты приёмки

Критерии приёмки

  • Сайт успешно собирается командой hugo без ошибок
  • Содержимое public/ содержит index.html и статические ресурсы
  • Nginx отдаёт главную страницу по HTTP 200
  • Меню и страницы (About, Blog) открываются и отображают ожидаемый контент

Тесты (ручные шаги)

Роли и чек-лист перед запуском

DevOps:

  • Проверить версии Hugo и зависимостей
  • Настроить автоматизацию сборки и копирования в /var/www
  • Настроить Nginx и SSL (Let’s Encrypt)

Разработчик контента:

  • Проверить front matter у страниц (title, date, draft)
  • Протестировать публикацию новой записи локально

Администратор безопасности:

  • Ограничить доступ к серверу SSH (ключи, отключить пароль)
  • Обновить систему и пакеты

Мини-методология деплоя

  1. Разработка локально или в ветке feature
  2. Сборка статического сайта (hugo -D)
  3. Прогон тестов и визуальная проверка
  4. Копирование в /var/www либо выгрузка в CDN/хостинг (Netlify, GitHub Pages)
  5. Переключение Nginx и проверка

Безопасность и конфиденциальность

  • Hugo генерирует статический сайт — минимальные риски на сервере приложений. Тем не менее, важно:
    • Защитить сервер с Hugo (SSH, обновления)
    • Если собираете из пользовательского контента — фильтруйте HTML/JS при генерации
    • При использовании аналитики и форм проверьте соответствие требованиям конфиденциальности (GDPR)

Когда этот подход не подойдёт

  • Если вам нужен динамический контент с пользовательскими сессиями или частые изменения в базе данных — лучше рассмотреть CMS с серверной логикой (WordPress, Django, Rails).
  • Если необходима встроенная система комментариев без внешних сервисов — потребуются дополнительные решения (Serverless функции или сторонние сервисы).

Резюме

Hugo — быстрый и удобный генератор статических сайтов, его легко установить на Ubuntu 18.04 из .deb или snap. Процесс включает: установку, создание сайта, добавление темы, сборку и запуск сервера. Для продакшн-развёртывания рекомендую генерировать статические файлы и раздавать их через Nginx с автоматизированным процессом деплоя.

Короткое объявление для команды (100–200 слов)

Hugo установлен и успешно протестирован на Ubuntu 18.04. Быстрая инструкция включает создание сайта, настройку темы hugo-strata-theme и запуск встроенного сервера. Для продакшна рекомендуется собирать статический контент и раздавать его через Nginx; можно настроить unit systemd для автоматизированного деплоя. Для CI/CD используйте сборку hugo и выгрузку в /var/www или хостинг статических сайтов (Netlify, GitHub Pages). При необходимости помогу настроить автоматизацию и SSL.

Если нужны примеры systemd, Nginx-конфиг или CI-конфигурация (GitHub Actions/GitLab CI), скажите какую систему вы используете — подготовлю шаблон.

Заключение

В этой инструкции вы узнали, как установить Hugo на Ubuntu 18.04, создать сайт с страницей About и первой записью, подключить тему и запустить сервер. Для продакшна — используйте статическую сборку и Nginx. Задавайте вопросы по конкретным шагам, конфигам или деплою.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро