Эта инструкция предназначена для обновления LANBilling c версии 2.0.42 и выше.
Если ваша версия LANBilling ниже 2.0.42 — обратитесь в техподдержку «Сетевых Решений».
Внимание: перед обновлением промышленной установки LANBilling:
Все команды установки пакетов в этой инструкции приведены, исходя из того, что:
Проверьте, есть ли нулевые списания в таблицах rentcharge
, charges
, usbox_charges
.
select min(period), max(period), count(*) from rentcharge where amount =0 and period<date_format(now(), '%Y-%m-01') group by year(period);
select min(period), max(period), count(*) from charges where amount =0 and period<date_format(now(), '%Y-%m-01') group by year(period);
select min(period), max(period), count(*) from usbox_charge where amount =0 and period<date_format(now(), '%Y-%m-01') group by year(period);
``
Если число записей о нулевых списаниях больше 100 тысяч, очистите их. Это значительно ускорит обновление БД. Длительность очистки напрямую зависит от количества записей.
если ваша версия LANBilling 2.0.48 и выше — примените процедуру из поставки:
mysql -uroot -p billing < /usr/local/billing/mysql/tools/clear_extra_data.sql
call clear_all_zero_charges(1);
если ваша версия LANBilling 2.0.47 и ниже — выполните действия вручную. При выполнении ручной очистки рекомендуем воспользоваться утилитой screen.
while true; do mysql -uroot -p billing -e "select now();SET @LB_DISABLE_TRIGGERS = 1; delete from rentcharge where amount=0 and period<DATE_FORMAT(now(), '%Y-%m-01')limit 10000;SET @LB_DISABLE_TRIGGERS = 0;"; sleep 1; done
while true; do mysql -uroot -p billing -e "select now();SET @LB_DISABLE_TRIGGERS = 1; delete from charges where amount=0 and period<DATE_FORMAT(now(), '%Y-%m-01')limit 10000;SET @LB_DISABLE_TRIGGERS = 0;"; sleep 1; done
while true; do mysql -uroot -p billing -e "select now();SET @LB_DISABLE_TRIGGERS = 1; delete from usbox_charge where amount=0 and period<DATE_FORMAT(now(), '%Y-%m-01')limit 10000;SET @LB_DISABLE_TRIGGERS = 0;"; sleep 1; done
Проверьте, используете ли вы USBOX-услуги. Выполните в консоли MySQL два запроса:
select t.descr,c.descr from categories c join tarifs t using(tar_id) where t.archive=0 and t.type=5 and c.cat_idx<>0 and c.archive=0 and t.used=1 limit 10;
select * from usbox_services where timeto>now() limit 10;
``
Если хотя бы один из запросов вернул 0 строк, проведите миграцию по инструкции «Заменить категории на услуги в тарифах с типом „Услуги“».
Убедитесь, что на сервере достаточно места. Выберите директорию для бэкапов — они могут быть объёмными.
Создайте каталог, в котором будете работать. В этой инструкции используется /var/backups/update_51
(для примера обновления до версии 2.0.51).
Общий каталог:
mkdir /var/backups/update_51/
``
Каталог для лог-файлов обновления:
mkdir /var/backups/update_51/update_logs/
``
Каталог для бэкапов БД:
mkdir /var/backups/update_51/backup/
``
Каталог для новых пакетов:
mkdir /var/backups/update_51/packages/
``
Каталог для бэкапов конфигурационных файлов:
mkdir /var/backups/update_51/old_config/
``
Проверьте, какие пакеты LANBilling у вас установлены.
CentOS:
rpm - qa | grep lb
Debian:
dpkg -l|grep lb
Посмотрите запущенные процессы LANBilling:
ps faux|grep -i lb
``
Некоторые агенты могут быть выключены. Например, в следующих случаях:
В этом случае определите, нужны ли вам эти агенты либо их можно удалить.
Проверьте агента LBucd — у него может быть отдельная БД для статистики. Выполните команду:
cat /etc/billing.conf.LBucd | grep -a 'database\|type'
``
Если вы используете несколько агентов LBucd, проверьте файлы конфигурации каждого из них.
Обратите внимание на значение поля type
:
main
— это значит, что LBucd использует БД ядра, статистика пишется в БД из поля database
. Дополнительные манипуляцие не понадобятся.
safe
— это значит, что у LBucd есть отдельная БД, статистика пишется в БД из поля stat_database
. Потребуется дополнительно обновить БД агента LBucd.
После того как вы определились, какие процессы нужны и какие пакеты будете обновлять — скачайте свежие дистрибутивы в папку ./update/packages
.
Если вам предоставили ссылки — используйте, например, wget ссылка
.
Если вы скачали пакеты из Satisfy CRM — перенесите их на сервер. К примеру, с помощью mc
, scp
, rsync
или других доступных вариантов.
Сделайте бэкап файлов, которые могли быть изменены относительно базовой установки LANBilling.
Шаблоны документов и отчётов. Если менялись стандартные шаблоны из поставки LANBilling или вы используете собственные шаблоны (написанные самостоятельно либо нами по вашему запросу), скопируйте файлы шаблонов в каталог для бэкапов:
cp -r /usr/local/billing/templates /var/backups/update_51/old_config/
Настройки личного кабинета.
cp -r /etc/lanbilling/phpclient/client /var/backups/update_51/old_config/
Скрипты платёжных систем.
CentOS:
cp -r /var/www/cgi-bin /var/backups/update_51/old_config/
Debian:
cp -r /usr/lib/cgi-bin /var/backups/update_51/old_config/
Настройки рассылок.
cp -r /usr/local/billing/plugins /var/backups/update_51/old_config/
Выключите сервисы LANBilling.
Сделайте бэкап БД. Пример для БД с названием billing
:
mysqldump -u root -R --single-transaction billing | zstd -v > /var/backups/update_51/backup/billing_`date +%F_%H-%M-%S`.sql.zst
``
Если вы используете агент LBarcd, с его БД также рекомендуем снять дамп, заменив название файла — например, префикс billing
на radius
.
Для статистики LBucd может использоваться отдельная БД. Зачастую такие safe-базы LBucd имеют большой объём. Снимать ли дамп с них — в каждом случае нужно решать по ситуации.
Обновите пакеты.
cd /var/backups/update_51/packages/
``
CentOS:
rpm -Uvh lb*
Debian:
dpkg -i lb*
Примените скрипты update_pre.sql. Примените к используемым базам данных соответствующие скрипты предварительного обновления структуры таблиц.
БД LBcore: /usr/local/billing/mysql/update_pre.sql
БД LBarcd: /usr/local/billing/mysql/lbarcd/rad_update_pre.sql
БД LBucd (если используется safe-БД): /usr/local/billing/mysql/lbucd/ucd_update_pre.sql
После выполнения каждой команды проверьте получившийся лог-файл на наличие ошибок или предупреждений:
mysql -uroot -p --show-warnings billing < /usr/local/billing/mysql/update_pre.sql > /var/backups/update_51/update_logs/billing_update_pre_`date +%F_%H-%M-%S`.log 2>&1
``
Примените скрипты update.sql. Примените к базам данных скрипты основного обновления структуры таблиц.
После выполнения каждой команды проверьте получившийся лог-файл на наличие ошибок или предупреждений.
mysql -uroot -p --show-warnings billing < /usr/local/billing/mysql/update.sql> /var/backups/update_51/update_logs/billing_update_`date +%F_%H-%M-%S`.log 2>&1
``
Проверьте в БД, что обновление прошло корректно. Информация находится в таблице db_options
.
select name, value from db_options;
+--------------------+-------------------+
| name | value |
+--------------------+-------------------+
| project_name | LBcore |
| update_pre_version | 2.0-51.0-20250606 |
| version | 2.0-51.0-20250606 |
| version_build | 2.0 |
| version_build_date | 20250606 |
| version_build_name | 51.0 |
| version_build_rev | 1a2be416 |
+--------------------+-------------------+
``
Содержимое полей value
у update_pre_version
и version
должно совпадать.
Если не совпадает — значит, обновление не завершено. Определите и устраните причину, а затем повторно примените скрипты.
Если менялись параметры старых конфигурационных файлов веб-интерфейса, перенесите их в актуальные. При установке новых версий веб-интерфейса система может спросить, какие какие конфигурационные файлы использовать: новые или старые.
Это происходит из-за того, что в новых пакетах lbweb*
в конфигурационные файлы могут быть добавлены новые параметры.
Используйте актуальные файлы, а параметры из старых файлов перенесите в новые.
Обновите информацию о сервисах в systemd.
systemctl daemon-reload
``
Можно запустить систему, если при обновлении:
Запустите lbcore и агентов.
Перезапустите web-сервер apache2.
Сбросьте кэш браузера перед тем, как открыть веб-интерфейс.
Проверьте лог-файлы LANBilling на наличие ошибок.
Проверьте, корректно ли запускаются сессии на RADIUS и оборудовании.
Убедитесь, что платежи из внешних платёжных систем проходят правильно. В том числе из ВПС, для которых настроена интеграция с личным кабинетом LANBilling.
Если вы используете реестры платежей, проверьте, корректно ли они поводятся.
Убедитесь, что ТВ-платформы правильно обрабатывают включение\отключение учётных записей.
Если используете уведомления, отправьте пробное смс\email, чтобы убедиться, что всё работает верно.
Есть вопросы по документации? Пожалуйста, напишите их