CentOS & Asterisk. Часть 5. Первая база данных MariaDB.


30.11.2018

Всем привет. В этой статье поговорим про то как можно удобно посмотреть статистику звонков. Вещь нужная ведь в любой момент директор может спросить с вас распечатку по конкретному человеку или статистику всех номеров организации. В этой статье мы не будем менять наш «диал план», и не будем добавлять новых номеров – мы просто добавим на CentOS систему управления базами данных MariaDB и подружим её с Asterisk.

Начнём с установки "apache" и "php":

sudo yum update
yum -y install httpd mod_ssl
chkconfig httpd on
service httpd start
yum -y install php php-common php-gd php-mysql php-xml php-mbstring
service httpd restart

Теперь установим на CentOS СУБД MariaDB:

yum -y install mariadb mariadb-server mariadb-devel
sudo systemctl start mariadb

Ставим в автозагрузку:

sudo systemctl enable mariadb

Проверим статус:
sudo systemctl status mariadb

Теперь надо пройти опросник СУБД:

sudo mysql_secure_installation

Для начала на вопрос о пароле root от СУБД – просто нажимаем Enter

Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation

Далее мы установим пароль для root:
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!


Далее уберём анонимных пользователей:
Remove anonymous users? [Y/n] y
... Success!


Далее разрешим конектиться к базе только будучи на localhost:
Disallow root login remotely? [Y/n] y
... Success!


Далее почистим тестовые базы:
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!


Перечитаем привилегии чтобы применить изменения:
Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Закончили с настройками безопасности СУБД mariadb.

Теперь мы можем посмотреть на данные о версии СУБД и также важный параметр – «UNIX socket» - «var/lib/mysql/mysql.sock». Выполним команду (попросит пароль root от mariadb):


mysqladmin -u root -p version

Ну а теперь мы заходим во внутренние команды СУБД MariaDB, подобно тому как мы заходили на внутренние команды астериска через «asterisk -r», набираем команду:


mysql -uroot -p

После чего строка будет начинаться с приветствия MariaDB [(none)]>

Теперь мы вводим команды непосредственно СУБД, набираем:

create database asterdb;

Этой командой мы создали базу данных «asterdb», далее мы даём команду на взаимодействие именно с этой базой:

use asterdb;

И теперь даём команду на создание таблицы «cdr» внутри нашей новой базы «asterdb» (копируйте весь блок):

CREATE TABLE `cdr` (
`id` int(11) unsigned NOT NULL auto_increment,
`calldate` datetime NOT NULL default '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '',
`channel` varchar(80) NOT NULL default '',
`dstchannel` varchar(80) NOT NULL default '',
`lastapp` varchar(80) NOT NULL default '',
`lastdata` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '',
`amaflags` int(11) NOT NULL default '0',
`accountcode` varchar(20) NOT NULL default '',
`uniqueid` varchar(32) NOT NULL default '',
`userfield` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `calldate` (`calldate`),
KEY `accountcode` (`accountcode`),
KEY `uniqueid` (`uniqueid`),
KEY `dst` (`dst`),
KEY `src` (`src`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


Далее мы придумали пользователя, который будет иметь право вносить данные в нашу базу данных. Пусть будет тоже «asteriskpbx» как пользователь CentOS под которым работает астериск. И скажем СУБД о том, что этот пользователь с паролем «123» будет заполнять таблицы в нашей базе данных «asterdb»:


grant all on asterdb.* to 'asteriskpbx'@'localhost' identified by '123';

flush privileges;

exit

Командой «exit» мы вышли из внутренних команд СУБД и теперь вернувшись в CentOS нам надо отредактировать один файл конфигурации астериска:

nano /etc/asterisk/cdr_mysql.conf

Находим вот такой блок и меняем под наши данные:

[global]
hostname=localhost
dbname=asterdb
table=cdr
password=123
user=asteriskpbx
port=3306
sock=/var/lib/mysql/mysql.sock


Теперь для того чтобы всё это заработало, нам надо пересобрать весь астериск. Но при этом мы установим дополнительные плюшки:


cd ~/src/asterisk-complete/asterisk/asterisk-15.6.2

./configure --libdir=/usr/lib64

make menuselect && make && make install

Заходим в верхний пункт Add-ons (See README-addons.txt)


Отмечаем на установку – «res_config_mysql» - «app_mysql» - «cdr_mysql»

Теперь просто жмём «x» и наблюдаем окончание установки – и не переживайте конфигурация останется – просто астериск пересоберётся с добавленными компонентами.

Далее убедимся, что астериск подружился с СУБД MariaDB и теперь логи звонков будет складывать не в свои закрома, а записывать в базу данных «asterdb»:


asterisk -r
cdr mysql status

Должно написать:

Connected to asterdb@localhost, port 3306 using table cdr for 25 seconds
Wrote 0 records since last restart.


Теперь нам надо скачать и установить сам WEB интерфейс:

cd /usr/src
wget https://github.com/g613/asterisk-cdr-viewer/archive/master.zip
yum -y install unzip zip
unzip master.zip

Делаем команду «ls» - видим что появился каталог «asterisk-cdr-viewer-master». Отлично!

Далее, если вы скачали архив "master.zip" отдельно в браузере, то через знакомое нам приложение WinSCP скопируйте содержимое каталога «asterisk-cdr-viewer-master» в каталог «/var/www/html». Но на самом деле проще это сделать, будучи в терминале через приложение «mc»:


Теперь переходим в каталог «/var/www/html/include»

cd /var/www/html/include

и редактируем файл «config.inc.php»

nano /var/www/html/include/config.inc.php

В этом файле находим вот такой блок и меняем данные на свои:

$db_type = 'mysql';
$db_host = 'localhost';
$db_port = '3306';
$db_user = 'asteriskpbx';
$db_pass = '123';
$db_name = 'asterdb';
$db_table_name = 'cdr';
$db_options = array();


А именно сменить пришлось только: $db_user = 'asteriskpbx'; $db_pass = '123'; $db_name = 'asterdb';.

А ещё находим вот такой блок чуть ниже:
/* auth require, set to 0 if cdr-viewer shall to work without Basic-auth */
$system_auth_require = 1;

И меняем 1 на 0:
$system_auth_require = 1;
на
$system_auth_require = 0;

Сохраняем и закрываем.

Перезагрузим сервер:

reboot

Теперь переходим в браузере на IP нашего сервера и наблюдаем статистику звонков!



Все ссылки для данного проекта:

Пакет русских сервисных сообщений (asterisk-core-sounds-ru-alaw-current) asterisk-core-sounds-ru-alaw-current drive.google.com
Asterisk CDR Viewer https://github.com/g613/asterisk-cdr-viewer drive.google.com
Ease Audio Converter http://audiotool.net/EaseAudioConverter/index.htm
Adobe Audition https://www.adobe.com/ru/products/audition.html
WinSCP https://winscp.net/eng/download.php
CentOS-7-x86_64-Minimal-1804.iso https://www.centos.org/download drive.google.com
Исходник asterisk-15.6.2 https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-15.6.2.tar.gz drive.google.com
Исходник dahdi-linux: https://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-current.tar.gz drive.google.com
Исходник libpri-current: https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz drive.google.com
X-lite: https://www.counterpath.com/x-lite-download/ drive.google.com
Официальная wiki https://wiki.asterisk.org/wiki/display/AST/Home


Навигация: