Обновление LANBilling: краткая инструкция

Эта инструкция предназначена для обновления LANBilling c версии 2.0.42 и выше.

Если ваша версия LANBilling ниже 2.0.42 — обратитесь в техподдержку «Сетевых Решений».


Внимание: перед обновлением промышленной установки LANBilling:

  • полностью прочтите эту инструкцию, прежде чем приступать к действиям. Если при изучении инструкции у вас возникнут вопросы, обратитесь в техподдержку «Сетевых Решений».
  • выполните тестовое обновление БД ядра или всего окружения. Например, на виртуальной машине.
  • убедитесь, что в системном окружении установлены все пакеты, указанные в руководствах по установке для соответствующей ОС.
  • проверьте совместимость версий LANBilling со сторонним ПО.

Все команды установки пакетов в этой инструкции приведены, исходя из того, что:

  • вы работаете от root,
  • в каталоге есть только необходимые пакеты LANBilling и ничего лишнего. Если в каталогах есть что-либо ещё, команды могут сработать некорректно. Например, 2 разных пакета lbcore в одном каталоге приведут к последовательной установке каждого из них.
  1. Подготовиться к обновлению
  2. Скачать пакеты
  3. Выполнить предварительный файловый бэкап
  4. Обновить систему
  5. Запустить LANBilling после обновления
  6. Проверить работу LANBilling

Подготовиться к обновлению

  1. Проверьте, есть ли нулевые списания в таблицах 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);
    

    ``

  2. Если число записей о нулевых списаниях больше 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
      
      
      
  3. Проверьте, используете ли вы 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 строк, проведите миграцию по инструкции «Заменить категории на услуги в тарифах с типом „Услуги“».

  4. Убедитесь, что на сервере достаточно места. Выберите директорию для бэкапов — они могут быть объёмными.

  5. Создайте каталог, в котором будете работать. В этой инструкции используется /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/
    

    ``

  6. Проверьте, какие пакеты LANBilling у вас установлены.

    • CentOS:

      rpm - qa | grep lb
      
      
      
    • Debian:

      dpkg -l|grep lb
      
      
      
  7. Посмотрите запущенные процессы LANBilling:

    ps faux|grep -i lb
    

    ``

    Некоторые агенты могут быть выключены. Например, в следующих случаях:

    • установлены, но не использовались,
    • выведены из эксплуатации,
    • перенесены на отдельный сервер.

    В этом случае определите, нужны ли вам эти агенты либо их можно удалить.

  8. Проверьте агента 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/
    
    
    

Обновить систему

  1. Выключите сервисы LANBilling.

  2. Сделайте бэкап БД. Пример для БД с названием 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 имеют большой объём. Снимать ли дамп с них — в каждом случае нужно решать по ситуации.

  3. Обновите пакеты.

    cd /var/backups/update_51/packages/
    

    ``

    • CentOS:

      rpm -Uvh lb*
      
      
      
    • Debian:

      dpkg -i lb*
      
      
      
  4. Примените скрипты 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
    

    ``

  5. Примените скрипты 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
    

    ``

  6. Проверьте в БД, что обновление прошло корректно. Информация находится в таблице 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 должно совпадать.

    Если не совпадает — значит, обновление не завершено. Определите и устраните причину, а затем повторно примените скрипты.

  7. Если менялись параметры старых конфигурационных файлов веб-интерфейса, перенесите их в актуальные. При установке новых версий веб-интерфейса система может спросить, какие какие конфигурационные файлы использовать: новые или старые.

    Это происходит из-за того, что в новых пакетах lbweb* в конфигурационные файлы могут быть добавлены новые параметры.

    Используйте актуальные файлы, а параметры из старых файлов перенесите в новые.

  8. Обновите информацию о сервисах в systemd.

    systemctl daemon-reload
    

    ``

Запустить LANBilling после обновления

Можно запустить систему, если при обновлении:

  • не возникло ошибок,
  • все нужные БД обновлены,
  • установлены все пакеты.
  1. Запустите lbcore и агентов.

  2. Перезапустите web-сервер apache2.

  3. Сбросьте кэш браузера перед тем, как открыть веб-интерфейс.

  4. Проверьте лог-файлы LANBilling на наличие ошибок.

Проверить работу LANBilling

  1. Проверьте, корректно ли запускаются сессии на RADIUS и оборудовании.

  2. Убедитесь, что платежи из внешних платёжных систем проходят правильно. В том числе из ВПС, для которых настроена интеграция с личным кабинетом LANBilling.

  3. Если вы используете реестры платежей, проверьте, корректно ли они поводятся.

  4. Убедитесь, что ТВ-платформы правильно обрабатывают включение\отключение учётных записей.

  5. Если используете уведомления, отправьте пробное смс\email, чтобы убедиться, что всё работает верно.