Генератор статических файлов Hugo может быть установлен на компьютерах с операционными системами Linux, Windows, macOS и BSD.
Используя встроенный веб-сервер Hugo и локально настроенную систему управления контента Decap вы можете производить добавление и редактирование контента вашего сайта при помощи удобного редактора пользовательского веб-интерфейса, который включает в себя функции редактирования форматированного текста, предварительный просмотр в реальном времени и загрузку медиафайлов методом перетаскивания.
Благодаря своей продвинутой системе шаблонов и быстрым конвейерам ресурсов Hugo визуализирует полный сайт за считанные секунды.
Поскольку Hugo создает статические веб-сайты, вы можете разместить свой веб-сайт Hugo практически на любом хостинге, просто перенеся на него сгенерированные файлы.
Если у вас есть доступ к вашему веб-хосту по сетевому протоколу SSH, вы можете использовать команду rsync для безопасного и быстрого развертывания вашего веб-сайта Hugo.


1. Процесс публикации из Windows 10/11

1.1. Установка Git

Установите Git для Windows, который позволяет запускать команду Rsync с помощью Git Bash.

1.2. Установка Rsync и ее зависимостей

Переходим на https://repo.msys2.org/msys/x86_64/ , качаем актуальные пакеты:

  1. rsync ( rsync-3.2.7-2-x86_64.pkg.tar.zst )
  2. libxxhash ( libxxhash-0.8.2-1-x86_64.pkg.tar.zst )
  3. liblz4 ( liblz4-1.9.4-1-x86_64.pkg.tar.zst )
  4. libzstd ( libzstd-1.5.5-1-x86_64.pkg.tar.zst )
  5. libopenssl ( libopenssl-3.2.0-1-x86_64.pkg.tar.zst )

Скачиваем и устанавливаем архиватор https://github.com/mcmilk/7-Zip-zstd/releases (например 7z22.01-zstd-x64.exe). Запускаем 7zFM.exe (обычно находится в папке C:\Program Files\7-Zip-Zstandard) и распаковываем скаченные архивы в папку Git, например:

  • \rsync-3.2.7-2\usr\bin → C:\Program Files\Git\usr\bin
  • \rsync-3.2.7-2\usr\lib → C:\Program Files\Git\usr\lib
  • \rsync-3.2.7-2\usr\share → C:\Program Files\Git\usr\share

и по аналогии оставшиеся архивы.

1.3. Скопируйте свой SSH-ключ на свой хост

Чтобы сделать вход на ваш сервер более безопасным, вы можете загрузить свой ключ SSH. Если вы уже установили свой ключ SSH на свой сервер, вы можете перейти к следующему разделу.

Запустите файл git-bash.exe (обычно находится в папке C:\Program Files\Git ) и выполните эту команду, чтобы сгенерировать новую пару ключей с именем rsa_id:

$ ssh-keygen -t rsa -q -C "For SSH" -f rsa_id

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

В результате вашей папке (например C:\Users\USER_NAME\.ssh) будет создано два файла с закрытым и открытым ключем (rsa_id и rsa_id.pub).

Чтобы упростить вход в систему, добавьте определение вашего веб-хоста в файл ~/.ssh/config с помощью следующих команд, заменив USER_NAME именем текущего пользователя Windows, HOST его IP-адресом, а также USER именем пользователя, которым вы используете для входа на свой веб-хост при передаче файлов:

$ cd /c/Users/USER_NAME/.ssh

~/.ssh/$ cat >> config <<EOF
Host HOST
     Hostname HOST
     Port 22
     User USER
     IdentityFile ~/.ssh/rsa_id
EOF

После выполнения команд в вашей папке Windows .ssh должен сформироваться файл config (обычно размещается C:\Users\user_name\.ssh\config) со следующим содержимым:

Host HOST Hostname HOST Port 22 User USER IdentityFile ~/.ssh/rsa_id

[!WARNING] Не забудьте включить доступ по SSH на вашем веб-хостинге. Как включить доступ SSH на популярном хостинге Timeweb смотрите здесь.

Затем, перейдите в папку .ssl и скопируйте свой открытый ключ SSH на удаленный сервер с помощью ssh-copy-idкоманд, заменив user_name именем текущего пользователя Windows, HOST его IP-адресом, а также USER именем пользователя, которым вы используете для входа на свой веб-хост при передаче файлов:

$ cd /c/Users/user_name/.ssh
$ ssh-copy-id -i rsa_id.pub USER@HOST

Теперь вы можете легко подключиться к удаленному серверу:

$ ssh USER@HOST
Enter passphrase for key '/home/mylogin/.ssh/rsa_id':

Закройте текущее соединение git-bash.

1.4. Создайте скрипт для запуска процесса публикации

Запустите файл git-bash.exe (обычно находится в папке C:\Program Files\Git).

Создайте новый скрипт, который будет называться deploy в корне дерева вашего сайта Гюго (например: D:\Hugo\Sites\webpractica):

$ cd /d/Hugo/Sites/webpractica

/d/Hugo/Sites/webpractica (main)
$ cat >> deploy <<EOF
#!/bin/sh
hugo --gc --minify && rsync -avz --delete public/ USER@HOST:~/webpractica/public_html
exit 0
EOF

Применяемые параметры:

-a - активируется поддержка архивации данных; -v – процесс синхронизации отображается на экране; -z - сжатие файлов происходит при передаче на удаленный сервер;

--delete - Удаление файлов при синхронизации. По умолчанию в каталоге-приемнике хранятся все файлы, ранее туда скопированные. Даже те, которые пользователь за ненадобностью давно удалил с рабочего диска. Поэтому рекомендуется хотя бы периодически удалять ненужные данные, а не снижать объем каталога с резервной копией информации.

[!info] Более подробно о настройках и примерах синхронизации Rsync читайте здесь

Cделайте deploy исполняемым:

/d/Hugo/Sites/webpractica (main)
$ chmod +x deploy

Создайте deploy.bat для запуска скрипта deploy под Windows

/d/Hugo/Sites/webpractica (main)
$ cat >> deploy.bat <<EOF
"C:\Program Files\Git\git-bash.exe" "deploy"
EOF

Закройте текущее соединение git-bash.

1.5. Выполнение публикации локальной версии сайта Hugo на веб-хостинг

Запустите файл deploy.bat из коневого каталога вашего сайта Hugo

2. Процесс публикации из Linux (Debian)

Подробное описание находится на официальном сайте Hugo здесь.