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

Содержание

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

Цели статьи

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

Данная статья является частью единого цикла статьей про сервер Centos.

Введение

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

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

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

Дальнейшая установка FreePBX будет проходить по следующей схеме:

  1. Подготовка системы.
  2. Настройка Web сервера.
  3. Установка NodeJS.
  4. Сборка Asterisk из исходников.
  5. Установка Freepbx.

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

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

Я покажу 3 примера установки Freepbx:

  • 15-я версия на php 7.2
  • 14-я версия на php 7.2
  • 14-я версия на php 5.6

Переходите по меню сразу к нужному разделу.

Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.

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

Я рекомендую ознакомиться с моим материалом на тему установки и первоначальной настройки centos 8. Многие вопросы там рассмотрены подробнее, здесь же я не буду на них задерживаться, просто выполню необходимые команды.

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

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

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

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

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

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

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

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

Теперь нам нужно установить asterisk. Я решил не добавлять информацию об этом в эту статью, так как она один в один дублирует содержание указанной. Пройдите по ссылке и установите asterisk. Начинать надо сразу с установки jansson и pjsip, так как подготовка сервера там такая же, и мы ее уже выполнили.

Настройка Web сервера

Для работы панели FreePBX нужен web сервер с php. Я буду использовать версию php 7.2 из базового рпозитория. Более подробно про настройку web срвера на Centos вы можете прочитать отдельно. Сейчас же коротко пройдем по шагам весь процесс.

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

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

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

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

Если вы хотите использовать php 5.6, то сразу переходите в самый конец статьи, в соответствующий раздел. Ниже будем ставить дефолтную версию php 7.2 из базового репозитория Centos 8. Устанавливаем необходимые php расширения.

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

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

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

  • User asterisk
  • Group asterisk
  • AllowOverride All

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

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

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

Запуск php-fpm и httpd

Все в порядке, движемся дальше.

Установка NodeJS

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

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

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

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

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

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

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

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

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

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

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

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

Так же у меня была ошибка с отображением системной информации в виджете System Overview . Вместо полезной информации там была ошибка:

There was an error asking for Overview. Check the error logs for more information.

Как ее исправить, я так и не разобрался.

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

Теперь покажу, как установить Freepbx 14 на php 7.2, которая в базовом репозитории Centos 8. Делаем все то же самое, что и выше, только для 14-й версии.

Качаем архив с официального сайта.

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

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

На этом установка freepbx 14 закончена. Можно идти в веб интерфейс и проверять.

Доступ в web интерфейс Freepbx

Переходим в браузере по ip адресу или доменному имени сервера и создаем учетную запись администратора Freepbx. При первом заходе в 14-ю версию я увидел ошибку.

Ошибка в Freepbx 14

Насколько я понял, это сообщение о том, что используется какая-то конструкция, которая объявлена Deprecated и скоро не будет работать. Что с этим делать сейчас, я не понял. Нашел баг репорт с этой ошибкой — https://issues.freepbx.org/browse/FREEPBX-19941 Он почему-то отклонен, помещен как дублирующий, но найти эту же ошибку в трекере я не смог.

Если взять версию php 5.6, то там этой ошибки не будет. Freepbx 14 официально поддерживает только 5.6, но откатываться на нее совсем не хочется.

Я решил просто отключить обработчик ошибок bootstrap. Для этого открываем конфиг freepbx и добавляем туда новое значение.

Заходим в web интерфейс freepbx еще раз и создаем администратора.

Учетная запись администратора Freepbx

Потом, используя созданную учетку, логинимся в панель и указываем начальные настройки. Рекомендую выбрать английский язык. Как я уже говорил, перевод на русский так себе, с ним иногда бывает сложно понять суть настроек.

Выбор языка web интерфейса

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

Установка Freepbx 14 с php 5.6 на Centos 8

В целом, Freepbx 14 на php 7 работает. Я читал в буржунете, что вроде как работает нормально и особых проблем быть не должно. Но сразу предупреждаю, что сам я не проверял. Самый надежный вариант, как я написал выше, будет установить 14-ю версию на php 5.6. Давайте сделаем и это.

Для этого подключаем репозиторий remi и epel.

Устанавливаем php 5.6

Php 5.6 в Centos 8 устанавливается в /opt. Конфиг php.ini лежит по адресу /etc/opt/remi/php56/php.ini, конфиг пула /etc/opt/remi/php56/php-fpm.d/www.conf. Их нам надо так же отредактировать, как и для 7-й версии. Увеличить лимиты и заменить пользователя на asterisk. Читайте об этом в разделе про настройку web сервера.

Запускается php 5.6 командой:

Добавьте path с php5.6 в окружение.

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

Установите права на директорию с сессиями php для пользователя asterisk.

Дальше устанавливается точно так же Freepbx 14 и настраивается.

Заключение

Долго я возился с этой статьей. В итоге перепробовал кучу всяких вариантов и настроек, но у меня так и не получилось добиться того, чтобы Freepbx без ошибок работала на Centos 8. Я для себя сделал вывод, что панель просто не готова к работе на этой системе. Статью я решил все же оформить и опубликовать, потому что было жаль потраченного времени, плюс может это будет кому-то полезно, если необходимо настраивать только на Centos 8.

При настройке и отладке различных версий, рекомендую использовать виртуальную машину и снепшоты. Я сначала настроил систему, сделал снепшот, потом собрал астериск, сделал еще снепшот, а потом уже пробовал различные версии панели. Это позволило оперативно проверить много вариантов настроек и версий php. Загружался из снепшотов раз 20.

Все статьи в буржунете, что видел, поверхностны и рассказывают обычную установку на дефолтную систему с php 7.2 из базовых реп. Как это потом работает, никто не проверяет. Реально полезной и законченной информации по Centos 8 b Freepbx я не нашел.

Если у кого-то есть информация, как все это корректно настроить и использовать, буду рад подробностям в комментариях.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.


Источник: serveradmin.ru