Существующая СУБД

Перед началом установки необходимо подготовить сервер c СУБД.

  • Настроить/Отключить Firewall

  • Запустить СУБД на IP адресе

  • Создать в СУБД пользователя с правами root

Запуск СУБД на IP адресе

Для запуска СУБД на определенном IP, необходимо в конфигурации в разде [mysqld] добавить параметр bind

[mysqld]
bind-address=IP_ADDRESS

Замените IP_ADDRESS на нужный IP адрес сервера, для запуска на любом IP необходимо указать 0.0.0.0.

После чего перезапустите СУБД командой:

systemctl restart mysqld

После того как СУБД перезапустится, проверьте что она запущена на нужном IP адресе:

netstat -nlp | grep 3306

Результатом данной команды будет показано на каком IP запущена СУБД

tcp        0      0 IP_ADDRESS:3306          0.0.0.0:*               LISTEN      4848/mysqld

Создание пользователя с правами root

Выполните вход в консоль СУБД, после чего можно создавать пользователя:

Внимание

Замените USERNAME и USER_PASSWORD на свои значения

CREATE USER 'USERNAME'@'192.168.1.1' IDENTIFIED BY 'USER_PASSWORD' REQUIRE NONE;
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'192.168.1.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Установка ansible

dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install --enablerepo epel-playground ansible

Установка

Скачать и распаковать архив установщика:

wget http://setup.multi-billing.pro/database.tar.gz
tar zxf database.tar.gz

В файле config/billing.yaml изменить параметры

  • install_percona изменить на false

  • mysql_server указать IP сервера СУБД:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
billing:
  # доменное имя для nginx хостов
  # реузльтатом будет
  # админка: admin.ispnet.demo
  # кабинет пользователей: stat.ispnet.demo
  domain: "ispnet.demo"
  # нужно ли ставить базу данных (софт)
  # если указывать false, то база данных уже должна быть установлена
  # желательно в таком случаи указать пароль от root в конфиге database.yaml
  install_percona: true
  # адрес сервера MySQL (для конфигов модулей биллинга)
  # если указан не 127.0.0.1, то считается что MySQL на отдельном сервере
  mysql_server: "127.0.0.1"
  # mysql шаблон для подключения
  mysql_connect: "/root/mysql.connect"
  # адрес серверов обновлений
  update_server: "update.multi-billing.pro"
  testing_server: "current.multi-billing.pro"
  # какие программы добавлять в chroot среду модулей
  chroot_programs: ["sh", "bash", "echo", "date", "ls", "awk", "sed", "grep", "cat", "rm", "command"]
  # данные директории не трогать!
  dirs:
    tmp: "/tmp/bill/install"
    home: "/var/bill"
    logs: "logs"
    backups: "backup"
    files: "files"
    scripts: "scripts"
    custom: "custom"

В файле config/database.yaml изменить параметры login и pass, указав логи и пароль пользователя с правами root:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
mysql:
  # на каком адресе запускать MySQL
  bind: "127.0.0.1"
  # пользователь с правами root (для создания базы, пользователей)
  # только если модули биллинга устанавливаются на одном сервере с MySQL
  login: "root"
  # пароль от пользователя root
  # если пароль указан, то он будет использоваться при попытке подключения к базе (пользователь должен быть создан заранее)
  # если значение пустое, пароль будет считан с лога установки и сгенерирован новый
  pass: ""
  # название рабочей базы
  database: "bill"
  # название тест базы
  testing: "bill_test"
  # кодировка базы данных
  encoding: "koi8r"
  collation: "koi8r_general_ci"
  # восстановить базу из бекапа
  # пример:
  # backup_file: "/home/database-2020-12-01.sql"
  # работает только если бекап создан с процедурами и без лишних ключей, к примеру:
  #         mysqldump --single-transaction --routines -u root -pstrongpassword billing > /home/backup/files/database.sql
  backup_file: ""

После чего можно запускать процесс установки:

ansible-playbook database.yml

Информация

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

mbadmin

Используется для модуля админки, имеет свою роль role_mbadmin с правами:

GRANT ALL PRIVILEGES ON bill.* TO 'role_mbadmin'
mbradius

Используется для модуля радиуса, имеет свою роль role_mbradius с правами:

GRANT SELECT ON bill.radnas TO 'role_mbradius'
mbcore

Используется для модуля ядра билинга, имеет свою роль role_mbcore с правами:

GRANT ALL PRIVILEGES ON bill.* TO 'role_mbcore'
mbpaygw

Используется для модуля платежных систем, имеет свою роль role_mbpaygw с правами:

GRANT ALL PRIVILEGES ON bill.* TO 'role_mbpaygw'
mbcron

Используется для модуля очереди, имеет свою роль role_mbcron с правами:

GRANT ALL PRIVILEGES ON bill.* TO 'role_mbcron'
mbcabinet

Используется для модуля личного кабинета, имеет свою роль role_mbcabinet с правами:

GRANT ALL PRIVILEGES ON bill.* TO 'role_mbcabinet'
mbcabapi

Используется для модуля API личного кабинета, имеет свою роль role_mbcabapi с правами:

GRANT ALL PRIVILEGES ON bill.* TO 'role_mbcabapi'
mbsql

Используется для модуля обновления структуры базы биллинга, имеет свою роль mbsql с правами:

GRANT ALL PRIVILEGES ON bill.* TO 'role_mbsql'

Важно

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



При возникновении проблем, сообщите о них в нашем CRM или Telegram канале.