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

Создание статического сайта с Hugo на Linux

9 min read Веб-разработка Обновлено 18 Dec 2025
Создание статического сайта с Hugo на Linux
Создание статического сайта с Hugo на Linux

TL;DR

Hugo — быстрый статический генератор сайтов: создаёт сайт из Markdown и шаблонов, запускает локальный сервер на localhost:1313 и генерирует готовые файлы в папке public для загрузки на хостинг. Этот материал шаг за шагом объясняет установку Hugo, создание сайта, добавление темы и контента, запуск локально, сборку и практические чек‑листы для разных ролей.

Важно: все примеры команд приведены для GNU/Linux. Перед деплоем проверьте настройки baseURL в config.toml и положите итоговые файлы из папки public в корень вашего хостинга.

Иллюстрация: файловая система и терминал на Linux для статического сайта

Быстрые ссылки

  • Генератор сайтов Hugo
  • Хостинг сайта
  • Установка Hugo
  • Создание сайта с Hugo
  • Инициализация Git и добавление темы
  • Запуск сайта локально
  • Изменение содержимого по умолчанию
  • Изменение других элементов сайта
  • Добавление новых записей блога
  • Сборка сайта
  • Вы уже знаете основы

О чём этот материал

Этот текст — пошаговое руководство и компактный справочник по Hugo на Linux. Оно подходит для разработчиков, контент‑менеджеров и тех, кто хочет быстро развернуть статический сайт: от установки до деплоя. Включены практические советы, чек‑листы по ролям, простая методология и критерии приёмки.

Что такое статический сайт и зачем Hugo

Статический сайт — это набор готовых HTML/CSS/JS файлов, которые не генерируются на сервере при каждом запросе. Нет серверных языков (PHP), нет базы данных: всё создаётся заранее и отдаётся быстро.

Hugo — генератор статических сайтов. Он использует Markdown для контента, шаблоны для оформления и конфигурационные файлы (TOML или YAML) для параметров. Hugo умеет:

  • Быстро генерировать сайт (локальная компиляция и просмотр).
  • Работать как локальный сервер для предпросмотра (по умолчанию localhost:1313).
  • Поддерживать темы и мультистраничные структуры.
  • Управлять фронт‑маттером (meta‑данными) и archetypes для удобного создания контента.

Краткая дефиниция: Markdown — простой язык разметки для текста; фронт‑маттер — метаданные страницы; archetype — шаблон фронт‑маттера для новых страниц.

Хостинг статического сайта

Выбор хостинга для статического сайта обычно прост: многие сервисы предоставляют бесплатные опции для персональных и открытых проектов. Подходящие решения:

  • Aerobatic
  • Amazon S3
  • Azure Static Web Apps
  • CloudFront (CDN)
  • DreamHost
  • Firebase Hosting
  • GitHub Pages
  • GoDaddy
  • Google Cloud Storage
  • Heroku (через buildpacks/статические билды)
  • GitLab Pages
  • Netlify
  • Rackspace
  • Surge

Важно: некоторые провайдеры автоматически поддерживают переадресацию, HTTPS и CDN; другие требуют ручной настройки. Перед загрузкой финального сайта уточните структуру корня и нужны ли файлы index.html в местах, где ожидаются папки.

Установка Hugo (и Git)

Hugo требует установленного Git (для тем и контроля версий). Команды установки для популярных дистрибутивов:

На Ubuntu/Debian:

sudo apt-get install hugo

На Fedora:

sudo dnf install hugo

На Manjaro/Arch:

sudo pacman -Syu hugo

Git часто устанавливается как зависимость, но если нет:

sudo apt-get install git

Если вы предпочитаете последнюю релиз‑версию Hugo, используйте официальные бинарные сборки с сайта проекта или менеджеры пакетов (snap, Homebrew Linux, например).

Создание сайта с Hugo: шаги и объяснение

Hugo создаёт каркас сайта — набор директорий и конфигурационных файлов. Подумайте об этом как о «исходниках» и «сборке»: Hugo берёт шаблоны и контент и компилирует их в статические файлы.

  1. Перейдите в директорию, где хотите создать сайт (например, ваш домашний каталог):
hugo new site geek-demo

Эта команда создаст папку geek-demo с базовой структурой и файлом config.toml.

  1. Перейдите в неё и посмотрите содержимое:
cd geek-demo/
ls

Вы увидите config.toml и пустые папки, которые составляют каркас сайта.

Созданный каталог сайта geek-demo в терминале

Инициализация Git и добавление темы

Темы управляют визуальной частью сайта. Большинство тем распространяются как Git‑репозитории, поэтому инициализация Git — стандартный шаг.

git init

Выберите тему (например, Meghna) и склонируйте её в папку themes:

cd themes
git clone https://github.com/themefisher/meghna-hugo.git

После скачивания вернитесь в корень сайта и скопируйте пример сайта из темы в корневую структуру (примерный сайт часто находится в exampleSite):

cd ..
cp themes/meghna-hugo/exampleSite/* -rf .

Таким образом вы получите готовую структуру с примерным контентом и настройками.

Clone темы и структура в терминале

Запуск локального сервера Hugo

Hugo может действовать как локальный веб‑сервер для предпросмотра изменений. Запустите его с опцией -D, чтобы включить черновики:

hugo server -D

Hugo укажет адрес (обычно http://localhost:1313) и выведет статистику сборки (в исходном примере — 142 ms).

Вывод команды hugo server -D в терминале

Откройте браузер и перейдите на localhost:1313 — вы увидите свой сайт и сможете наблюдать обновления в реальном времени при сохранении файлов.

Тема по умолчанию в Firefox, запущенная на localhost:1313

Редактирование содержимого и мгновенный предпросмотр

Пока сервер запущен, Hugo выдаёт сайт «в памяти» и автоматически пересобирает его при изменении файлов. Это ускоряет цикл редактирования.

Откройте config.toml и отредактируйте параметры baseURL и title. Сохраните файл — Hugo перекомпилирует сайт и обновит страницу браузера автоматически.

Изменение config.toml в редакторе

Если тема поддерживает локализацию, настройки часто размещены в папках вроде data/en или data/ru. Например, баннер можно менять через data/en/banner.yml — изменение title и content тут обновит баннер на сайте.

Файл data/en/banner.yml в редакторе

Изображения хранятся в static/images (или static > images > разделы). Фавиконы и логотипы — в корне static/images.

Редактирование параметров баннера в файле banner.yml

Добавление нового блога: archetypes и фронт‑маттер

Archetype — шаблон, который Hugo использует при создании новой страницы.

  1. Откройте существующую запись, например content/english/blog/simple-blog-post-1.md, и скопируйте секцию фронт‑маттера (между разделителями —).
gedit content/english/blog/simple-blog-post-1.md
  1. Вставьте её в новый файл и отредактируйте так, чтобы она работала как шаблон. Пример изменений:
  • Title: “{{ replace .Name “-“ “ “ | title }}”
  • Date: {{ .Date }}
  • image_webp / image: пути к заголовочным изображениям
  • Author: ваше имя
  • Description: краткое описание; можно оставить пустой строкой “” для заполнения на лету

Сохраните шаблон как archetypes/blog.md.

  1. Создайте новую запись командой:
hugo new blog/first-new-blog-post-on-this-site.md
  1. Откройте её и напишите содержание в Markdown. Каждый раз при сохранении Hugo автоматически обновляет сайт.

Новая запись блога в gedit

Сборка сайта для деплоя

Когда работа закончена, остановите локальный сервер (Ctrl+C) и выполните команду в корне сайта:

hugo

Hugo соберёт готовые файлы в папку public (в исходном примере — 134 ms). Внутри public находятся HTML, CSS, JS, и статические активы, которые нужно загрузить на хостинг.

# Загрузите содержимое папки public (не саму папку) в корень вашего хостинга
scp -r public/* user@yourhost:/var/www/yourdomain

Файлы сайта, готовые к загрузке в хостинг

Теперь вы знаете основы

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

Если вы используете Git и хостинг типа GitHub/GitLab/Bitbucket, можно настроить CI/CD, чтобы при пуше в репозиторий сайт автоматически билдился и деплоился.


Дополнения и практические рекомендации

Когда Hugo может не подойти

  • Нужна динамическая персонализация пользователей (вход, корзина, приватные данные) — лучше серверные фреймворки.
  • Сложные интерактивные приложения с серверной логикой — рассмотрите SPA/SSR (Next.js, Nuxt).
  • Если команда привыкла к CMS с визуальным редактором и сложной ролью пользователей — возможно, стоит интегрировать headless CMS с Hugo.

Альтернативные генераторы статических сайтов

  • Jekyll — распространён для GitHub Pages, Ruby‑вещь.
  • Gatsby — React‑основанный, хорош для React‑интеграции и динамики.
  • Eleventy (11ty) — гибкий JavaScript‑генератор с простой настройкой.
  • Next.js/Nuxt — если нужна гибридная SSR/SSG архите<ктура.

Каждый инструмент имеет свои сильные стороны: Hugo — скорость и простота, Gatsby — богатая экосистема React, Jekyll — тесная интеграция с GitHub Pages.

Ментальные модели и эвристики

  • Исходники vs сборка: рассматривайте content/, layouts/, data/ как исходники; public/ — как результат компиляции.
  • Правило одного источника правды: метаданные в фронт‑маттере страниц, глобальные настройки в config.toml, локальные данные — в data/.
  • Итеративный рабочий цикл: правка → сохранить → браузер автоматически обновил → повторить.

Мини‑методология: быстро с нуля до сайта за 30–60 минут

  1. Установить Hugo и Git.
  2. Создать сайт: hugo new site mysite.
  3. Клонировать тему в themes/ и скопировать exampleSite.
  4. git init; настроить config.toml (title, baseURL).
  5. hugo server -D и настроить стили/контент.
  6. Сборка hugo → загрузить public/* на хостинг.

Чек‑лист по ролям

  • Разработчик

    • Установил Hugo и Git
    • Инициализировал репозиторий
    • Подключил тему и проверил примерный сайт
    • Написал/адаптировал шаблоны в layouts/
    • Настроил CI (если нужен)
  • Контент‑менеджер

    • Создал archetypes для статей
    • Написал первые записи в Markdown
    • Добавил изображения в static/images
    • Проверил метаданные (title, description, author)
  • Дизайнер

    • Проверил responsive‑стили в теме
    • Заменил логотип и фавикон
    • Подобрал и оптимизировал изображения
  • Девопс/Деплой

    • Настроил baseURL и HTTPS (сертификаты)
    • Выбрал стратегию хостинга (Netlify/S3/GitHub Pages)
    • Настроил автоматическую сборку и деплой

SOP: быстрый плейбук для первой публикации

  1. Локально: завершить контент и тесты, остановить сервер.
  2. Выполнить hugo и убедиться, что public/ заполнен.
  3. Создать коммит с изменениями и push в центральный репозиторий.
  4. Деплоить public/* на хостинг (через CI, FTP, rsync или provider‑cli).
  5. Проверить доступность сайта, sitemap.xml и robots.txt.
  6. Настроить мониторинг (проверка 200 OK) и автоматические бекапы.

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

  • Сайт собирается без ошибок командой hugo.
  • В корне хостинга доступны файлы index.html и статические ресурсы.
  • baseURL в config.toml соответствует реальному домену.
  • Ключевые страницы рендерятся корректно на мобильных и десктопах.
  • SEO базово: уникальные title и description для важных страниц.

Тест кейсы и сценарии приёма

  • При изменении config.toml сайт автоматически пересобирается локально и браузер обновляет вкладку.
  • Новая запись блога, созданная через archetype, содержит ожидаемые поля фронт‑маттера.
  • Изображения из static/images отображаются на страницах и не ломают layout.
  • Сборка hugo не генерирует warning/error и public/ содержит ожидаемые файлы.

Команды‑шпаргалка

  • Создать сайт: hugo new site NAME
  • Создать контент: hugo new blog/post-name.md
  • Запустить локально: hugo server -D
  • Собрать сайт: hugo
  • Инициализировать Git: git init
  • Скопировать пример сайта: cp themes//exampleSite/* -rf .

Советы по миграции и совместимости

  • Перенос с Jekyll: большинство Markdown файлов можно перенести, но шаблоны придется переписать под Go‑шаблоны Hugo.
  • При миграции убедитесь, что URL‑структура сохраняется (permalinks) или настроена перенаправления (redirects).
  • При использовании headless CMS (NetlifyCMS, Contentful) проверьте, как CMS записывает фронт‑маттер — возможно, потребуется адаптация archetypes.

Безопасность и приватность (кратко)

  • Статические сайты не хранят пользовательских данных на сервере — это снижает риски, но подключаемые сервисы (формы, аналитика) могут собирать данные.
  • Для форм используйте провайдеры (Formspree, Netlify Forms) с TLS и настройками приватности.
  • Настройте HTTPS и HSTS на стороне хостинга.

Шаблон объявления (100–200 слов)

Ниже — готовый вариант короткого анонса для соцсетей или внутреннего канала:

Мы запустили новый статический сайт, собранный с помощью Hugo. Сайт создан на основе готовой темы, наполняется Markdown и быстро разворачивается локально на порту 1313. Это позволяет команде оперативно править контент и визуально проверять изменения в реальном времени. Финальная версия публикуется как набор статических файлов в папке public и загружается на выбранный хостинг. Если вы хотите добавить пост, следуйте архетипу blog в разделе archetypes — это сохранит метаданные и оформит статью по единому стандарту.


Факто‑бокс: ключевые команды и пути

  • Локальный адрес предпросмотра: http://localhost:1313
  • Создать сайт: hugo new site <имя>
  • Создать запись: hugo new blog/.md
  • Собрать сайт: hugo
  • Папка с готовыми файлами: public/
  • Темы: themes/
  • Статические ресурсы: static/images/

Краткое резюме

Hugo — практичный инструмент для тех, кто хочет простой, быстрый и предсказуемый сайт. Он особенно хорош для блогов, документации и сайтов со статическим контентом. С правильной темой и базовыми навыками работы с Git и Markdown вы сможете развернуть рабочий сайт за короткое время.


Примечание

Если нужен пример CI конфигурации для Netlify/GitHub Actions или готовые snippets для популярных CI, напишите, и я добавлю конкретные шаблоны под ваш стек.

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

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство