Выделенный сервер

Примечание

При установке используется последняя версия Percona DB.

Внимание

Установщик не изменяет и не отключает firewall/iptables на сервере, обратите на это внимание!

Установка 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/database.yaml изменить IP на котором нужно запускать базу данных в параметре bind:

 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

Информация

Примечание

Пароль root от СУБД находится в файле /root/mysql.connect

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

[client]
port = 3306
socket=/var/lib/mysql/mysql.sock

[mysql]
loose-local-infile=1

[mysqld_safe]
err-log = /var/log/mysql/mysql.err

[mysqld]
user = mysql
port = 3306
bind-address = 127.0.0.1
socket = /var/lib/mysql/mysql.sock
pid-file = /var/run/mysqld/mysqld.pid
log-error = /var/log/mysql/mysql.err
basedir = /usr
datadir = /var/lib/mysql
skip-external-locking
#symbolic-links=0
skip-name-resolve
default-storage-engine=innodb
log_bin_trust_function_creators=1
skip-log-bin
sync_binlog = 0
sql-mode=''
optimizer_switch = 'index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off,index_condition_pushdown=off,mrr=off,mrr_cost_based=off,subquery_materialization_cost_based=off,use_index_extensions=off,condition_fanout_filter=off,derived_merge=off,use_invisible_indexes=off,skip_scan=off,hash_join=off'
performance_schema = OFF


#system
loose-local-infile=1
open_files_limit = 35000
#query_cache_size = 256M
#query_cache_limit = 256M
join_buffer_size = 256M
max_join_size=256M
max_connect_errors = 1K
max_allowed_packet=16M
table_open_cache = 4096
#table_cache = 1k
max_heap_table_size = 1024M
tmp_table_size = 1024M
interactive_timeout = 120
wait_timeout = 120
connect_timeout = 120
thread_cache_size = 32
#thread_concurrency = 4
max_connections = 128

#Myisam
key_buffer_size = 8M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
myisam_sort_buffer_size = 2M


#ниже включается бинари лог, разкоментируйте следующие 2 строки чтобы включить
#server-id=1
#log-bin=mysqld-bin
tmpdir = /tmp/

# innodb
innodb_file_per_table
innodb_flush_method=O_DIRECT
innodb_buffer_pool_size = 1372M
# default is 8 (or 1 if innodb_buffer_pool_size < 1GB)
innodb_buffer_pool_instances = 4
#innodb_additional_mem_pool_size = 4M
innodb_data_home_dir = /var/lib/mysql/
innodb_log_group_home_dir = /var/lib/mysql/
innodb_data_file_path = ibdata1:12M:autoextend
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 0
innodb_lock_wait_timeout = 300
innodb_read_io_threads = 4
innodb_write_io_threads = 4
innodb_thread_concurrency = 4


[mysqldump]
quick
max_allowed_packet = 16M

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Будут созданы пользователи и роли:

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'

Важно

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


В конце установки будет создан файл /var/bill/database_users.info с логином и паролем для входа в модуль mbadmin, пример:

# BEGIN mbadmin web info
url_production= https://admin.ispnet.demo
url_testing= https://test.admin.ispnet.demo
login=admin
password=vjWoH45t_0_4fOPX
# END mbadmin web info

Так же будет создан файл /var/bill/database_users.info с информацией по созданным пользователям, пример:

# BEGIN mbadmin database info
ip=127.0.0.1
login=mbadmin
password=vsoty.2G=3CA6FM3
# END mbadmin database info
# BEGIN mbcabinet database info
ip=127.0.0.1
login=mbcabinet
password==2Lj.D0BO4vqpK1z
# END mbcabinet database info
# BEGIN mbcore database info
ip=127.0.0.1
login=mbcore
password=On=H=P33ahGbGm34
# END mbcore database info
# BEGIN mbradius database info
ip=127.0.0.1
login=mbradius
password=KuByR60=kvJ9Y4x=
# END mbradius database info
# BEGIN mbpaygw database info
ip=127.0.0.1
login=mbpaygw
password=w=2E9dxX3_liMJ1R
# END mbpaygw database info
# BEGIN mbcron database info
ip=127.0.0.1
login=mbcron
password=Y_s_t202yjIu4SVT
# END mbcron database info
# BEGIN mbsql database info
ip=127.0.0.1
login=mbsql
password=zEwi8OG-1U2wx9_W
# END mbsql database info
# BEGIN mbcabapi database info
ip=127.0.0.1
login=mbcabapi
password=G1Qv5ZuO==1Vnm2n
# END mbcabapi database info

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