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.comAsterisk 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