Fix Markdown-mangling artifacts the free web engine (yandex) produced in the
committed docs/ru, and regenerate the whole tree cleanly (0 fallbacks):
- Sentinel format @@N@@ -> {N}. MT engines are trained to preserve curly
format-string placeholders, so {N} survives code-heavy lines where @@N@@ (and
ZZZ…ZZZ, which also duplicated its Z) were split/moved — e.g. the stray
"@0@@" in the FAQ and "load balancerZ" in the README are gone.
- Possessive: a trailing English `'s` is consumed INTO the masked span and
dropped on restore. Every sentinel format breaks when a bare `'s` sits right
after it, and Russian has no possessive `'s`.
- Validate + retry: after restore, any leftover brace fragment triggers a retry
(the engine is non-deterministic); after a few failures the line stays English
so a broken token is never emitted.
- Glossary += KeyDB, yt-dlp, Ubuntu, iptables, MAGSCAN.
Regenerated docs/ru (37 files, translators/yandex): no residual sentinels,
mkdocs build --strict clean.
7.0 KiB
Механизм обновления в XC_VM
Система обновления XC_VM реализована как многоуровневый процесс, от веб-интерфейса до сценариев системного уровня. Такой подход обеспечивает надежность, автоматизацию и целостность данных при обновлении панели.
📋 Пошаговое руководство со скриншотами см. в разделе Обновление сервера.
1. Инициирование обновления
Процесс начинается, когда администратор нажимает кнопку "Обновить" в веб-интерфейсе.
- Сигнал с именем
updateвставляется в таблицуsignalsв базе данных. - Этот сигнал действует как триггер для всей процедуры обновления.
2. Триггер CRON
Каждую минуту выполняется следующее задание CRON:
/home/xc_vm/console.php cron:root_signals
Задание cron root_signals проверяет наличие новых сигналов.
Когда он обнаруживает сигнал update, он запускает:
/home/xc_vm/console.php update update
3. Управление обновлениями (уровеньPHP)
Основная логика находится в классе UpdateCommand:
src/Cli/Commands/UpdateCommand.php
На этом этапе выполняются следующие действия:
- Определите текущий тип панели (
MAINилиLB). - Извлекать обновленные метаданные из GitHub:
- Прямая ссылка на архив обновлений.
- Контрольная сумма SHA для проверки целостности.
- Загрузите архив во временный каталог.
- Убедитесь, что загруженный файл соответствует ожидаемому хэшу.
- Передайте управление программе обновления системного уровня (Python):
sudo /usr/bin/python3 /home/xc_vm/update "/home/xc_vm/tmp/.update.tar.gz" "HASH" > /dev/null 2>&1 &
💡 После завершения обновления Python программа вызывает
console.php update post-update, что запускает миграцию базы данных и очистку после обновления.
4. Обновление на системном уровне (уровень Python)
Управление передается скрипту на Python:
/home/xc_vm/update
Он выполняет привилегированные системные операции:
-
**Повторно проверьте контрольную сумму архива.
-
**Остановите панель **, чтобы предотвратить конфликты во время обновления.
-
Извлеките архив во временный каталог:
/tmp/xc_vm_update_*/ -
Удалите исключенные каталоги из временной копии — двоичные файлы, конфигурации и пользовательские данные, которые нельзя перезаписывать:
bin/ffmpeg_bin, bin/nginx, bin/nginx_rtmp, bin/php, bin/redis, bin/install, bin/maxmind, bin/certbot, content, backups, tmp, config, signals
-
Скопируйте оставшиеся файлы поверх текущей установки:
cp -a /tmp/xc_vm_update_*/. /home/xc_vm/ -
Закрепить право собственности:
chown -R xc_vm:xc_vm /home/xc_vm/ -
Выполнение задач после обновления:
/home/xc_vm/console.php update post-update -
Перезапустите панель в нормальном рабочем режиме.
-
**Очистите временный каталог и удалите архив.
ℹ️ Один и тот же архив используется как для установки, так и для обновления. Фильтрация выполняется на сервере во время обновления — список исключений определяется непосредственно в
src/update.
5. Завершение обновления
Заключительные шаги выполняются на этапе post-update из UpdateCommand:
-
Если включено автоматическое обновление LB и был обновлен главный узел (
MAIN) → создайте сигналыupdateдля всех подсистем балансировки нагрузки. -
Обновите версию панели в базе данных.
-
Удалите устаревшие файлы.
-
Повторно примените правильные разрешения:
chown -R xc_vm:xc_vm /home/xc_vm/ -
Перезагрузить systemd демонов:
sudo systemctl daemon-reload -
Проверка состояния панели:
sudo /home/xc_vm/console.php status -
Отметьте процесс обновления как завершенный.
6. Полная схема рабочего процесса
[ Web Interface ]
│
▼
[ DB: "update" signal ]
│
▼
[ CRON → console.php cron:root_signals ]
│
▼
[ UpdateCommand (PHP): download + verify hash ]
│
▼
[ update (Python): extract to /tmp → remove excluded → copy over ]
│
▼
[ post-update → UpdateCommand ]
│
▼
[ Finalize, restart daemons, update version in DB ]
ключевые функции
- **Двойная проверка целостности ** (хэш проверяется как на уровне PHP, так и на уровне Python).
- **Автоматическое распространение обновлений с MAIN на все подсистемы балансировки нагрузки.
- **Очистка ** от устаревших файлов и нормализация разрешений.
- **Перезапуск безопасной панели ** после установки.
- **Гибкость и автономность ** благодаря запуску по сигналу CRON +.