Установить LANBilling на FreeBSD 9

Это устаревшая инструкция. FreeBSD 9 не поддерживается с 27.04.2017.

Cписок поддерживаемых ОС и инструкций по установке смотрите по ссылке.


1. Системные требования к аппаратно-программной части

Для обеспечения функционирования АСР в штатном режиме (с использованием всех функций, предоставляемых ПО) необходима установка и настройка следующих программных компонентов:

Компоненты АСР:

  • пакет LBcore;
  • набор необходимых сетевых агентов.

Компоненты OC:

  • СУБД MySQL

    • 5.1.x — для релизов LANBilling 001 — 014. Начиная с релиза 015, поддержка версии прекращается.
    • 5.5.x — для релизов LANBilling 014 и выше.
    • 5.6.x — для релизов LANBilling 018 и выше.
    • 5.7.x — версия не поддерживается.
  • Веб-сервер (apache) с поддержкой версии PHP в зависимости от номера сборки:

    • 5.3.x — для релизов LANBilling 001 — 019. Начиная с релиза 020, поддержка версии прекращается.
    • 5.4.x — для релизов LANBilling 014 и выше.
    • 5.5.x — для релизов LANBilling 018 и выше.
  • Python 2.6.x или 2.7.x.

Библиотеки PHP:

  • mysql;
  • libjpeg;
  • libpng;
  • gd;
  • iconv;
  • soap;
  • multibyte strings;
  • sockets;
  • ghostscript (требуется для генерации шаблонов в pdf формате);
  • pdftk (библиотека для “склейки” pdf документов в один файл).

Перед началом установки должны быть открыты следующие сетевые порты 80 (443), 1502 (1503), 3306, 34012, 34100 и порты, указанные в файлах конфигурации агентов АСР, а также в настройках агентов АСР в веб-интерфейсе.

2. Установка необходимых для работы LANBilling сервисов

Установка MySQL-сервера

Установку БД MySQL под FreeBSD производится через систему портов стандартным образом:

cd /usr/ports/databases/mysql55-server/
make WITH_CHARSET=utf8
make install clean
/usr/local/bin/mysql_install_db
chown -R mysql /var/db/mysql/

Конфигурация MySQL-сервера

Конфигурационный файл в FreeBSD расположен в /usr/local/etc/my.cnf.

В разделе клиента определяем следующие опции:

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

В разделе сервера добавляем следующие опции:

[mysqld]
character-set-server = utf8
character-sets-dir = /usr/share/mysql/charsets
skip-character-set-client-handshake
skip-name-resolve

innodb_data_home_dir = /var/lib/mysql/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql/
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

tmpdir = /tmp/

Если вы планируете использовать репликации БД на вторичный сервер, то вам так же следует включить опцию бинарного лога log-bin.

Если репликация не планируется, то рекомендуется отключить данную опцию так как она создает существенную нагрузку. Параметры для innodb приведены для примера и указаны с расчетом если вы планируете учитывать трафик объемом 100-2000 Гб/мес., не используя детализации трафика. Если это не ваш случай, то данные параметры необходимо рассчитать самостоятельно исходя из конфигурации вашего сервера и обрабатываемым потоком данных.

Запуск БД MySQL осуществляется соответствующим скриптом запуска из директории /etc/rc.d/init.d/ следующим образом:

/usr/local/etc/rc.d/mysql-server start

Если после установки БД и изменения конфигурационного файла my.cnf она не запускается, и в логе ошибок вы видите записи типа:

[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

Это означает, что некоторые настройки innodb могут быть произведены только до первоначального запуска системы. В этом случае вам необходимо удалить следующие файлы:

rm -rf /var/lib/mysql/*-bin.*
rm -rf /var/lib/mysql/ib_logfile*
rm -f /var/lib/mysql/ibdata1

После этого запустить БД заново, воспользовавшись скриптом запуска, в результате чего структура БД будет вновь создана с новыми параметрами. Для автоматического запуска mysql выполняем команду:

echo 'mysql_enable="YES"'  /etc/rc.conf

Следует обратить внимание на то, что местонахождение сокета mysql.sock различное при различных вариантах установки БД. При установке БД из «исходников» — это /tmp, а при установке через пакетный менеджер — это /var/lib/mysql. В связи с тем, что различные библиотеки компилируются статически с сетевым агентом, а не привязываются динамически, то местонахождение сокета задается собранной статически библиотекой, использующей его в директории /tmp. Соответственно, если после установки БД из пакета сокет находится в директории /var/lib/mysql, то в ряде случаев необходимо сделать «мягкую» ссылку в директории /tmp на /var/lib/mysql/mysql.sock:

ln –s /var/lib/mysql/mysql.sock /tmp/mysql.sock

Установка веб-сервера

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

  • apache;
  • php;
  • gd;
  • php-gd;
  • php-mysql.
cd /usr/ports/www/apache22
make (в опциях отмечаем MySQL)
make install clean

Далее конфигурируем и собираем PHP с необходимыми расширениями:

cd /usr/ports/lang/php5/
make (в опциях отмечаем: Build apache module, Enable zend multibyte support)
make install clean
cd /usr/ports/lang/php5-extensions/
make

В опциях необходимо дополнительно отметить:

GD library support
iconv support
multibyte string support
MySQL database support
SOAP support
sockets support

Собираем и устанавливаем пакет командами:

make install clean

Конфигурация apache2

Отредактируйте основной конфигурационный файл apache2/usr/local/etc/apache22/httpd.conf в соответствии с нижеприведенной инструкцией:

  1. Раскомментировать директиву ServerName.

  2. Добавить директиву AddType application/x-httpd-php .php:

    <IfModule mime_module>
    ...
    AddType application/x-httpd-php .php
    ...
    </IfModule>
    

    ``

  3. В блоке Directory "/usr/local/www/apache22/data" необходимо изменить директиву:

    AllowOverride None на AllowOverride All
    

    ``

  4. Для автоматического запуска службы добавляем в файл /etc/rc.conf строку apache22_enable=”YES”:

    echo 'apache22_enable="YES"'  /etc/rc.conf
    

    ``

Для повышения безопасности при работе с веб-интерфейсом LANBilling целесообразно вместо открытого протокола http использовать соединение по шифрованному каналу (SSL) посредством протокола https. Поддержка SSL в apache обеспечивается модулем mod_ssl.so, поставляемым вместе с основным пакетом.

Конфигурация PHP

Для корректной работы веб-интерфейса рекомендуется установить следующие параметры в файле /usr/local/etc/php.ini.

date.timezone = Europe/Moscow

Данный параметр задается в соответствии с локальным часовым поясом.

max_execution_time = 3600
default_socket_timeout = 3600
memory_limit = 1024M
max_input_vars = 2500

После всех изменений перезапустите apache2:

/usr/local/etc/rc.d/apache22 restart

Установка python-simplejson

Для установки пакета python-simplejson необходимо воспользоваться командой:

pkg install py27-simplejson

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

В процессе эксплуатации может возникнуть ситуация когда, например, модуль ядра АСР совершает попытку дважды подключиться к одному и тому же порту. В результате все процессы будут блокированы.

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

Для того чтобы применить ограничение портов на исходящие соединения необходимо воспользоваться командами:

sysctl net.inet.ip.portrange.first=35000
sysctl net.inet.ip.portrange.last=60999
sysctl net.inet.ip.portrange.randomized=0

3. Установка LANBilling

Дистрибутив LANBilling для ОС FreeBSD поставляется в виде бинарного FreeBSD пакета tgz.

Все пакеты LANBilling определены по одному и тому же правилу, разберем на примере пакета ядра для CentOS:

LBcore-2.0base-006-CentOS6_x86_64-20130521.rpm, где:

  • LBcore — обозначение ядра или клиентов LBarcd, LBucd, LBusbox, LBhotel, LBinet, LBircd, LBtv, LBphone;
  • 0base-006 — версия системы LANBilling;
  • CentOS6_x86_64 — версия и её битность;
  • 20130521 — дата данной сборки.

Начиная со сборки 018 изменился порядок именования дистрибутивов LANBilling 2.0:

lbcore-2.0.18.0-1.el5.x86_64.rpm - пример пакета ядра АСР (релиз), где:

  • lbcore — наименование модуля;
  • 2.0 — версия релиза;
  • 18 — номер релиза;
  • 0 — порядковый номер прохождения полного тестирования (начиная с 0);
  • -1 — версия пакета (означает, что пакет с этой версией модуля собран первый раз)
  • el5.x86_64 — платформа, на которой собран пакет (в данном случае CentOS 5 x64).

lbcore-2.0.18.0-2.20150903git2c17585e.el6.x86_64.rpm - пример пакета ядра АСР (hotfix), где:

  • lbcore — наименование модуля;
  • 2.0 — версия релиза;
  • 18 — номер релиза;
  • 0 — порядковый номер прохождения полного тестирования (начиная с 0);
  • -2 — версия пакета (означает, что пакет с этой версией модуля собран повторно);
  • 20150903 — дата сборки пакета;
  • git2c17585e — номер ревизии модуля;
  • el6.x86_64 — платформа, на которой собран пакет (в данном случае CentOS 6 x64).

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

pkg_add LB*.tgz

В результате установки данных пакетов все запускаемые и сопутствующие файлы будут находиться в:

/usr/local/billing/
/etc/billing.conf*
/usr/local/etc/rc.d/

После установки LBcore необходимо скопировать каталог веб-интерфейса в соответствии с конфигурацией apache:

cp -r /usr/local/billing/phpclient/*  /usr/local/www/apache22/data/

Для работы личного кабинета в папке client2 необходимо дать права на запись для пользователя, под которым запущен apache, директориям:

client2/client/runtime
client2/client/public/assets

Далее, необходимо указать в файле /etc/httpd/conf/httpd.conf для подключения папки в defaultHost через алиас (для apache) следующее:

  • Apache 2.2

    Alias /client/ /var/www/client/client/public/
    <Directory /var/www/client/client/public/>
    	Options FollowSymLinks
    	AllowOverride All
    	Order allow,deny
    	allow from all
    </Directory>
    
    
    
  • Apache 2.4

    Alias /client/ /usr/local/billing/phpclient/client2/client/public/
    <Directory /usr/local/billing/phpclient/client2/client/public/>
    	Options FollowSymLinks
    	AllowOverride All
    	Require all granted
    </Directory>
    
    
    

После этого следует перезапустить httpd.

Личный кабинет будет доступен по ссылке http://SERVER_IP_ADDR/client.

Каждый компонент LANBilling имеет свой конфигурационный файл. Для ядра системы это /etc/billing.conf, для всех сетевых клиентов это файлы /etc/billing.conf.Имя_Клиента, например для клиента RADIUS — /etc/billing.conf.LBarcd.

После установки пакетов необходимо развернуть базу данных.

4. Создание структуры БД LANBilling

Взаимодействие модулей LANBilling 2.0 происходит через базы данных. Всего существуют два режима работы:

  • main-режим — используя основную базу данных;
  • автономный safe-режим — используя отдельную (чаще всего локальную) базу данных.

Для настройки основной БД необходимо на сервере АСР:

  1. Запустит MySQL с правами root-пользователя:

    mysql -u root -p
    

    ``

  2. Создать пустую базу данных billing (как пример) и пользователя с правами администратора:

    CREATE DATABASE billing DEFAULT CHARSET utf8;
    GRANT ALL ON billing.* TO 'billing'@'127.0.0.1' IDENTIFIED BY 'billing';
    GRANT ALL ON billing.* TO 'billing'@'localhost' IDENTIFIED BY 'billing';
    

    ``

  3. Применить скрипты для создания структуры БД billing:

    mysql -u root -p -A billing < /usr/local/billing/mysql/create.sql
    

    ``

  4. В конфигурационном файле /etc/billing.conf прописать доступ к созданной БД в формате mysql://db_login:db_pass@db_ip/db_name;

    #Database address
    database = mysql://billing:billing@127.0.0.1/billing
    

    ``

    Расшифровка:

    • db_login и db_pass — реквизиты доступа созданного пользователя БД;
    • db_ip и db_name — хост сервера (например 127.0.0.1 или localhost), на котором создана БД, и название БД.

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

mysql -u root -p -A billing < /usr/local/billing/mysql/catalog.sql

Для того чтобы загрузить справочник КЛАДР необходимо воспользоваться командой:

mysql -u root -p -A billing < /usr/local/billing/mysql/claddr.sql

5. Первоначальная настройка модуля LBucd (Netflow)

Кабельный агент может работать (хранить статистику) как в основной (main-режим) так и отдельной (safe-режим) базе данных.

При использовании отдельной БД необходимо:

  1. Запусть MySQL с правами root-пользователя:

    mysql -u root -p
    

    ``

  2. Создать пустую базу данных billing_safe (как пример) и пользователя с правами администратора:

    CREATE DATABASE billing_safe DEFAULT CHARSET utf8;
    GRANT ALL ON billing_safe.* TO 'billing'@'127.0.0.1' IDENTIFIED BY 'billing';
    GRANT ALL ON billing_safe.* TO 'billing'@'localhost' IDENTIFIED BY 'billing';
    

    ``

  3. Применить скрипт для создания структуры БД billing_safe:

    • Для сборок 2.0.19 — 2.0.20:

      mysql -u root -p -A billing_safe < /usr/local/billing/mysql/lbucd_safe.sql
      
      
      
    • Для сборки 2.0.21:

      mysql -u root -p -A billing_safe < /usr/local/billing/mysql/lbucd/create.sql
      
      
      
    • В сборках LBucd 2.0.23 от 01.12.2017 и новее скрипты работы со структурой таблиц БД кабельного агента имеют префикс “ucd_”. Таким образом команда для формирования структуры БД будет иметь вид:

      mysql -uroot -p billing_safe < /usr/local/billing/mysql/lbucd/ucd_create.sql
      
      
      
  4. В конфигурационном файле /etc/billing.conf.LBucd прописать следующие параметры:

    • Доступ к созданной БД;

      # Local DB access parameters (for 'safe' mode only)
      dbhost = 127.0.0.1
      dbuser = billing
      dbpass = billing
      dbname = billing
      
      
      асшифровка:
      dbuser и dbpass — реквизиты доступа созданного пользователя БД;
      dbhost и dbname — xoст сервера (например 127.0.0.1 или localhost), на котором создана БД, и название БД billing_safe.
      
      
    • Доступ к ядру АСР в формате login:pass@ip:port:

      # Access to LBcore server
      server = admin@10.140.10.250:1502
      
      
      асшифровка:
      login и pass — реквизиты доступа администратора АСР;
      ip и port — IP-адрес и порт сервера, на котором установлена АСР.
      
      
    • Режим работы модуля LBucd;

      # Agent mode
      # main: detail statistics stored in main DB
      # safe: detail statistics stored in local DB
      type = safe
      
      
      
    • Идентификатор Netflow-агента из административного интерфейса.

      # System id. (Must be unique)
      sysid = 0
      
      
      

image

Пример настройки для работы в автономном (SAFE) режиме:

dbhost = 127.0.0.1
dbuser = billing
dbpass = billing
dbname = billing_safe
server = admin@10.140.10.250:1502
type = safe
sysid = 2

6. Первоначальная настройка модуля LBarcd (RADIUS)

RADIUS-агент работает только с отдельной базой данных (safe-режим). Для настройки необходимо:

  1. Запустить MySQL:

    mysql -u root -p
    

    ``

  2. Создать пустую базу данных radius (как пример) и пользователя с правами администратора:

    CREATE DATABASE radius DEFAULT CHARSET utf8;
    GRANT ALL ON radius.* TO 'billing'@'127.0.0.1' IDENTIFIED BY 'billing';
    GRANT ALL ON radius.* TO 'billing'@'localhost' IDENTIFIED BY 'billing';
    

    ``

  3. Применить скрипты для создания структуры БД radius;

    mysql -u root -p radius < /usr/local/billing/mysql/lbarcd/create.sql
    

    ``

    В сборках LBarcd 2.0.21.1-2.0.23 от 09.10.2017 скрипты работы со структурой таблиц БД RADIUS-агента имеют префикс “rad_”. Таким образом команда для формирования структуры БД будет иметь вид:

    mysql -uroot -p radius < /usr/local/billing/mysql/lbarcd/rad_create.sql
    

    ``

  4. В конфигурационном файле /etc/billing.conf.LBarcd прописать следующие параметры.

    • Доступ к созданной БД в формате mysql://db_login:db_pass@db_ip/db_name:

      #Database address
      database = mysql://billing:billing@127.0.0.1/radius
      
      
      асшифровка:
      db_login и db_pass — реквизиты доступа созданного пользователя БД;
      db_ip и db_name — IP-адрес сервера (например 127.0.0.1 или localhost), на котором создана БД, и название БД RADIUS.
      
      
    • Доступ к ядру АСР в формате login:pass@ip:port:

      # Access to LBcore server
      server = admin@10.140.10.250:1502
      
      
      асшифровка:
      login и pass — реквизиты доступа администратора АСР;
      ip и port — IP-адрес и порт сервера, на котором установлена АСР.
      
      
    • Идентификатор RADIUS-агента из административного интерфейса:

      # Agent ID. (Must be unique)
      sysid = 1
      
      
      

image

Пример настройки агента LBarcd для работы в автономном (SAFE) режиме.

database = mysql://billing:billing@127.0.0.1/radius
server = admin@10.140.10.250:1502
sysid = 1

RADIUS-агент может работать на том же сервере что и ядро АСР, либо отдельно — на другом сервере. После создания пустой БД для RADIUS-агента, при первом старте, происходит синхронизация структуры БД и необходимых данных из основной БД, с которой работает ядро АСР.

Версии СУБД (MySQL), на которых настраивются БД для АСР и RADIUS-агента, должны совпадать.

В зависимости от объема данных синхронизация может занимать продолжительное время (до 20 мин). Об успешности синхронизации можно судить по логам (файл /usr/local/billing/lbarcd.log) работы агента в режиме debug. Журналирование событий в режиме debug требует большого количества дискового пространства и рекомендуется только при возникновении ошибок.

Для настройки в конфигурационном файле /etc/billing.conf.LBarcd необходимо изменить параметр log_level:

# Log verbosity level: error, warning, info, verbose, debug
log_level = debug

При успешном завершении синхронизации в логах будут сообщения вида “Synchronize with LBserver complete”.

7. Активация лицензии

Заказчик, после приобретения АСР, получает лицензионный ключ, который всегда доступен в системе Helpdesk. Доступ к системе Helpdesk осуществляется с адреса client.lanbilling.ru.

После получения Лицензионного ключа, для запуска модулей АСР требуется провести активацию лицензии через сервер активации, расположенный в домене lanbilling.ru. Для этого необходимо: войти в административный веб-интерфейс системы под атрибутами администратора и в разделе “Опции” выбрать пункт “Общие”, раздел “Активация”, “Получить лицензионный ключ”. Затем ввести ключ активации и название компании в соответствующие разделы формы активации лицензии и нажать кнопку “Активировать”.

Название компании должно совпадать с названием компании, определенным в разделе “Опции” пункт меню “Реквизиты оператора” поле “Имя компании с формой собственности:”.

image

При положительном ответе сервера активации продукт готов к эксплуатации.

Существующие клиенты, уже имеющие регистрацию в LANBilling HelpDesk, при обновлении АСР до версии 2.0 размещают запрос на получение лицензии с темой “Лицензионный ключ для версии 2.0”, после чего получают Лицензионный ключ указанный в системе HelpDesk.

Лицензия содержит информацию, по которой определяется ряд рабочих параметров АСР: агентская схема телефонии, интеграция с Fidelio, модуль Email Connector, модуль инвентаризации, время действия, максимальное количество пользователей АСР и пр. При изменении любых из указанных параметров, связанных с реконфигурацией АСР, требуется повторное проведение активации нового ключа, содержащего скорректированные параметры.

Механизм активации учитывает возможность назначения тех или иных параметров функционирования АСР в процессе активации. В том случае, если набор ключевых параметров изменяется после проведения активации АСР, модуль контроля лицензионности копии вернет эти параметры к первоначальному значению.

8. Запуск системы

Запуск всех модулей осуществляется путем старта соответствующих скриптов запуска:

/usr/local/etc/rc.d/mysql-server start
/usr/local/etc/rc.d/apache22 start
/usr/local/etc/rc.d/LBcore.init.sh start
/usr/local/etc/rc.d/LBucd.init.sh start
/usr/local/etc/rc.d/LBarcd.init.sh start
/usr/local/etc/rc.d/LBtcd.init.sh start

После запуска этих компонентов, в списке процессов должны присутствовать все установленные модули. Проконтролировать это можно командой: 

ps ax | grep LB

По каждому из агентов и серверу системы LANBilling ведутся логи, находящиеся по умолчанию в директории /usr/local/billing и имеющие одноименные названия с запускаемыми файлами.

На этом этапе установка серверной части системы завершена, и, если все сконфигурировано правильно, то, запустив браузер Internet Explorer или Firefox и набрав в адресной строке IP-адрес веб-сервера и затем через слеш admin (например, так: http://SERVER_IP_ADDR/admin, где SERVER_IP_ADDR — ip-адрес вашего сервера), в окне браузера отобразится окно авторизации к административному интерфейсу управления LANBilling. По умолчанию доступ осуществляется под логином: admin и не заданным паролем.

В случае успешной установки apache с SSL при наборе в браузере https://SERVER_IP_ADDR/admin появится окно с информацией о сертификате, после подтверждения, которого пользователем отобразится административный веб-интерфейс.

Важным условием запуска системы является тот факт, что на момент создания сетевых агентов должна быть осуществлена физическая связь между сетевыми агентами и центральным хранилищем. А также между php-интерфейсом, сервером LBcore и центральной базы данных. Сервер LBcore и веб-интерфейс должны быть установлены на одной машине.

По умолчанию, в /etc/billing.conf отключен запуск всех внешних скриптов. Для настройки запуска скриптов по событиям установки/снятия блокировки и др. необходимо раскоментировать соответствующую скрипту запись в billing.conf и поместить скрипт с указанным именем в /usr/local/billing. Примеры скриптов находятся в /usr/local/billing/scripts. При этом, в случае обновления АСР, обновляются скипты только в папке scripts, остальные скрипты, скопированные в /usr/local/billing, остаются нетронутыми.

Мы преднамеренно не предоставляем программы, автоматизирующие процесс установки, в виду того, что в процессе установки пакетов, часто возникают различные ошибки, с которыми логика инсталлятора не в состоянии справиться, кроме того, большинство администраторов предпочитают контролировать все модификации системы, которые происходят в процессе установки нового ПО, такого как, например, LANBilling.