rubric/modules/softmodules/soft_zola.go
2026-07-27 16:45:21 +03:00

69 lines
3.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package softmodules
import (
"rubric/utils"
)
var ZolaModule = Module{
Key: "zola",
Aliases: []string{"z", "static"},
Title: "Zola — генератор статических сайтов",
Description: "Однобинарный SSG на Rust: сборка, деплой через rsync, Angie",
Run: showZola,
}
func showZola() {
utils.Header("Soft — Zola")
utils.Section("Что это")
utils.Code(`Zola — генератор статических сайтов (SSG), написанный на Rust.
Один бинарь без зависимостей, встроенный шаблонизатор Tera,
встроенный Sass-компилятор и Markdown-парсер — ничего ставить
отдельно не нужно (в отличие от Jekyll/Hugo-плагинов и npm-тулчейнов).
Подходит для блогов, документации, персональных сайтов —
как раз для thebookofmagnus.ru.`)
utils.Section("Основные команды")
utils.Command("zola init mysite", "создать новый проект сайта")
utils.Command("zola build", "собрать сайт в папку public/")
utils.Command("zola serve", "локальный dev-сервер с live reload")
utils.Command("zola check", "проверить ссылки и конфигурацию")
utils.Section("Модель развёртывания: локальная сборка + rsync")
utils.Code(`Zola не обязательно ставить на сервер — она нужна только там,
где собирается сайт. Рабочая схема:
1. Пишешь контент локально
2. zola build → получаешь папку public/
3. rsync -avz --delete public/ user@server:/var/www/mysite/public/
4. Angie отдаёт статику из /var/www/mysite/public
Разбор флагов rsync:
-a archive-режим: права, симлинки, время модификации
-v verbose — видно что копируется
-z сжатие при передаче
--delete удаляет на сервере файлы, которых больше нет локально
(важно при переименовании/удалении страниц)
Альтернатива — автосборка на сервере: bare git-репозиторий +
post-receive хук, который сам делает checkout + zola build +
копирование в /var/www/mysite/public. Проще для старта — вариант
с локальной сборкой и rsync, без Zola на самом VDS.`)
utils.Section("Раздача через Angie")
utils.Code(`server {
listen 443 ssl;
server_name thebookofmagnus.ru www.thebookofmagnus.ru;
root /var/www/mysite/public;
index index.html;
ssl_certificate /etc/letsencrypt/live/thebookofmagnus.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/thebookofmagnus.ru/privkey.pem;
}`)
utils.Note("certbot с Angie: плагин --nginx конфликтует с Angie. Всегда используй --webroot (webroot-папка вроде /var/www/certbot + location /.well-known/acme-challenge/ в HTTP-server-блоке)")
utils.Footer()
}