Выделенный сервер¶
Примечание
При установке используется последняя версия 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
Добавьте репозиторий в файл /etc/apt/sources.list:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
После чего запустите команды:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
apt update
apt install 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 канале.