Определите, какие версии модулей LANBilling хотите установить, и по таблице совместимости подберите компоненты ОС.
Как правило, требуются следующие компоненты:
MySQL 5.7.x
(ссылка на установку)Apache
PHP 8.x
и его библиотеки: (ссылка на установку)
soap
gd
iconv
mbstring
sockets
bcmath
mysqli
curl
ghostscript
— чтобы генерировать шаблоны в формате pdfpdftk
— чтобы «склеивать» pdf-документы в один файлPython 3.x
OpenSSL
Вам потребуются:
python3-simplejson
и python3-requests
— для некоторых скриптов платёжных систем. Для установки требуется Python 3.8. Чтобы узнать актуальное название библиотеки, воспользуйтесь командой:
pkg search simplejson
pkg search "py.*requests"
p5-IO-SessionData
и p5-SOAP-Lite
— для cgi-скриптов платёжных систем.
logrotate
— утилита ротации логов. Она должна быть на каждом сервере, где будут установлены компоненты LANBilling.
dirmngr
— служба для управления сетевыми сертификатами.
zstd
— архиватор.
nano
— текстовый редактор.
wget
— программа для загрузки файлов.
Чтобы установить дополнительные пакеты, введите команду:
pkg install -y py39-simplejson py39-requests p5-IO-SessionData p5-SOAP-Lite logrotate dirmngr zstd nano wget
Направление | Сервер | Протокол | Номер порта | Описание |
---|---|---|---|---|
На вход | Сервер, на котором установлены lbweb-admin и lbweb-client | HTTP\HTTPS | 80 (443) | Доступ к административному интерфейсу и личному кабинету |
На вход | Сервер LBcore | JSON\JSON-SSL | 1502 (1503) | Связь LBcore с модулями агентов и административным интерфейсом |
На вход | Сервер LBcore | SOAP | 34012 | Связь LBcore с личным кабинетом и доступ по API |
На вход | Сервер БД | MySQL | 3306 | Используется, если MySQL находится на отдельном сервере. LBcore и модули агентов должны иметь доступ к этому порту. Обратите внимание: MySQL по умолчанию прослушивает только 127.0.0.1 (параметр bind) |
На вход | Сервер, на котором установлен модуль LBarcd | RADIUS | 1812\UDP и 1813\UDP | 1812\UDP — для авторизации; 1813\UDP — для аккаунтинга |
На вход | Сервер, на котором установлен модуль LBucd | NetFlow | 7223\UDP | Сбор статистики о трафике |
На выход | До сервера lic.lanbilling.ru | Лицензирование | 34100 во внешнюю сеть | Активация лицензионного ключа |
На выход | До серверов сервиса DaData | HTTP\HTTPS | 80 (443) | Заполнение данных пользователя по ИНН, подсказки для полей «БИК» и «Название банка» |
Ограничьте диапазон выдаваемых портов. Если этого не сделать, могут возникнуть сбои — например, LBcore попытается дважды подключиться к одному порту, и все процессы будут заблокированы.
Выполните команды:
sysctl net.inet.ip.portrange.first=35000
sysctl net.inet.ip.portrange.last=60999
sysctl net.inet.ip.portrange.randomized=0
``
Чтобы настройки не сбились после перезагрузки, добавьте их в файл sysctl.conf
. Откройте файл:
nano /etc/sysctl.conf
``
Добавьте в него строки с диапазонами портов:
sysctl net.inet.ip.portrange.first=35000
sysctl net.inet.ip.portrange.last=60999
sysctl net.inet.ip.portrange.randomized=0
``
Выполните команду:
pkg install -y mysql80-server
Откройте файл my.cnf
:
nano /usr/local/etc/mysql/my.cnf
``
Конфигурационный файл может быть не пустым. В этом случае обратите внимание на 4 параметра:
lower_case_table_names
— установите значение «0». Этот параметр приводит имена таблиц к нижнему регистру. Если его не выключить, возникнут проблемы при обновлении таблиц.key_buffer_size
— рекомендуем «64M».innodb_buffer_pool_size
— рекомендуем «512M».innodb_flush_method
— убедитесь, что установлено значение «O_DIRECT».Пример конфигурации:
[mysqld]
lower_case_table_names = 0
collation-server = utf8_general_ci
character-set-server = utf8
default-authentication-plugin = mysql_native_password
character-sets-dir = /usr/share/mysql/charsets
skip-character-set-client-handshake
skip-name-resolve
innodb_file_per_table = ON
ssl = 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 #Не нужно изменять без существенной необходимости
slow_query_log = 1
innodb_flush_method=O_DIRECT
innodb-flush-log-at-trx-commit = 2
disable-log-bin
``
В стандартной конфигурации бинарное логирование выключено — параметр disable-log-bin
.
Чтобы включить бинарное логирование, удалите эту строку и добавьте два параметра: log-bin
и log_bin_trust_function_creators
.
#disable-log-bin
log-bin = mysql-bin
log_bin_trust_function_creators = 1
Добавьте MySQL в автозагрузку:
sysrc mysql_enable=yes
``
Для запуска используйте команду:
service mysql-server start
``
Все дальнейшие действия будут выполняться от имени пользователя root. Если хотите задать свой пароль, введите команду:
mysqladmin -p password
``
В строке Enter password нажмите Enter, так как при установке MySQL был установлен пустой пароль.
В строке New password введите новый пароль или нажмите Enter, чтобы оставить пароль пустым.
В строке Confirm new password ещё раз введите новый пароль или снова нажмите Enter, чтобы оставить его пустым.
Установите SSL:
pkg install -y openssl
``
Установите Apache2:
pkg install -y apache24
``
Добавьте Apache2 в автозагрузку:
sysrc apache24_enable=yes
``
Установите PHP:
pkg install -y php82 mod_php82 php82-extensions php82-soap php82-gd php82-iconv php82-mbstring php82-sockets php82-bcmath php82-mysqli php82-curl ghostscript10 pdftk
``
Откройте файл httpd.conf
:
nano /usr/local/etc/apache24/httpd.conf
``
Найдите разделы, перечисленные ниже. Убедитесь, что в них есть указанные строки. Если нет, добавьте или измените их.
<IfModule mime_module>
AddType application/x-httpd-php .php
<IfModule dir_module>
DirectoryIndex index.html index.php
<Directory "/usr/local/www/apache24/data">
AllowOverride All
``
Скопируйте файл с настройками:
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
``
Откройте файл php.ini
:
nano /usr/local/etc/php.ini
``
В файле уже заданы параметры. Раскомментируйте их и приведите к этим значениям:
date.timezone = Europe/Moscow
max_execution_time = 3600
default_socket_timeout = 3600
max_input_vars = 10000
memory_limit = 1024M
``
В параметре date.timezone
укажите свою временную зону. Полный список зон можно посмотреть здесь.
После всех изменений перезапустите веб-сервер — введите команду:
service apache24 restart
Дистрибутив LANBilling для FreeBSD 13 распространяется в виде бинарных pkg-пакетов.
Вам потребуются:
пакет LBcore сборки 2.0.48 — чтобы установить ядро LANBilling;
пакеты lbweb-common и lbweb-admin — чтобы установить административный интерфейс;
пакеты lbweb-common и lbweb-client — чтобы установить личный кабинет для абонентов;
установочные пакеты для модулей агентов — например, LBucd для Netflow и LBarcd для RADIUS. Конкретный список модулей зависит от того, какие платформы вы будете использовать.
Платформа | Агент | Модуль |
---|---|---|
Платформа «интернет», DialUp, авторизация абонентов | RADIUS | LBarcd |
Платформа «интернет», широкополосный доступ, без авторизации | Netflow | LBucd |
Телефония | LBphone | LBphone |
IP-телефония | VoIP | LBircd |
В названии пакета содержатся основные сведения о нём. Рассмотрим на примере
Скачайте пакеты из личного кабинета в Satisfy CRM.
В личном кабинете перейдите на вкладку «Загрузки».
Нажмите в строке с названием пакета.
Перенесите пакет на сервер, где будете устанавливать модуль.
LBcore — модуль ядра LANBilling. В этой инструкции предполагается, что вы устанавливаете MySQL и LBcore на один сервер.
Убедитесь, что уже установили:
Установите пакет ядра. Пример:
pkg add lbcore-2.0.48.0_7.git34a767b5.freebsd13.amd64.pkg
``
После установки пакета создаётся образец файла конфигурации. Создайте из него рабочий файл конфигурации:
cp /etc/billing.conf.sample /etc/billing.conf
``
Зайдите в MySQL под пользователем root — команда mysql
. Если вы задавали пароль — mysql -p%пароль%
.
Создайте пустую базу данных и предоставьте пользователю права администратора:
CREATE DATABASE billing DEFAULT CHARSET utf8;
CREATE USER IF NOT EXISTS 'billing'@'localhost' IDENTIFIED WITH mysql_native_password BY 'billing';
CREATE USER IF NOT EXISTS 'billing'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'billing';
GRANT ALL ON `billing`.* TO 'billing'@'localhost';
GRANT ALL ON `billing`.* TO 'billing'@'127.0.0.1';
exit
``
Разрешённые символы для логинов, паролей и названия БД:
Создайте структуру БД с помощью скрипта create.sql:
mysql billing < /usr/local/billing/mysql/create.sql
``
Откройте файл billing.conf:
nano /etc/billing.conf
``
Убедитесь, что указаны параметры доступа, которые вы задавали при создании БД. Если нет, исправьте их. Данные должны быть в формате mysql://dbuser:dbpass@dbhost:dbport/dbname.
Если не указать dbport, будет использоваться порт 3306. Пример для случая, когда LBcore и MySQL установлены на одном сервере и используется порт по умолчанию:
# DB access parameters
database = mysql://billing:billing@127.0.0.1/billing
``
Загрузите каталог телефонных кодов, если будете использовать платформу «телефония»:
mysql -u root -p -A billing < /usr/local/billing/mysql/catalog.sql
``
Загрузите справочник адресов — КЛАДР:
mysql -u root -p -A billing < /usr/local/billing/mysql/claddr.sql
``
Добавьте ядро в автозагрузку:
sysrc lbcore_enable=yes
``
Запустите модуль ядра:
service lbcore start
``
Убедитесь, что на сервере установлены logrotate
и zstd
:
pkg info logrotate
pkg info zstd
``
Если этих утилит нет, установите их:
pkg install logrotate zstd
``
Лог-файлы по умолчанию находятся в директории /var/log/billing/
. Настройте их ротацию одним из двух способов.
Способ 1: воспользуйтесь утилитой logrotate. Этот способ подойдёт, если объём логов небольшой. По умолчанию logrotate прописывается в cron.daily и запускается каждый день в 03:01.
Пример настройки ротации логов находится в файле lbrotate.conf
. Скопируйте его в директорию /logrotate/
:
cp /etc/lanbilling/lbrotate.conf /usr/local/etc/logrotate.d/lbrotate.conf
Способ 2: вручную добавьте задание в планировщик cron. Этот способ удобен, если за сутки накапливается большой объём логов. Вы сможете выбрать произвольный интервал для ротации — например, каждый час.
Добавьте в файл /etc/crontab
строку-задание:
0 * * * * root /usr/local/sbin/logrotate /etc/lanbilling/lbrotate.conf
Административный интерфейс — веб-приложение, в котором работает оператор связи. Например, системные администраторы задают в нём настройки сети, а менеджеры оператора создают профили абонентов и следят за списаниями.
Обратите внимание: для первого старта интерфейс нужно установить на том же сервере, что и ядро. По умолчанию LBcore принимает запросы только с localhost или 127.0.0.1. В дальнейшем вы можете развернуть административный интерфейс на другом хосте.
Убедитесь, что уже установили и настроили:
Убедитесь, что скачали пакеты lbweb-common и lbweb-admin. Процесс установки описан исходя из того, что они сохранены на сервере в директории /root/
.
Установите пакеты lbweb-common и lbweb-admin. Пример:
pkg add /root/lbweb-common-2.21.1_1.202204140013git532675b86729.txz
pkg add /root/lbweb-admin-3.45.0_1.202302060901git90726f1f16e6.txz
``
При установке пакета создаётся пример файла конфигурации. Создайте из него файл конфигурации:
cp /usr/local/etc/lanbilling/phpclient/admin/admin.ini.sample /usr/local/etc/lanbilling/phpclient/admin/admin.ini
``
Сериализуйте файл конфигурации:
/usr/local/sbin/lbwebcfg -y admin /usr/local/etc/lanbilling/phpclient/admin/
``
Скопируйте файлы конфигурации веб-сервера:
cp /usr/local/etc/lanbilling/phpclient/apache2/lbweb-admin.apache2.sample /usr/local/etc/apache24/Includes/lbweb-admin.conf
``
Перезапустите веб-сервер, чтобы применить настройки:
service apache24 restart
``
Административный интерфейс установлен. Он доступен по адресу http://%IP-адрес-сервера%/lbweb-admin. По умолчанию для входа используется логин admin, без пароля.
Если вы будете работать с административным интерфейсом на том же сервере, где установлено ядро, просто активируйте лицензионный ключ.
Если вы будете использовать другой сервер, сначала установите на нём веб-сервер и административный интерфейс. Затем активируйте лицензионный ключ.
После покупки LANBilling оператор получает ключ активации — он доступен в личном кабинете Satisfy CRM.
Порядок действий:
Убедитесь, что на сервере LBcore открыт доступ к серверу lic.lanbilling.ru и порт 34100.
Авторизуйтесь в административном интерфейсе. Для самой первой авторизации пароль не нужен — введите логин admin и нажмите «Войти».
В административном интерфейсе укажите название оператора.
Активируйте лицензионный ключ. Обратите внимание: если вы сначала активируете ключ, а потом переименуете оператора — понадобится новый ключ.
С помощью агентов LANBilling обменивается данными с операторским оборудованием — это позволяет собирать информацию о трафике и тарифицировать услуги.
Прежде чем устанавливать модули для агентов, убедитесь, что выполнили обязательные шаги.
Дальнейшие действия зависят от того, какой агент вам нужен.
Агент | Описание | Модуль |
---|---|---|
RADIUS | Для платформы «интернет». Он служит для авторизации абонента и оборудования на сервере, а также для обработки абонентского соединения | LBarcd |
Netflow | Для платформы «интернет». Отвечает за подсчёт трафика, не проводит авторизацию абонентов | LBucd |
LBphone | Для телефонии. С его помощью LANBilling получает от АТС статистическую информацию о звонках в виде CDR-файлов | LBphone |
VoIP | Для IP-телефонии. Обработка звонков происходит по протоколу RADIUS | LBircd |
Если вы устанавливаете модуль агента на отдельный сервер (не туда же, где установлен LBcore), настройте на этом сервере ротацию лог-файлов.
Личный кабинет — веб-интерфейс для абонентов. Например, в личном кабинете абоненты могут подключать новые услуги или переходить с одного тарифа на другой.
Убедитесь, что уже установили и настроили:
Если вы устанавливаете личный кабинет на том же сервере, что и административный интерфейс, вам потребуется только пакет lbweb-client. Если хотите использовать другой сервер, скачайте и установите lbweb-common и lbweb-client. Пример:
pkg add /root/lbweb-common-2.21.1_1.202204140013git532675b86729.txz
pkg add /root/lbweb-client-3.45.0_1.202302060908git5a8825efcf88.txz
``
Добавьте конфигурацию личного кабинета в настройки веб-сервера:
cp /usr/local/etc/lanbilling/phpclient/apache2/lbweb-client.apache2.sample /usr/local/etc/apache24/Includes/lbweb-client.conf
``
Перезапустите веб-сервер:
service apache24 restart
``
Личный кабинет установлен. Он доступен по адресу http://%IP-адрес-сервера%/lbweb-client/. Настройка личного кабинета описана здесь.
Есть вопросы по документации? Пожалуйста, напишите их