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
Ожидаемый вывод:

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
Данная корректировка позволит избежать нежелательного обновления сервера БД при обновлении системы.

Проверьте наличие строк в файле /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".
Окно, подобное приведенному ниже, свидетельствует о корректной работе сервиса:
