Коллеги, если вы не можете справиться с обновлением или никогда этого не делали, закажите обновление у нас.
Заказать у нас обновление freePBX.
Основная статья про обновление.
Сегодня обновил первый из астерисков на FBPX16 иииии я положил свой астериск и завел обратно без восстановления из бэкапа.Я рекомендую пока что воздержаться от обновления хотя бы до июня 2022 года чтобы разрабы допилили все детские косяки.
Энтузиасты которым ничего не страшно, делайте сначала бэкап FBPX, пробуйте обновить образ в наколенной виртуалке, чтобы понять что вас ждет и только потом уже боевой сервер обновляйте.
Что нужно, чтобы обновиться.
- FPBX15
- asterisk не ниже 13
- активированный FBPX
Освободить порт 8090 на астериске если он занят. Upgrade tool использует 8090 порт для отображения процесса обновления в веб интерфейсе.
Процесс обновления можно запустить как из вебморды, так и из консоли.
Порядок обновления из веб-интерфейса:
1. Admin - module admin - Обновляем все модули2. Admin - Backup & Restore - Делаете бэкап и скачиваете себе его на комп на случай если АТС ляжет полностью.
3. Admin - 15 to 16 Upgrade Tool - Проверяете ваш FPBX на готовность к обновлению, если находит модули которые устарели и указывает что стоит сторонний модуль который не поддерживается и его нужно удалить - удаляете через admin - module admin.
4. Admin - 15 to 16 Upgrade Tool - После исправления зависимостей, запускаем обновление, ждем окончание процесса.
Наблюдать за процессом обновления можно и из консоли командой - "less /var/log/pbx/freepbx16-upgrade.log"
Предварительна информация для обновления из консоли:
Делаем бэкап freepbx! Всех модулей которые доступны! Делаем отдельный бэкап БД астериска. Если виртуалка, то снапшот или бэкап виртуалки.
Я столкнулся с проблемой "In RedisCache.php line 135: Function Redis::delete() is deprecated" после обновления до FreePBX 16. Лечить так
Redis::delete is deprecated в 135 строке файла /var/www/html/admin/libraries/Composer/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php
Лечится изменением 135 строки на return $this->redis->del($id) >= 0;
Это изменение лучше сделать до обновления, чтобы процесс прошел гладко.
В официальной документации по обновлению, решение проблемы такое. Нужно выполнить команду в консоли
/usr/sbin/fwconsole ma downloadinstall framework --tag=16.0.10.42
Желательно провести проверку через вебморду(admin-15 to 16 upgrade tool). В консоли не показывает предупреждения из-за чего я потерпел фиаско в первый раз.
Подготавливаемся к обновлению. Обязательный этап.
1. fwconsole ma downloadinstall versionupgrade2. fwconsole versionupgrade --check
Смотрим на какие модули ругается возможно какие то модули устарели и больше не поддерживаются(deprecated/not supported), а так же устанавливаем все обновления.
В моем случае пришлось удалять эти модули:
fwconsole ma uninstall endpointman
fwconsole ma uninstall restapi
fwconsole ma uninstall campon
fwconsole ma uninstall asternic_cdr
Применяем конфиг, обновляем все модули, перечитываем права и еще раз применяем конфиг.
fwconsole reload
fwconsole ma upgradeall
fwconsole chown
fwconsole reload
Запускаем обновление.
fwconsole versionupgrade --upgrade -vvДожидаемся окончания обновления.
Если во время обновления зафейлилось что-то и астериск лег, попробуйте запустить обновление заново.
Для этого перемещаем файл mv /var/run/asterisk/16upgrade.pid /tmp и запускаем заново обновление fwconsole versionupgrade --upgrade -vv
История:
UPD 10.02.2022Очередное неудачное обновление FreePBX до 16 версии. Устранение ошибок.
Сегодня попался еще один сломанный обновлением до FreePBX 16 сервер астериска.Меня попросили устранить последствия.
Вводные данные: запустили обновление все шло хорошо, потом завис yum и обновление завершилось с ошибкой на моменте установки freepbx 16, веб морда не работает, астериск не работает.
Ошибка yum выглядела вот так:

Ключевые ошибки:
failed: Thread died in Berkeley DB libraryDB_RUNRECOVERY: Fatal error, run database recovery
Лечится парой команд:
Бэкапим старые бдmkdir /var/lib/rpm/backup
cp -a /var/lib/rpm/__db* /var/lib/rpm/backup/
Удаляем старые
rm -f /var/lib/rpm/__db.[0-9][0-9]*
Лечим бд
rpm --quiet -qa
rpm –rebuilddb
yum clean all
После этого спокойно запускаем заново обновление.
fwconsole versionupgrade --upgrade -vv
Еще столкнулся с тем, что не мог установиться модуль sysadmin с ошибкой, что не найдена директория /etc/sangoma/
Лечится переустановкой пакета sangoma-pbx16.Yum reinstall sangoma-pbx16 -yЗатем можно спокойно обновлять/устанавливать модуль sysadmin и все от него зависимые модули.
UPD 28.01.2022
Стало меньше проблем с обновлением, но они есть.
Как и раньше порядок:
fwconsole versionupgrade --check
если показывает что модули устарели и их нужно удалить, удаляем до состояния чтобы все было зеленое как на скрине.

fwconsole versionupgrade --upgrade -vv
Процесс занимает продолжительное время, если вдруг разлогинило из консоли, узнать на какой стадии процесс обновления можно зайдя заново на сервак и выполнив команду: less /var/log/pbx/freepbx16-upgrade.log