69 lines
3.3 KiB
Go
69 lines
3.3 KiB
Go
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()
|
||
}
|