Установить АСР LANBilling на CentOS 8

  1. Системные требования
  2. Установить дополнительные пакеты
  3. Подготовить сетевые порты
  4. Установить и настроить MySQL-сервер
  5. Установить и настроить веб-сервер
  6. Скачать компоненты АСР LANBilling
  7. Установить LBcore — ядро АСР LANBilling
  8. Настроить ротацию лог-файлов
  9. Установить административный интерфейс 3.x
  10. Активировать лицензию
  11. Создать сетевые агенты и установить их модули
  12. Установить личный кабинет абонента 3.x

Системные требования

Определите, какие версии модулей АСР LANBilling хотите установить, и по таблице совместимости подберите компоненты ОС.

Как правило, требуются следующие компоненты:

  • СУБД MySQL 8.x
  • Веб-сервер Apache
  • PHP 7.x и его библиотеки:
    • libtiff
    • libpng
    • gd
    • soap
    • multibyte strings (mbstring)
    • xml
    • bcmath
    • ghostscript — чтобы генерировать шаблоны в формате pdf
  • Python 3.x

Установить дополнительные пакеты

Для дальнейшей установки и настройки вам потребуются:

  • python3-simplejson — используется некоторыми скриптами. Например, платёжным скриптом банка Тинькофф.

  • dirmngr — служба для управления сетевыми сертификатами.

  • yum-utils — для работы с репозиториями АСР LANBilling и MySQL.

  • atop — аналитическая система, требуется для анализа производительности АСР LANBilling и сервера в целом.

  • logrotate — утилита ротации логов. Она должна быть на каждом сервере, где будут установлены компоненты АСР LANBilling.

  • zstd — архиватор.

  • nano — текстовый редактор.

Чтобы установить дополнительные пакеты, введите команду:

yum install -y epel-release python3-simplejson dirmngr yum-utils atop logrotate zstd nano

Подготовить сетевые порты

  1. Список портов, которые АСР LANBilling использует по умолчанию.
  2. Отключить SELinux.
  3. Настроить порты для исходящих соединений.

Список портов, которые АСР LANBilling использует по умолчанию

Направление Сервер Протокол Номер порта Описание
На вход Сервер, на котором установлены административный интерфейс АСР LANBilling и личный кабинет абонентов HTTP\HTTPS 80 (443) Для доступа к административному интерфейсу и личному кабинету
На вход Сервер LBcore JSON\JSON-SSL 1502 (1503) Для связи LBcore с модулями сетевых агентов. Также к этому порту обращается веб-интерфейс
На вход Сервер LBcore SOAP 34012 Для связи LBcore с личным кабинетом абонента и со старым административным интерфейсом (объявлен deprecated с 2.0.30). Также — для доступа по API
На вход Сервер БД MySQL 3306 Используется, если MySQL находится на отдельном сервере. LBcore и модули агентов должны иметь доступ к этому порту. Обратите внимание: MySQL по умолчанию слушает только 127.0.0.1 (параметр bind)
На выход До сервера lic.lanbilling.ru Лицензирование 34100 во внешнюю сеть Используется, чтобы активировать лицензию
На вход Сервер, на котором установлен модуль LBarcd RADIUS 1812\UDP и 1813\UDP 1812\UDP — для авторизации; 1813\UDP — для аккаунтинга
На вход Сервер, на котором установлен модуль LBucd NetFlow 7223\UDP Для сбора статистики о трафике

Отключить SELinux

Если SELinux включён, выключите его.

  1. Откройте конфигурационный файл:

    nano /etc/selinux/config
    

    ``

  2. Для параметра SELINUX установите значение disabled.

  3. Изменения в файле конфигурации применятся только после того, как вы перезапустите ОС. Чтобы продолжить установку и настройку, не перезапуская ОС, выполните команду:

    setenforce 0
    

    ``

    Если выполнить только setenforce 0, то SELinux выключится, но после перезапуска снова включится.

Настроить порты для исходящих соединений

Ограничьте диапазон выдаваемых портов. Если этого не сделать, могут возникнуть сбои — например, LBcore попытается дважды подключиться к одному порту, и все процессы будут заблокированы.

  1. Откройте файл конфигурации:

    nano /etc/sysctl.conf
    

    ``

  2. Добавьте в него строку:

    net.ipv4.ip_local_port_range = 35000 60999
    

    ``

  3. Также рекомендуем оптимизировать работу памяти сервера. Задайте параметры:

    vm.zone_reclaim_mode = 1
    vm.swappiness = 5
    

    ``

    Подробнее об этих параметрах — в официальной документации Linux Kernel.

  4. Чтобы не перезагружать ОС, можно выполнить команду:

    sysctl net.ipv4.ip_local_port_range='35000 60999' vm.swappiness=5 vm.zone_reclaim_mode=1
    

    ``

Установить и настроить MySQL-сервер

  1. Установить MySQL-сервер.
  2. Настроить MySQL-сервер.
  3. Открыть порт — если MySQL и LBcore будут установлены на разных серверах.
  4. Запустить MySQL-сервер.
  5. Настроить пароль для MySQL.

Установить MySQL-сервер

  1. Подключите репозиторий MySQL.

    rpm -ivh http://repo.mysql.com/mysql80-community-release-el8.rpm
    

    ``

  2. Установите MySQL-сервер и добавьте его в автозагрузку ОС.

    yum install -y mysql-server
    systemctl enable mysqld
    

    ``

Настроить MySQL-сервер

  1. Откройте файл mysql-server.cnf:

    nano /etc/my.cnf.d/mysql-server.cnf
    

    ``

  2. Укажите параметры. Если какие-то параметры в файле уже заданы — сверьте их с описанием, приведённым ниже. Установите те значения, которые вам подходят.

    Обратите внимание: в одной секции не должно быть одного и того же параметра с разными значениями.

    Параметры в секции mysqld:

    character-set-server = utf8 #utf8mb4 пока не поддерживается
    character-sets-dir = /usr/share/mysql/charsets
    skip-character-set-client-handshake
    skip-name-resolve
    innodb_file_per_table = ON
    ssl = 0
    bind-address = 127.0.0.1 #Если Вы планируете подключаться к MySQL с другого хоста, замените на 0.0.0.0
    #For 8.x
    sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    #For 5.7
    #sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
    innodb_stats_on_metadata = 0
    group_concat_max_len = 1000000000
    enforce_gtid_consistency = OFF
    gtid_mode = OFF
    performance_schema = OFF
    explicit_defaults_for_timestamp
    key_buffer_size = 64M
    max_heap_table_size = 128M
    tmp_table_size = 128M
    innodb_buffer_pool_size = 512M
    innodb_buffer_pool_instances = 1
    innodb_log_file_size = 64M
    innodb_log_buffer_size = 8M
    slow_query_log = 1
    innodb_flush_method = O_DIRECT
    innodb-flush-log-at-trx-commit = 2
    

    ``

  3. Выберите, нужно ли включить бинарное логирование.

    • Чтобы выключить, используйте параметр:

      disable-log-bin
      
      
      
    • Чтобы включить, используйте параметр log-bin. Если указать для него значение, он включает бинарное логирование и задаёт общее имя файлов логов на диске. Значение по умолчанию: mysql-bin.

      log-bin = mysql-bin
      
      
      

    Обратите внимание: параметры log-bin и disable-log-bin взаимоисключающие. Если в конфигурации указаны оба, то действует тот, который указан позже.

    Опции для настройки бинарного логирования
  4. В том же файле создайте секцию mysql и добавьте в неё параметр:

    no-auto-rehash
    

    ``

  5. Откройте файл client.cnf:

    nano /etc/my.cnf.d/client.cnf
    

    ``

    В секцию client добавьте параметры:

    default-character-set = utf8
    character-sets-dir = /usr/share/mysql/charsets
    

    ``

В этой инструкции приведены базовые параметры. Они подходят для работы с АСР LANBilling в следующих условиях:

  • небольшой объём БД или установка АСР LANBilling с чистой БД;
  • на сервере доступно от 4 ГБ RAM.

Открыть порт MySQL-сервера

Если LBcore и MySQL будут на одном сервере, то открывать порт не нужно.

Если LBcore будет на другом сервере, откройте порт 3306. Через этот порт ядро будет подключаться к MySQL.

firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload

Запустить MySQL-сервер

Для запуска используйте команду:

systemctl start mysqld

Настроить пароль для MySQL

В MySQL работает плагин validate_password — он не позволяет устанавливать простые пароли. Чтобы отменить его действие, сначала установите новый пароль, затем удалите плагин. После этого можно установить любой пароль, в том числе и пустой.

  1. Найдите пароль root от MySQL в его логе:

    grep "temporary password is generated for" /var/log/mysqld.log
    

    ``

  2. Чтобы изменить пароль, выполните команду:

    mysqladmin --user root --password password 'ваш_пароль_для_root_пользователя_mysql'
    

    ``

  3. Введите пароль, найденный в логе MySQL, и нажмите Enter.

  4. Если хотите установить простой или пустой пароль, удалите плагин validate_password:

    UNINSTALL COMPONENT 'file://component_validate_password';
    

    ``

  5. Задайте новый пароль. В примере — как установить пустой пароль:

    mysqladmin --user root --password password ""
    

    ``

Далее в инструкции предполагается, что установлен пустой пароль.

Установить и настроить веб-сервер

  1. Установить веб-сервер.
  2. Настроить Apache2.
  3. Настроить PHP.
  4. Открыть порты.
  5. Запустить Apache2.

Установить веб-сервер

  1. Установите пакеты:
yum install -y --setopt=install_weak_deps=False httpd php php-soap php-json libtiff libpng php-gd php-mbstring php-xml php-bcmath php-gmp ghostscript
  1. Добавьте веб-сервер в автозагрузку ОС
systemctl enable httpd

Настроить Apache2

  1. Откройте файл httpd.conf:

    nano /etc/httpd/conf/httpd.conf
    

    ``

    Раскомментируйте директиву ServerName. Укажите адрес хоста.

    Закомментируйте строку:

    AddDefaultCharset UTF-8
    

    ``

  2. Откройте файл 00-mpm.conf:

    nano /etc/httpd/conf.modules.d/00-mpm.conf
    

    ``

    Раскомментируйте строку:

    #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
    

    ``

    Закомментируйте строку:

    LoadModule mpm_event_module modules/mod_mpm_event.so
    

    ``

Настроить PHP

Для корректной работы веб-интерфейса рекомендуем выполнить эту настройку.

  1. Откройте файл php.ini:

    nano /etc/php.ini
    

    ``

  2. В файле уже заданы параметры. Раскомментируйте их и приведите к этим значениям:

    date.timezone = Europe/Moscow
    max_execution_time = 3600
    default_socket_timeout = 3600
    max_input_vars = 10000
    memory_limit = 1024M
    session.gc_probability = 0
    

    ``

    В параметре date.timezone укажите свою временную зону. Полный список зон можно посмотреть здесь.

Открыть порты веб-сервера

Если LBcore будет установлен там же, где и веб-сервер, то открывать порты не нужно.

Если LBcore будет на другом сервере, откройте порты:

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Запустить Apache2

Выполните команду:

systemctl start httpd

Скачать компоненты АСР LANBilling

Дистрибутив АСР LANBilling распространяется в виде готовых пакетов для пакетных менеджеров.

Вам потребуются:

  • пакет lbcore сборки 2.0.39 — чтобы установить ядро АСР LANBilling;

  • пакеты lbweb-common и lbweb-admin — чтобы установить административный интерфейс;

  • пакеты lbweb-common и lbweb-client — чтобы установить личный кабинет для абонентов;

  • пакеты для установки модулей сетевых агентов. Конкретный список модулей зависит от того, какие платформы вы будете использовать.

    Платформа Сетевой агент Модуль
    Платформа «интернет», DialUp, авторизация абонентов RADIUS LBarcd
    Платформа «интернет», широкополосный доступ, без авторизации Netflow LBucd
    Телефония LBPhone LBphone
    IP-телефония VoIP LBircd

Как скачать пакеты:

В названии пакета содержатся основные сведения о нём. Рассмотрим на примере lbcore-2.0.37.0-gitb794bf36.el8.x86_64.rpm:

  • lbcore — название модуля;
  • 2.0 — версия релиза;
  • 37 — номер релиза;
  • 0 — порядковый номер прохождения полного тестирования (начиная с 0);
  • 5 — количество изменений с момента релиза (начиная с 1);
  • git261d65ce — номер ревизии модуля;
  • el8.x86_64 — ОС, для которой собран пакет. В данном случае — CentOS 8x x86_64.

Скачать из личного кабинета в Satisfy CRM

  1. В личном кабинете перейдите на вкладку «Загрузки».

  2. Нажмите image в строке с названием пакета.

  3. Перенесите пакет на сервер, где будете устанавливать модуль.

Скачать из репозитория

  1. Найдите ссылку на репозиторий в личном кабинете в Satisfy CRM. У каждого обладателя лицензии своя ссылка на репозиторий. Репозитории hotfix builds содержат еженедельные сборки ядра и модулей сетевых агентов.

  2. Подключите репозиторий с помощью команды:

    yum-config-manager --add-repo <url-ссылка на репозиторий>
    

    ``

  3. Вы можете посмотреть список доступных пакетов. Например, для LBcore:

    yum --enablerepo="lanbilling*" list available --showduplicates lbcore
    

    ``

Установить LBcore

LBcore — модуль ядра АСР LANBilling. В этой инструкции предполагается, что вы устанавливаете MySQL и LBcore на один сервер.

Процесс установки описан исходя из того, что установочный пакет сохранён на сервере в директории /root/.

  1. Убедитесь, что уже установили:

  2. Установите пакет ядра. Пример:

    rpm -ivh /root/lbcore-2.0.37.0-0.95.git261d65ce.el8.x86_64.rpm
    

    ``

  3. Добавьте LBcore в автозагрузку ОС:

    systemctl enable lbcore
    

    ``

  4. Зайдите в MySQL под пользователем root — команда mysql. Если вы задавали пароль — mysql -p%пароль%.

  5. Создайте базу данных LBcore. Укажите сведения о пользователях и настройте доступ АСР LANBilling к БД.

    CREATE DATABASE `billing` DEFAULT CHARSET UTF8;
    CREATE USER IF NOT EXISTS 'billing'@'localhost' IDENTIFIED WITH mysql_native_password BY 'billing';
    GRANT ALL ON `billing`.* TO 'billing'@'localhost';
    CREATE USER IF NOT EXISTS 'billing'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'billing';
    GRANT ALL ON `billing`.* TO 'billing'@'127.0.0.1';
    exit
    

    ``

  6. Создайте структуру БД LBcore и подключите справочник адресов — КЛАДР:

    mysql billing < /usr/local/billing/mysql/create.sql
    mysql billing < /usr/local/billing/mysql/claddr.sql
    

    ``

  7. Откройте файл конфигурации:

    nano /etc/billing.conf
    

    ``

    Убедитесь, что указаны параметры доступа, которые вы задавали при создании БД. Если нет, исправьте их. Данные должны быть в формате dbuser:dbpass@dbhost:dbport/dbname.

    • dbuser и dbpass — логин и пароль администратора.
    • dbhost — IP-адрес сервера.
    • dbport — номер порта.
    • dbname — имя БД.

    Если не указать dbport, будет использоваться порт 3306. Пример для случая, когда LBcore и MySQL установлены на одном сервере и используется порт по умолчанию:

    # DB access parameters
    database = mysql://billing:billing@127.0.0.1/billing
    

    ``

  8. Запустите ядро АСР LANBilling:

    systemctl start lbcore
    

    ``

  9. Чтобы убедиться, что ядро запущено и работает, выполните одну из команд:

    ps ax | grep -i lbcore
    

    ``

    или

    systemctl status lbcore
    

    ``

Настроить ротацию лог-файлов

  1. Убедитесь, что на сервере установлены logrotate и zstd:

    rpm -qa|grep 'logrotate\|zstd'
    

    ``

    Если этих утилит нет, установите их:

    rpm -i https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
    yum install -y logrotate zstd
    

    ``

  1. Лог-файлы по умолчанию находятся в директории /var/log/billing/. Настройте их ротацию одним из двух способов.

    • Способ 1: воспользуйтсь утилитой logrotate. Этот способ подойдёт, если объём логов небольшой. По умолчанию logrotate прописывается в cron.daily и запускается каждый день в 03:01.

      Пример настройки ротации логов находится в файле lbrotate.conf. Скопируйте его в директорию logrotate:

      cp /etc/lanbilling/lbrotate.conf /etc/logrotate.d/
      
      
      
    • Способ 2: вручную добавьте задание в планировщик cron. Этот способ удобен, если за сутки накапливается большой объём логов. Вы сможете выбрать произвольный интервал для ротации — например, каждый час.

      Откройте планировщик с помощью команды crontab -e и добавьте задание:

      0 * * * * root /usr/sbin/logrotate /etc/lanbilling/lbrotate.conf
      

Установить административный интерфейс 3.x

Административный интерфейс — веб-приложение, в котором работает оператор связи. Например, системные администраторы задают в нём настройки сети, а менеджеры оператора создают профили абонентов и следят за списаниями.

Обратите внимание: для первого старта интерфейс нужно установить на том же сервере, что и ядро. По умолчанию LBcore принимает запросы только с localhost или 127.0.0.1. В дальнейшем вы можете развернуть административный интерфейс на другом хосте.

  1. Убедитесь, что уже установили и настроили:

  2. Убедитесь, что скачали пакеты lbweb-common и lbweb-admin. Процесс установки описан исходя из того, что установочные пакеты сохранены на сервере в директории /root/.

  3. Установите пакеты. Вместо X.Y.Z-Z укажите версию релиза:

    rpm -ivh lbweb-common-X.Y.Z-Z.noarch.rpm
    rpm -ivh lbweb-admin-X.Y.Z-Z.noarch.rpm
    

    ``

    Пример:

    rpm -ivh /root/lbweb-admin-3.10.0-1.noarch.rpm
    rpm -ivh /root/lbweb-common-2.21.1-1.noarch.rpm
    

    ``

  4. При установке пакета создаётся пример файла конфигурации. Создайте из него файл конфигурации:

    cp /etc/lanbilling/phpclient/admin/admin.ini.sample /etc/lanbilling/phpclient/admin/admin.ini
    

    ``

  5. Добавьте конфигурацию административного интерфейса АСР LANBilling в настройки веб-сервера:

    cp /etc/lanbilling/phpclient/apache2/lbweb-admin.apache2.sample /etc/httpd/conf.d/lbweb-admin.conf
    

    ``

  6. Перезапустите Apache:

    systemctl restart httpd
    

    ``

Административный интерфейс установлен. Он доступен по адресу http://%IP-адрес-сервера%/lbweb-admin. По умолчанию для входа используется логин admin, без пароля.

Если вы будете работать с административным интерфейсом на том же сервере, где установлено ядро, просто активируйте лицензию.

Если вы будете использовать другой сервер, сначала установите на нём веб-сервер и административный интерфейс. Затем активируйте лицензию.

Активировать лицензию

После покупки АСР LANBilling оператор получает ключ активации — он доступен в личном кабинете Satisfy CRM.

Порядок действий:

  1. Убедитесь, что на сервере LBcore открыт доступ к серверу lic.lanbilling.ru и порт 34100.
  2. В административном интерфейсе укажите название оператора.
  3. Активируйте лицензионный ключ.

Обратите внимание: если вы сначала активируете лицензию, а потом переименуете оператора, понадобится новый ключ.

Создать сетевые агенты и установить их модули

С помощью сетевых агентов АСР LANBilling обменивается данными с операторским оборудованием — это позволяет собирать информацию о трафике и тарифицировать услуги.

Прежде чем устанавливать модули для сетевых агентов, убедитесь, что выполнили обязательные шаги.

  1. Заранее скачали пакеты модулей и перенесли на те серверы, где будете их устанавливать.
  2. Установили MySQL-сервер.
  3. Установили веб-сервер.
  4. Установили модуль ядра — LBcore.
  5. Установили административный интерфейс.
  6. Активировали лицензию.

Порядок установки и настройки зависит от того, какой сетевой агент вам нужен.

Сетевой агент Описание Модуль
RADIUS Для платформы «интернет». Он служит для авторизации абонента и оборудования на сервере, а также для обработки абонентского соединения. Работает с тарифами типа DialUp LBarcd
Netflow Для платформы «интернет». Отвечает за подсчёт трафика, не проводит авторизацию абонентов. Работает с тарифами типа «Выделенная линия» LBucd
LBPhone Для телефонии. С его помощью АСР LANBilling получает от АТС статистическую информацию о звонках в виде cdr-файлов LBphone
VoIP Для IP-телефонии. Обработка звонков происходит по протоколу RADIUS LBircd
«Услуги» Чтобы вести учёт разовых или периодических услуг — к примеру, монтажа оборудования или аренды хостинга Модуль не нужен

Если вы устанавливаете модуль сетевого агента на отдельный сервер (не туда же, где установлен LBcore), настройте на нём ротацию лог-файлов.

Установить личный кабинет абонента 3.x

Личный кабинет — веб-интерфейс для абонентов. Например, в личном кабинете абоненты могут подключать новые услуги или переходить с одного тарифа на другой.

  1. Убедитесь, что уже установили и настроили:

  2. Убедитесь, что скачали пакеты lbweb-common и lbweb-client.

  3. Установите пакеты. Вместо X.Y.Z-Z укажите версию релиза:

    rpm -ivh lbweb-common_X.Y.Z-Z.noarch.rpm
    rpm -ivh lbweb-client_X.Y.Z-Z.noarch.rpm
    

    ``

    Пример:

    rpm -ivh /root/lbweb-common-2.21.1-1.noarch.rpm /root/lbweb-client-3.5.0-1.noarch.rpm
    

    ``

  4. Добавьте конфигурацию личного кабинета в настройки веб-сервера.

    cp /etc/lanbilling/phpclient/apache2/lbweb-client.apache2.sample /etc/httpd/conf.d/lbweb-client.conf
    

    ``

  5. Перезапустите httpd, чтобы применить изменения:

    systemctl restart httpd
    

    ``

Личный кабинет установлен. Он доступен по адресу http://%IP-адрес-сервера%/lbweb-client/. Настройка личного кабинета описана здесь.