πŸ›  CLI-инструмСнты ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π‘Π”

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС XC_VM, систСмным ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌ ΠΈ систСмС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
ΠŸΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ повсСднСвныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, экстрСнный доступ ΠΈ созданиС Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ Π‘Π”.

--- ## πŸ“š Навигация * [πŸ–₯ Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° консоли](#Ρ‚ΠΎΡ‡ΠΊΠ°-Π²Ρ…ΠΎΠ΄Π°-консоли) * [οΏ½ ΠŸΠΎΠ»Π½Ρ‹ΠΉ рССстр ΠΊΠΎΠΌΠ°Π½Π΄](#ΠΏΠΎΠ»Π½Ρ‹ΠΉ-рССстр-ΠΊΠΎΠΌΠ°Π½Π΄) * [πŸ†• РСгистрация Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹](#рСгистрация-Π½ΠΎΠ²ΠΎΠΉ-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹) * [πŸ”§ Команда tools](#ΠΊΠΎΠΌΠ°Π½Π΄Π°-tools) * [πŸ—ƒ ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…](#ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ-Π±Π°Π·Ρ‹-Π΄Π°Π½Π½Ρ‹Ρ…) * [πŸ“ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ](#созданиС-Π½ΠΎΠ²ΠΎΠΉ-ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ) * [βš™οΈ Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ CLI-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ](#Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅-cli-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ) --- ## πŸ–₯ Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° консоли ВсС CLI-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· `console.php`: ```bash /home/xc_vm/console.php [args...] ``` Консоль ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠΌΠ°Π½Π΄: | Π’ΠΈΠΏ | Кол-Π²ΠΎ | ОписаниС | |---|---|---| | **Commands** | 26 | Π Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (update, status, tools ΠΈ Π΄Ρ€.) | | **CronJobs** | 25 | Π—Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ (автозапуск Ρ‡Π΅Ρ€Π΅Π· crontab) | | **Daemons** | 8 | Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ процСссы-Π΄Π΅ΠΌΠΎΠ½Ρ‹ (Commands, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ `DaemonTrait`) | > **ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:** Π”Π΅ΠΌΠΎΠ½Ρ‹ β€” это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Commands с Ρ‚Ρ€Π΅ΠΉΡ‚ΠΎΠΌ `DaemonTrait`. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ `Daemons/` Π½Π΅Ρ‚. Для просмотра всСх доступных ΠΊΠΎΠΌΠ°Π½Π΄: ```bash /home/xc_vm/console.php list ``` --- ## πŸ“‹ ΠŸΠΎΠ»Π½Ρ‹ΠΉ рССстр ΠΊΠΎΠΌΠ°Π½Π΄ ### Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π°Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ | Команда | Класс | ОписаниС | ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ | |---|---|---|---| | `status` | `StatusCommand` | Бтатус систСмы, ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π‘Π”, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ | root | | `update` | `UpdateCommand` | ОбновлСниС систСмы (update / post-update) | xc_vm | | `service` | `ServiceCommand` | Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСрвисом XC_VM: start, stop, restart, reload | root | | `tools` | `ToolsCommand` | Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ обслуТивания (см. [Команда tools](#ΠΊΠΎΠΌΠ°Π½Π΄Π°-tools)) | root/xc_vm | | `certbot` | `CertbotCommand` | ГСнСрация SSL-сСртификата Ρ‡Π΅Ρ€Π΅Π· certbot | root | | `binaries` | `BinariesCommand` | ОбновлСниС Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² ΠΈ GeoLite ΠΈΠ· GitHub | xc_vm | | `startup` | `StartupCommand` | Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ систСмы: daemons.sh, crontab, кСш | root | | `monitor` | `MonitorCommand` | ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ стрима ΠΏΠΎ ID (запуск/пСрСзапуск/отслСТиваниС) | xc_vm | | `thumbnail` | `ThumbnailCommand` | ГСнСрация ΠΏΡ€Π΅Π²ΡŒΡŽ-ΠΊΠ°Π΄Ρ€ΠΎΠ² для стрима | xc_vm | | `plex_item` | `PlexItemCommand` | ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° элСмСнта Plex (Ρ„ΠΈΠ»ΡŒΠΌ/сСриал) | xc_vm | | `watch_item` | `WatchItemCommand` | ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° элСмСнта Watch (поиск/ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ TMDB) | xc_vm | | `migrate` | `MigrateCommand` | ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π‘Π” `xc_vm_migrate` | xc_vm | | `balancer` | `BalancerCommand` | Установка/настройка балансировщика ΠΏΠΎ SSH | root | > ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (условная рСгистрация Ρ‡Π΅Ρ€Π΅Π· `file_exists()`): `cache_handler`, `balancer`, `migrate`. ### ΠšΠΎΠΌΠ°Π½Π΄Ρ‹-Π΄Π΅ΠΌΠΎΠ½Ρ‹ (Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ процСссы) Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ `DaemonTrait` ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· `while(true)`: | Команда | Класс | ОписаниС | |---|---|---| | `signals` | `SignalsCommand` | ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° kill/cache сигналов ΠΈΠ· Π‘Π” ΠΈ Redis | | `watchdog` | `WatchdogCommand` | ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ систСмы: CPU, соСдинСния, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ сСрвСров | | `queue` | `QueueCommand` | ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ | | `scanner` | `ScannerCommand` | Π‘ΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… стримов/устройств | | `cache_handler` | `CacheHandlerCommand` | ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с кСшСм (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) | ### ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ стримов | Команда | Класс | ОписаниС | |---|---|---| | `proxy` | `ProxyCommand` | ΠŸΡ€ΠΎΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ MPEG-TS ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· сокСты | | `archive` | `ArchiveCommand` | TV-Π°Ρ€Ρ…ΠΈΠ² β€” запись стрима Π² сСгмСнты | | `created` | `CreatedCommand` | Created Channel β€” ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° ΠΊΠ°Π½Π°Π»Π° ΠΈΠ· источников | | `delay` | `DelayCommand` | Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° воспроизвСдСния HLS-стрима | | `loopback` | `LoopbackCommand` | ΠŸΡ€ΠΈΡ‘ΠΌ MPEG-TS с Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ сСрвСра | | `llod` | `LlodCommand` | Low-Latency On-Demand ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ стримов | | `record` | `RecordCommand` | Π—Π°ΠΏΠΈΡΡŒ стрима Π² MP4 | | `ondemand` | `OndemandCommand` | Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ стримов Π±Π΅Π· Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π·Ρ€ΠΈΡ‚Π΅Π»Π΅ΠΉ | ### ΠšΡ€ΠΎΠ½-Π·Π°Π΄Π°Ρ‡ΠΈ (25 ΡˆΡ‚.) ИмСна всСх ΠΊΡ€ΠΎΠ½-Π·Π°Π΄Π°Ρ‡ ΠΈΠΌΠ΅ΡŽΡ‚ прСфикс `cron:`. Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ `CronTrait` ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ систСмным crontab. | Команда | Класс | ОписаниС | |---|---|---| | `cron:activity` | `ActivityCronJob` | Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π»ΠΎΠ³ΠΎΠ² активности ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Π‘Π” | | `cron:backups` | `BackupsCronJob` | Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ бэкапами (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) | | `cron:cache` | `CacheCronJob` | Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ кСшСм | | `cron:cache_engine` | `CacheEngineCronJob` | ГСнСрация кСша для Π»ΠΈΠ½ΠΈΠΉ, стримов, сСриалов, Π³Ρ€ΡƒΠΏΠΏ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) | | `cron:certbot` | `CertbotCronJob` | ΠŸΡ€ΠΎΠ΄Π»Π΅Π½ΠΈΠ΅ SSL-сСртификата | | `cron:cleanup` | `CleanupCronJob` | ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π»ΠΎΠ³ΠΎΠ² | | `cron:epg` | `EpgCronJob` | Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° EPG (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) | | `cron:errors` | `ErrorsCronJob` | ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π»ΠΎΠ³ΠΎΠ² ошибок | | `cron:lines_logs` | `LinesLogsCronJob` | Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π»ΠΎΠ³ΠΎΠ² клиСнтских запросов Π² Π‘Π” | | `cron:plex` | `PlexCronJob` | ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Plex | | `cron:providers` | `ProvidersCronJob` | ОбновлСниС ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) | | `cron:root_mysql` | `RootMysqlCronJob` | ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π‘Π” (root, ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) | | `cron:root_signals` | `RootSignalsCronJob` | ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сигналов, iptables, nginx, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСрвисом (root) | | `cron:series` | `SeriesCronJob` | ОбновлСниС Π΄Π°Π½Π½Ρ‹Ρ… сСриалов (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) | | `cron:servers` | `ServersCronJob` | ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ сСрвСра, запуск Π΄Π΅ΠΌΠΎΠ½ΠΎΠ², ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ статистики | | `cron:stats` | `StatsCronJob` | ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ ΠΈ сохранСниС статистики | | `cron:streams` | `StreamsCronJob` | ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ статуса стримов | | `cron:streams_logs` | `StreamsLogsCronJob` | Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π»ΠΎΠ³ΠΎΠ² стримов | | `cron:tmdb` | `TmdbCronJob` | ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… TMDB (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) | | `cron:tmdb_popular` | `TmdbPopularCronJob` | ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ популярного ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° TMDB (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) | | `cron:tmp` | `TmpCronJob` | ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² | | `cron:update` | `UpdateCronJob` | ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) | | `cron:users` | `UsersCronJob` | Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ соСдинСниями, синхронизация Redis | | `cron:vod` | `VodCronJob` | ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° VOD-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° | | `cron:watch` | `WatchCronJob` | ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Watch-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ | > ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΡ€ΠΎΠ½-Π·Π°Π΄Π°Ρ‡ΠΈ (условная рСгистрация): `cron:backups`, `cron:cache_engine`, `cron:epg`, `cron:providers`, `cron:root_mysql`, `cron:series`, `cron:tmdb`, `cron:tmdb_popular`, `cron:update`. --- ## πŸ†• РСгистрация Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ВсС CLI-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ `CommandInterface` ΠΈ явно Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² `console.php`. ### CommandInterface ```php interface CommandInterface { public function getName(): string; // УникальноС имя ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² CLI) public function getDescription(): string; // ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½ΠΎΠ΅ описаниС (показываСтся Π² `list`) public function execute(array $rArgs): int; // Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π°, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π²Ρ‹Ρ…ΠΎΠ΄Π° } ``` ### Π¨Π°Π³ 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ класс Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Π² `src/cli/Commands/` (ΠΈΠ»ΠΈ `src/cli/CronJobs/` для ΠΊΡ€ΠΎΠ½-Π·Π°Π΄Π°Ρ‡): ```php register(new MyNewCommand()); // Или условно (для ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ) if (file_exists(CLI_PATH . 'Commands/MyNewCommand.php')) { $rRegistry->register(new MyNewCommand()); } ``` ### Π¨Π°Π³ 3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Makefile (Ссли ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΠ· LB) Если ΠΊΠΎΠΌΠ°Π½Π΄Π° НЕ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² сборку Load Balancer, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΅Ρ‘ ΠΏΡƒΡ‚ΡŒ Π² `LB_FILES_TO_REMOVE` Π² `Makefile`. ### Π¨Π°Π³ 4. ВСстированиС ```bash # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° отобраТаСтся Π² спискС /home/xc_vm/console.php list # ЗапуститС /home/xc_vm/console.php my_command ``` --- ## πŸ”§ Команда tools Команда `tools` прСдоставляСт ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для обслуТивания систСмы. ```bash console.php tools ``` ### ΠŸΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (запуск ΠΎΡ‚ `root`) | Подкоманда | ОписаниС | |---|---| | `rescue` | Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ доступа для экстрСнного Π²Ρ…ΠΎΠ΄Π° Π² панСль. Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ URL. **Π£Π΄Π°Π»ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ послС использования!** | | `access` | ΠŸΠ΅Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄ΠΎΠ² доступа nginx ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ nginx. Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ URL всСх ΠΊΠΎΠ΄ΠΎΠ² Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ. | | `ports` | ΠŸΠ΅Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ² nginx (HTTP, HTTPS, RTMP) ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ nginx. | | `migration` | ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ (`xc_vm_migrate`) ΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ `.sql`-бэкап. | | `user` | Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ rescue-администратора со случайными ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ. **Π£Π΄Π°Π»ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ послС использования!** | | `mysql` | ΠŸΠ΅Ρ€Π΅Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ MySQL для всСх сСрвСров балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. | | `database` | Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‡ΠΈΡΡ‚ΡƒΡŽ Π‘Π” XC_VM ΠΈΠ· `database.sql`. **УдаляСт Π’Π‘Π• Π΄Π°Π½Π½Ρ‹Π΅!** Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ„Π»Π°Π³ `--confirm`. | | `flush` | Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ всС Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ IP β€” ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° iptables, удаляСт Ρ„Π°ΠΉΠ»Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ `blocked_ips`. | ### ΠŸΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (запуск ΠΎΡ‚ `xc_vm`) | Подкоманда | ОписаниС | |---|---| | `images` | Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ изобраТСния стримов/Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ²/сСриалов с TMDB. Π‘ΠΊΠ°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ Π‘Π” ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹. | | `duplicates` | Найти ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ VOD-стримов. Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΌΡƒ источнику, оставляСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, удаляСт ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅. **ДСструктивная опСрация!** | | `bouquets` | ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ссылки Π² Π±ΡƒΠΊΠ΅Ρ‚Π°Ρ…. УдаляСт ID, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… большС Π½Π΅Ρ‚ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. | ### ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ```bash # ЭкстрСнный доступ ΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ (root) sudo /home/xc_vm/console.php tools rescue # ΠŸΠ΅Ρ€Π΅Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄ΠΎΠ² доступа (root) β€” трСбуСтся послС измСнСния шаблона nginx sudo /home/xc_vm/console.php tools access # ΠŸΠ΅Ρ€Π΅Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ² (root) sudo /home/xc_vm/console.php tools ports # ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ (root) sudo /home/xc_vm/console.php tools migration # ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ ΠΈ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ бэкап (root) sudo /home/xc_vm/console.php tools migration /path/to/backup.sql # Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ rescue-администратора (root) sudo /home/xc_vm/console.php tools user # ΠŸΠ΅Ρ€Π΅Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ MySQL Π½Π° всСх сСрвСрах (root) sudo /home/xc_vm/console.php tools mysql # Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‡ΠΈΡΡ‚ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… (root) β€” Π”Π•Π‘Π’Π Π£ΠšΠ’Π˜Π’ΠΠΠ― ΠžΠŸΠ•Π ΠΠ¦Π˜Π―! sudo /home/xc_vm/console.php tools database --confirm # Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ всС Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ IP (root) sudo /home/xc_vm/console.php tools flush # Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ изобраТСния (xc_vm) su - xc_vm -c '/home/xc_vm/console.php tools images' # Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ VOD (xc_vm) su - xc_vm -c '/home/xc_vm/console.php tools duplicates' # ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ссылки Π² Π±ΡƒΠΊΠ΅Ρ‚Π°Ρ… (xc_vm) su - xc_vm -c '/home/xc_vm/console.php tools bouquets' ``` > ⚠️ **Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:** `duplicates` Π±Π΅Π·Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ удаляСт стримы ΠΈ всС связанныС Π΄Π°Π½Π½Ρ‹Π΅ (Π»ΠΎΠ³ΠΈ, статистика, эпизоды, записи). ВсСгда Π΄Π΅Π»Π°ΠΉΡ‚Π΅ бэкап ΠΏΠ΅Ρ€Π΅Π΄ запуском. > ⚠️ **Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:** `database --confirm` стираСт всю Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ замСняСт Π΅Ρ‘ чистой схСмой. Π­Ρ‚ΠΎ нСобратимая опСрация. > πŸ’‘ **Π‘ΠΎΠ²Π΅Ρ‚:** ПослС использования `rescue` всСгда удаляйтС ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· Π°Π΄ΠΌΠΈΠ½-панСль ΠΈΠ»ΠΈ запустив `tools access` послС восстановлСния доступа. > πŸ’‘ **Π‘ΠΎΠ²Π΅Ρ‚:** ПослС использования `user` Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ смСнитС ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ rescue-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹. --- ## πŸ—ƒ ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… XC_VM ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ для управлСния измСнСниями схСмы Π‘Π” ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями. ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ автоматичСски ΠΏΡ€ΠΈ обновлСниях ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ статуса систСмы. ### Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ 1. Π€Π°ΠΉΠ»Ρ‹ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ хранятся ΠΊΠ°ΠΊ `.sql` Ρ„Π°ΠΉΠ»Ρ‹ Π²: ``` /home/xc_vm/migrations/ ``` 2. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» имСнуСтся с числовым прСфиксом: ``` 001_drop_watch_folders_plex_token.sql 002_panel_logs_add_file_env.sql 003_drop_settings_segment_type.sql ``` 3. ΠŸΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Π΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ `migrations` Π‘Π”. КаТдая миграция выполняСтся **Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·** β€” Ссли миграция ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π°, ΠΎΠ½Π° пропускаСтся. 4. ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ автоматичСски: - `console.php update post-update` β€” послС обновлСния ΠΏΠ°Π½Π΅Π»ΠΈ - `console.php status` β€” ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ статуса систСмы (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° MAIN-сСрвСрС) ### ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ выполнСния ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ ```text [ MigrationRunner::run() ] β”‚ β–Ό [ CREATE TABLE IF NOT EXISTS `migrations` ] β”‚ β–Ό [ Π§Ρ‚Π΅Π½ΠΈΠ΅ всСх *.sql Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· migrations/ ] β”‚ β–Ό [ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ `migrations`: ] β”œβ”€β”€ Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ SQL-запросы β”œβ”€β”€ Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ `migrations` └── ВывСсти [OK] ΠΈΠ»ΠΈ [WARN] ``` --- ## πŸ“ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Когда Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ схСму Π‘Π” (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ‚.Π΄.), создайтС Π½ΠΎΠ²Ρ‹ΠΉ SQL-Ρ„Π°ΠΉΠ» ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ. ### Π¨Π°Π³ 1. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ имя Ρ„Π°ΠΉΠ»Π° Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ порядковый Π½ΠΎΠΌΠ΅Ρ€ ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ имя: ``` NNN_short_description.sql ``` **ΠŸΡ€Π°Π²ΠΈΠ»Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°:** - Числовой прСфикс: 3 Ρ†ΠΈΡ„Ρ€Ρ‹ с Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌΠΈ нулями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `006`, `007`) - Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ: Π½ΠΈΠΆΠ½Π΅Π΅ ΠΏΠΎΠ΄Ρ‡Ρ‘Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ `_` - Имя: строчныС Π±ΡƒΠΊΠ²Ρ‹, подчёркивания, описаниС дСйствия - Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅: `.sql` **ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:** ``` 006_add_user_timezone.sql 007_create_audit_log_table.sql 008_insert_default_codec_settings.sql ``` ### Π¨Π°Π³ 2. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ SQL ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ SQL-запросы Π² Ρ„Π°ΠΉΠ». НСсколько запросов Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ `;`. **ΠŸΡ€Π°Π²ΠΈΠ»Π° для SQL ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ:** 1. **Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `IF EXISTS` / `IF NOT EXISTS`** для идСмпотСнтности: ```sql -- Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ (бСзопасно) ALTER TABLE `settings` ADD COLUMN IF NOT EXISTS `timezone` VARCHAR(64) DEFAULT 'UTC'; -- Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ (бСзопасно) ALTER TABLE `settings` DROP COLUMN IF EXISTS `old_column`; -- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (бСзопасно) CREATE TABLE IF NOT EXISTS `audit_log` ( `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, `action` VARCHAR(255) NOT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 2. **Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ условный `INSERT`** для избСТания Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ²: ```sql INSERT INTO `streams_arguments` (argument_key, argument_name, argument_cmd) SELECT 'my_key', 'My Argument', '-my_flag %s' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `streams_arguments` WHERE argument_key = 'my_key'); ``` 3. **НС ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΠΉΡ‚Π΅ DDL ΠΈ DML**, зависящиС Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Если Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Ρ‘ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ. 4. **ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ** ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ с прСфиксом `--` (ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ). ### Π¨Π°Π³ 3. РазмСститС Ρ„Π°ΠΉΠ» Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π²: ``` /home/xc_vm/migrations/ ``` > πŸ’‘ Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ исходного ΠΊΠΎΠ΄Π° это `src/migrations/`. ### Π¨Π°Π³ 4. ВСстированиС ЗапуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ status для примСнСния ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ: ```bash sudo /home/xc_vm/console.php status first-run ``` ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄: ``` Migrations ------------------------------ [OK] 006_add_user_timezone.sql ``` Если запрос Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ с ошибкой, миграция всё Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ записана, Π½ΠΎ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ `[WARN]` β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ SQL ΠΈ ΠΈΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. --- ## βš™οΈ Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ CLI-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ### ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° статуса ```bash sudo /home/xc_vm/console.php status ``` ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π»ΠΈ XC_VM, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Π‘Π”, выполняСт ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ, исправляСт ΠΏΡ€Π°Π²Π° доступа ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ nginx. ВрСбуСтся послС установки ΠΈΠ»ΠΈ восстановлСния. Π‘ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ `first-run` пропускаСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ статуса β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ настройкС: ```bash sudo /home/xc_vm/console.php status first-run ``` ### Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСрвисом ```bash sudo /home/xc_vm/console.php service start|stop|restart|reload ``` ### Π ΡƒΡ‡Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ```bash sudo -u xc_vm /home/xc_vm/console.php update update ``` Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈ примСняСт послСднСС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ с GitHub. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ запускаСтся автоматичСски Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-панСль. ### Диагностика стримов ```bash sudo -u xc_vm /home/xc_vm/console.php monitor ``` ЗапускаСт стрим Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ошибки. ПолСзно для диагностики ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ запуска стримов. ### SSL-сСртификат ```bash sudo /home/xc_vm/console.php certbot ``` ### ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ (с Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм) ```bash /home/xc_vm/console.php migrate ``` ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π±Π°Π·Ρ‹ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Π² [РуководствС ΠΏΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ](ru-ru/info/migration_guide.md). ---