Repository navigation
09 Operations
| Что | Как |
|---|---|
| Жив ли сервис |
GET /api/health (без входа, отдаёт версию и время) |
| Что происходило | панель → «Действия», либо php backend/bin/fornex audit --limit=30
|
| Состояние зоны домена | php backend/bin/fornex zone:show example.com |
| Что видят получатели | php backend/bin/fornex verify example.com |
Мониторингу достаточно /api/health: ответ {"ok":true,"status":"ok","version":"…","php":"8.5.x"}
означает, что PHP отвечает, настройки прочитаны и приложение собралось.
LOG_PATH (по умолчанию var/log/app.log), ротация: 5 МБ на файл, хранится 5 файлов. В строке
есть request_id; он же попадает в запись журнала действий, поэтому «что видел человек» и «что
записано в базе» можно сопоставить.
Уровни: debug, info (по умолчанию), warning, error. debug на боевой установке не
включайте надолго — он пишет подробности запросов.
| Что | Зачем |
|---|---|
fornex.env |
единственная копия ключа API и хэша пароля |
var/fornex.sqlite |
журнал, выпущенные токены, индекс снимков |
var/snapshots/ |
снимки зон, по каталогу на домен |
Сама зона в бэкап не входит — она живёт в Fornex. Согласованную копию базы даёт:
sqlite3 var/fornex.sqlite "VACUUM INTO '/backup/fornex-$(date +%F).sqlite'"Снимки полезно хранить дольше, чем журнал: именно из них восстанавливают зону, когда что-то пошло не так.
cd /srv/fornex-control
git pull --ff-only
sudo -u www-data php tools/lint.php
sudo -u www-data php tests/plan_test.php
systemctl reload php8.5-fpmМиграции применяются на первом запросе после обновления и только добавляют (CREATE TABLE IF NOT EXISTS), поэтому старая база продолжает работать во время перезагрузки.
После обновления интерфейса поднимите APP_VERSION: ссылки на app.js и CSS содержат ?v=,
именно это заставляет браузер взять новый файл, а не закешированный.
-
git checkout <предыдущий тег>(илиgit reset --hard <тег>в рабочей копии, если своих правок нет). -
systemctl reload php8.5-fpm. - Если схема базы ушла вперёд — вернуть копию из бэкапа; миграции этой версии только добавляют, поэтому обычно достаточно оставить базу как есть.
- Зону при необходимости вернуть из снимка вручную: автоматического восстановления нет намеренно — это решение человека.
# пароль
php -r "echo password_hash('новый-пароль', PASSWORD_DEFAULT), PHP_EOL;"
# в fornex.env заменить ADMIN_PASSWORD_HASH, затем
systemctl reload php8.5-fpmКлюч API меняется в кабинете Fornex: выпустить новый, вписать в FORNEX_API_KEY, перезагрузить
PHP-FPM, отозвать старый. Пока ключ не заменён, панель продолжает работать со старым.
- Скопировать дерево,
fornex.env,var/целиком. - Проверить права: приложение читает пользователь PHP,
var/ему доступен на запись. -
php backend/bin/fornex help— настройки и база на месте. - Переключить DNS/прокси, проверить
/api/healthи вход. - Убедиться, что старый экземпляр выключен: два экземпляра с одним ключом работают, но журнал и попытки входа окажутся разделены.
Зона от этого не страдает: она в Fornex. Пока панель лежит, записи правятся в кабинете, а после
подъёма verify покажет расхождение с ожидаемым. Поэтому панель не хранит «истину» у себя —
любая её копия зоны была бы вторым источником правды.
- Зона пересобирается минутами; проверка сразу после записи может показать старый ответ.
-
SOAиNSне редактируются: это держит зону, и «быстрая правка» здесь дороже, чем кажется. - Создание зоны через API на части аккаунтов запрещено (403) — это свойство аккаунта Fornex.
репозиторий · релизы · Fornex Control · MIT · панель для DNS-зон Fornex