Установка Freepbx на Centos 8

Автор: | 04.02.2020

Сейчас практически вся современная телефонная связь в офисах сферы малого и среднего бизнеса осуществляется по протоколу ip. Установка asterisk и панели управления freepbx на сервер под управлением CentOS 8 тема моего очередного повествования. Мы последовательно выполним все шаги по конфигурированию и сборке исходных текстов устанавливаемых продуктов.

Цели статьи
Кратко рассказать о том, что такое asterisk и freepbx.
Собрать asterisk из исходников.
Установить панель управления Freepbx.
Проверить, что все работает.

Введение
Asterisk — бесплатное решение для организации voip телефонии. Он обладает всеми возможностями обычных АТС, но предоставляет более богатый функционал по управлению звонками. За относительную простоту настройки, по сравнению с цифровыми АТС, бесплатность и широкие возможности он и снискал такую популярность.

Freepbx — бесплатный веб интерфейс для управления астериском. Он существенно упрощает работу с конфигурациями, позволяет выполнять некоторые функции людям, вообще далеким от астериска. Например, с его помощью практически любого можно научить управлять учетными записями пользователей.

Лично я больше люблю настраивать asterisk вручную, нежели с помощью готовой панели. Да, конфигов астериск очень много, они объемные, работать с ними не удобно. Тем не менее, чистый астериск предоставляет практически неограниченную возможность по конфигурированию. С готовой панелью вы будете ограничены ее возможностями. Но если они вас полностью удовлетворяют, то лучше использовать ее.

Дальнейшая установка FreePBX будет проходить по следующей схеме:
Подготовка системы.
Настройка Web сервера.
Установка NodeJS.
Сборка Asterisk из исходников.
Установка Freepbx.

Сразу важное замечание. Официально Freepbx еще не поддерживает Centos 8. После установки панели, она будет показывать в статусе, что версию системы, на которую она установлена, не может определить. Учитывайте этот нюанс. С таким раскладом для прода она еще не готова. Но в целом, если поставить, попробовать и убедиться, что она работает, можно использовать. По сути, эта панель привязана не к системе, а к версиям софта (php, nodejs, asterisk).

Следующая проблема в том, что стабильной считается 14-я версия, но она работает нормально только на php 5.6, для которого уже кончилась поддержка и ставить ее как-то не с руки. Есть 15-я версия, которая нормально работает на php 7, но она все еще в статусе бета, хоть и работает достаточно стабильно. Что ставить себе, решайте сами. Если непременно нужна Centos 8, то в закрытый контур я бы поставил 14-ю версию на php 5.6. Если версия с доступом из инета, то я бы ставил 15-ю на php 7.

Подготовка системы

Прежде чем мы начнем устанавливать asterisk, нам надо выполнить целый ряд подготовительных действий. Первым делом отключаем selinux. Для этого открываем файл:

и устанавливаем значение SELINUX=disabled. После этого применяем настройку без перезагрузки сервера:

Рекомендация по отключению selinux дается в официальной инструкции по установке freepbx, так как это может привести к нарушению процесса инсталляции.

Дальше обновляем систему и ставим пакеты Development Tools:

И еще некоторые зависимости, которые будут нужны.

В своей работе FreePBX использует базу данных Mysql. В качестве mysql сервера будем использовать mariadb. Для Freepbx версия не критична, так что будем ставить 10.3 из базового репозитория.

Запускаем mysql сервер.

Устанавливаем Jansson и pjsip

Установка Astersik 16
Я буду устанавливать LTS версию Asterisk 16. Советую для долгосрочного использования всегда использовать LTS версии. Они в целом стабильнее и дольше срок поддержки. Идем на страницу https://www.asterisk.org/downloads/asterisk/all-asterisk-versions и копируем ссылку на нужную версию. Загружаем ее на сервер.

Устанавливаем свежие версии libedit и libedit-devel.

Возможно, когда вы будете ставить, они появятся в репах и ставить их отдельно не будет необходимости.

Собираем asterisk.

Выбирайте необходимые модули и звуки, в зависимости от того, что вам нужно. Я в общем случае указываю:

Все остальные настройки оставляем по-умолчанию. Ставится много модулей. Все они не нужны, но мало ли, пригодится что-то в будущем. Неиспользуемые модули можно будет потом отключить в конфигурации.

Продолжаем установку:

Создание пользователя asterisk и запуск

По-умолчанию, asterisk установлен от root и будет запускаться от него же. Я предлагаю для этого создать отдельного пользователя и запускать астериск от него. Для этого создаем пользователя и добавляем его в некоторые группы.

Настраиваем Asterisk на запуск под этим пользователем. Для этого добавляем в конфиг /etc/sysconfig/asterisk параметры:

Теперь добавим примерно то же самое в сам конфиг астера

Пробуем запустить asterisk:

Если нет сообщений об ошибке, скорее всего все в порядке. Проверяем статус службы.

Asterisk запустился, но есть небольшие ошибки.

Связаны с тем, что в конфигах неверно указан путь к radiusclient. Сейчас исправим это.

Перезапускаем asterisk и убеждаемся, что ошибок нет. Проверим, все ли в порядке, зайдя в консоль:

Добавим asterisk в автозагрузку.

Настройка Web сервера
Для работы панели FreePBX нужен web сервер с php. Я буду использовать версию php 7.2 из базового репозитория.

Устанавливаем веб сервер apache:

Удаляем стартовую страницу.

Запускаем httpd и добавляем в автозагрузку.

Открываем порты на firewalld, если вы ранее не настраивали iptables.

Устанавливаем необходимые php расширения.

Изменяем максимально допустимый размер файла для загрузки и лимит по памяти для скриптов.

Теперь нам нужно изменить некоторые параметры httpd — запустить его от пользователя asterisk и включить опцию AllowOverride. Это можно сделать руками в файле /etc/httpd/conf/httpd.conf, либо автоматически с помощью sed.

Мы просто выставили следующие параметры:

И так же в php-fpm меняем пользователя на asterisk в конфигурации пула /etc/php-fpm.d/www.conf

Запускаем httpd и php-fpm.

Поверяем статус запущенных служб.

Установка NodeJS

Для работы Freepbx требуется сервер NodeJS. Установим его на Centos 8. Нам нужна будет 10-я версия, и она есть в базовом репозитории. Так что ставится все очень просто.

После завершения установки проверяем версию.

Установка Freepbx 15 на Centos 8
Начнем с самого простого 15-я версия на php 7. Качаем архив с официального сайта.

Распаковываем архив.

Устанавливаем Freepbx 15 на Centos 8.

Если на mysql установили пароль root, то запускать установку следует с указанием пароля.

Перезапустите httpd.

На этом установка freepbx закончена. Можно идти в веб интерфейс и проверять. Сначала создадите учетную запись администратора freepbx, потом зайдете под ней в панель управления asterisk. Рекомендую выбрать английский язык. Перевод на русский так себе, с ним иногда бывает сложно понять суть настроек.

Я заметил небольшую проблему. Во время входа панель обращается к какому-то внешнему ресурсу, который с моего сервера плохо доступен. Из-за этого очень долго выполняется вход, потом вылетает ошибка бэкенда и загружается dashboard. В логах apache при этом была ошибка:

Не хватает дефолтного времени в параметре RequestReadTimeout. Ошибка пропала и вход стал выполняться нормально после того, как я увеличил таймауты, добавив в

Не забудьте после этого перезапустить httpd.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *