Инструкция по установке FreePBX v15 на Asterisk v16

Олег Ремизов
19 июля 2020
access_time6 минут
remove_red_eye7723
Компания «Ланкрафт»
Компания «Ланкрафт»

1. Введение

Настоящая инструкция описывает подробный процесс установки панели управления FreePBX версии 15 для IP-АТС Asterisk версии 16, работающей под управлением ОС CentOS 8, а также выполнение общесистемных настроек для обеспечения безопасности и надежной работы.

Установка Asterisk v16 описана в отдельной статье.

2. Установка и обновление системных пакетов и зависимостей

Установите необходимые системные пакеты, отсутствующие в базовом дистрибутиве.

yum -y groupinstall core base "Development tools"
yum -y install epel-release
yum config-manager --set-enabled PowerTools
yum -y install php php-gd php-mbstring php-mysqlnd php-pear php-pdo php-xml php-json
yum -y install e2fsprogs-devel keyutils-libs-devel krb5-devel libogg libsepol-devel libxml2-devel libtiff-devel gmp unixODBC unixODBC-devel audiofile-devel libogg-devel openssl-devel zlib-devel perl-Date-Manip sox git net-tools psmisc iptables-services fail2ban gcc-c++ make gnutls-devel libxml2-devel ncurses-devel subversion doxygen texinfo curl-devel neon-devel uuid-devel libuuid-devel sqlite-devel sqlite speex-devel gsm-devel libtool libtool-ltdl libtool-ltdl-devel gtk2-devel newt-devel mariadb-server mariadb libedit libedit-devel mailx postfix
yum -y update
reboot

3. Отключение SELinux

Поскольку FreePBX не работает корректно cо службой SELinux, ее следует отключить путем изменения параметра SELINUX в конфигурационном файле /etc/selinux/config на значение disabled:

SELINUX=disabled
SELINUXTYPE=targeted

Обновите и перезагрузите систему:

yum -y update
reboot

Проверьте состояние SELinux

sestatus

Ожидаемый вывод:

SELinux status: disabled

4. Запуск и проверка работы Asterisk

Запустите Asterisk штатным образом и проверьте его состояние:

systemctl start asterisk
ps -ef | grep asterisk

Примерный ожидаемый вывод:

root  5111     1  0 08:57 ?   		00:00:00 /bin/sh /usr/sbin/safe_asterisk
asterisk  5113  5111  0 08:57 ?   	00:00:00 /usr/sbin/asterisk -f -U asterisk -vvvg -c
root  5650  3788  0 09:05 pts/0		00:00:00 grep --color=auto asterisk

Проверьте подключение к консоли управления Asterisk:

rasterisk

Ожидаемый вывод:

Проверка работы Asterisk
Проверка работы Asterisk

5. Подготовка к инсталляции FreePBX

5.1. Запуск и проверка MariaDB

Запустите СУБД Maria DB:

systemctl enable mariadb.service
systemctl start mariadb

Проверка:

ps -ef | grep maria

Примерный ожидаемый вывод:

mysql 7160     1  1 10:44 ?	00:00:00 /usr/libexec/mysqld --basedir=/usr
root  7227  8399  0 10:44 pts/0	00:00:00 grep --color=auto mysql

5.2. Настройка, запуск и проверка Apache

Внесите правки в конфигурационные файлы Apache:

sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
sed -i 's/AllowOverride none/AllowOverride All/' /etc/httpd/conf/httpd.conf

Запустите web-сервер Apache:

systemctl enable httpd.service
systemctl start httpd

Проверка:

ps -ef | grep http

Примерный ожидаемый вывод:

root  6674     1  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 6676  6674  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 6677  6674  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 6678  6674  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 6679  6674  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 6680  6674  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND

5.3. Установка пакета NodeJS

Загрузите и установите NodeJS:

curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum -y install nodejs

5.4. Корректировка владельца процессов PHP-FPM

sed -i 's/user = apache/user = asterisk/' /etc/php-fpm.d/www.conf
sed -i 's/user = root/user = asterisk/' /etc/php-fpm.d/www.conf
sed -i 's/group = apache/group = asterisk/' /etc/php-fpm.d/www.conf
sed -i 's/group = root/group = asterisk/' /etc/php-fpm.d/www.conf

5.5. Запуск скрипта безопасной работы MySQL

Запустите скрипт:

mysql_secure_installation

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

Enter current password for root (enter for none): <Нажмите Enter>
Set root password? [Y/n] Y
New password: Qwerty123456
Re-enter new password: Qwerty123456
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

5.6. Замена драйвера ODBC

Драйвер ODBC, входящий в состав дистрибутива Asterisk, некорректно поддерживает кодировку UTF-8, что приводит к неправильному отображению кириллицы в БД CDR. Для исправления данной проблемы необходимо заменить стандартный драйвер (UNICODE) на драйвер ANSI.

Загрузите, установите и активируйте yum-репозиторий MySQL:

cd /usr/src
mkdir mysql-community-release
cd mysql-community-release
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
rpm -Uvh mysql80-community-release-el8-1.noarch.rpm
yum config-manager --set-enabled mysql80-community

Установите корректную версию драйвера ODBC из репозитория MySQL community:

yum -y install --enablerepo=mysql80-community mysql-connector-odbc

Отредактируйте файл /etc/yum.repos.d/mysql-community.repo

Найдите в указанном файле секцию [mysql-connectors-community]

Добавьте в конец данной секции следующую строку:

includepkgs=mysql-connector-odbc*

Убедитесь, что для всех остальных секций, присутствующих в файле, установлено значение enabled=0

Данная корректировка позволит избежать нежелательного обновления сервера БД при обновлении системы.

Замена драйвера ODBC
Замена драйвера ODBC

Проверьте наличие строк в файле /etc/odbcinst.ini

[MySQL ODBC X.x ANSI Driver]
Driver=/usr/lib64/libmyodbcXa.so

В случае отсутствия данных строк, следует загрузить библиотеку libmyodbcXa.so и добавить указанные выше строки вручную.

В контексте данного пункта X – номер версии, x – номер подверсии коннектора ODBC.

5.7. Задание директории для записей разговоров

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

rmdir /var/spool/asterisk/monitor
mkdir /home/asterisk/monitor/
ln -s /home/asterisk/monitor/ /var/spool/asterisk/
chown -R asterisk:asterisk /home/asterisk/

5.8. Настройка автоматического удаления записей вызовов

Запустите редактор файла crontab:

crontab -e

Добавьте в файл следующие строки:

31 3 * * * find /home/asterisk/monitor/ -type f -mtime +120 -exec rm -rf {} \;
32 3 * * * find /home/asterisk/monitor/ -type d -exec rmdir -p {\} \;

Сохраните изменения:

:wq!

6. Установка и запуск FreePBX

6.1. Загрузка и установка FreePBX

Загрузите, распакуйте и установите FreePBX:

cd /usr/src
mkdir freepbx
cd freepbx
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-15.0-latest.tgz
tar zxfv freepbx-15.0-latest.tgz
cd freepbx
./install -n --dbuser root --dbpass Qwerty123456 (пароль должен совпадать с указанным в п. 5.5)

Ожидаемый вывод по завершении установки:

You have successfully installed FreePBX

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

reboot

6.2. Задание драйвера ODBC для БД CDR

Если указанная ниже секция в файле /etc/odbc.ini отсутствует, добавьте ее. Если присутствует, проверьте параметры на соответствие приведенным ниже и скорректируйте в случае отличия:

[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
Trace=Yes
TraceFile=odbc.log
driver=MySQL ODBC X.x ANSI Driver
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/lib/mysql/mysql.sock
option=3
Charset=utf8

Значения X, x см. в разделе 5.6

6.3. Загрузка, настройка, обновление системных модулей FreePBX

fwconsole setting PM2USECACHE 0
fwconsole setting PM2USEPROXY 0
fwconsole ma downloadinstall pm2 --edge
fwconsole ma downloadinstall ucp --edge
fwconsole ma upgrade dashboard --edge

6.4. Запуск FreePBX

Зайдите браузером по ссылке http://<IP_ADDRESS>

Создайте учетную запись администратора, перейдите в раздел "FreePBX Administration".

Окно, подобное приведенному ниже, свидетельствует о корректной работе сервиса:

Панель управления FreePBX
Панель управления FreePBX