Введение
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.
Таким образом, если вам нужна максимальная стабильность, то разумнее всего сейчас использовать Centos 7, php 5.6 и Freepbx 14 (моя статья по теме). Пример одного из многочисленных вопросов на официальном сайте по поводу php 7.
Я покажу 3 примера установки Freepbx:
- 15-я версия на php 7.2
- 14-я версия на php 7.2
- 14-я версия на php 5.6
Переходите по меню сразу к нужному разделу.
Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.
Установка GUI для Asterisk
1. Загрузка и настройка
Загрузите исходные файлы последней версии, используя svn. (yum install subversion)
root@centos-7 ~# cd /usr/src root@centos-7 ~# svn checkout http://svn.digium.com/svn/asterisk-gui/branches/2.0 asterisk-gui root@centos-7 ~# cd asterisk-gui root@centos-7 ~# ./configure root@centos-7 ~# make root@centos-7 ~# make install |
Сделайте резервную копию файлов конфигурации. Для этого достаточно скопировать /etc/asterisk под другими именем:
root@centos-7 ~# cp -r /etc/asterisk /etc/asterisk.backup |
Два файла измените вручную:
root@centos-7 ~# nano /etc/asterisk/manager.conf |
Включите следующие настройки
enabled = yes webenabled = yes |
Теперь добавим нового пользователя в manager.conf:
administrator secret = mypassword read = system,call,log,verbose,command,agent,user,config write = system,call,log,verbose,command,agent,user,config |
Теперь обновим конфиг http
root@centos-7 ~# nano /etc/asterisk/http.conf |
enabled=yes enablestatic=yes bindaddr=0.0.0.0 bindport = 8088 prefix = gui enablestatic = yes |
bindaddr 0.0.0.0 означает, что вы можете получить доступ из любого места. Если вам требуется доступ только с локального компьютера, то тогда используйте адрес 127.0.0.1.
Проверьте конфигурацию Asterisk-GUI, выполнив из каталога /usr/src/asterisk-gui команду
root@centos-7 asterisk-gui#make checkconfig |
2. Запуск asterisk-gui
Чтобы загрузить asterisk-gui, необходимо перезапустить Asterisk. Перезапустить сервер Asterisk можно из с консоли CLI, выполнив команду reload
Теперь вы можете использовать asterisk-gui через указанные адреса:
http://yoururl:8088/static/config/index.html
http://yoururl:8088/httpstatus (для проверки состояния)
Источник two-it.ru
MEDIA & RTP Settings
Reinvite Behavior
Поведение ReInvite — см. подробнее >
- yes: стандартный reinvite;
- no: никогда не использовать reinvite;
- nonat: дополнительная опция, разрешающая перенаправить медиа поток (reinvite), но только если пир установлен не за NATом (RTP может определить это на основе ИП адресов абонентов)
- update: используется специальный SIP пакет UPDATE для принятия решения о перенаправлении вместо пакета INVITE. (Значение yes соответствует = update + nonat)
RTP Timers
rtptimeout. Завершает звонок если в установленное в секундах значение rtptimeout не обнаруживается активности RTP или RTCP в аудио канале и если абонент не поставлен на Hold (ожидание). Это позволяет завершить звонок в случае внезапного исчезновения телефона из сети, например при потере питания или повреждении кабеля Ethernet.
rtpholdtimeout. Завершает звонок если в установленное в секундах значение rtpholdtimeout не обнаруживается активности RTP или RTCP в аудио канале при состоянии on Hold (в ожидании). Значение должно быть > чем rtptimeout.
rtpkeepalive. Посылает пакеты rtpkeepalive в RTP поток для поддержки открытых динамических трансляций NAT в то время, когда RTP поток может например стоять на удержании.
- 30 (rtptimeout)
- 300 (rtpholdtimeout)
- 0 (rtpkeepalive)
Заведение пользователя
Создадим наш первый диалплан (правило обработки звонков):
vi /etc/asterisk/extensions.conf
Допишем в него следующее:
exten => _XXX,1,Dial(SIP/${EXTEN},,m)
* в данном примере мы создаем контекст с именем outcaling для трехзначных номеров (XXX) с вызовом по SIP по внутреннему номеру.
Теперь создадим два внутренних номера:
vi /etc/asterisk/sip.conf
(!)
type=friend
context=outcaling
host=dynamic
disallow=all
allow=alaw
allow=ulaw
language=ru
qualify=yes
canreinvite=yes
call-limit=4
nat=no
(public)
regexten=101
secret=1234
callerid=»101″ <101>
callgroup=1
pickupgroup=1
(public)
regexten=102
secret=5678
callerid=»102″ <102>
callgroup=1
pickupgroup=1
* сначала мы создали шаблон public, в который занесли общие параметры. Шаблон мы применили к создаваемым коротким номерам.
* где:
- , — имена для обозначения номеров.
- type — типы проверки номеров. Могут быть peer, user или friend. Peer — вызовы сопоставляются с IP-адресами и номерами портов. User — проверка username. Friend — включает возможности peer и user (проверка username и IP-адреса источника) и лучше всего подходит для телефонов и телефонных программ.
- regexten — добавочный номер. Если не задан, используется имя.
- secret — пароль для аутентификации.
- context — контекст или группа правил.
- host — IP-адрес или имя клиента. Для автоматической регистрации используем dynamic.
- callerid — идентификатор пользователя при звонке.
- disallow — запрещает кодеки (задается перед параметром allow).
- allow — разрешает кодеки. alaw и ulaw — алгоритмы для кодеков g711.
- language — код используемого языка.
- callgroup — задает группу устройства (для возможности перехвата).
- pickupgroup — задает перечень групп, которые можно перехватывать.
- qualify — включает или отключает периодическую проверку подключенного клиента.
- canreinvite — включает или отключает прохождение голосового RTP трафика через Asterisk. Устанавливать, только если клиент поддерживает функцию SIP re-invites.
- call-limit — ограничение количества одновременных вызовов.
- nat — устанавливается в yes, если клиент находиться за NAT.
Перезапускаем наш сервис:
systemctl restart asterisk
Установка Asterisk
Мы будем устанавливать 16-ю версию Asterisk. На странице загрузки мы можем посмотреть все версии АТС и ссылки на них.
Сначала установим пакеты, необходимые для сборки:
dnf —enablerepo=powertools install libedit-devel
После скачиваем Asterisk:
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
Распаковываем архив и переходим в него:
tar -xvf asterisk-*.tar.gz
cd asterisk-*/
Устанавливаем зависимости для астериска:
./contrib/scripts/install_prereq install
Мы должны увидеть:
Complete!
#############################################
## install completed successfully
#############################################
Чистим временные файлы, которые появились после установки зависимостей:
make distclean
Добавляем библиотеку для работы с mp3:
./contrib/scripts/get_mp3_source.sh
Конфигурируем исходник:
./configure
* в данном примере мы конфигурируем исходник без дополнительных опций. Полный перечень опций и что они означают можно посмотреть командой ./configure -h.
Мы должны увидеть:
…
configure: Menuselect build configuration successfully completed
.$$$$$$$$$$$$$$$=..
.$7$7.. .7$$7:.
.$$:. ,$7.7
.$7. 7$$$$ .$$77
..$$. $$$$$ .$$$7
..7$ .?. $$$$$ .?. 7$$$.
$.$. .$$$7. $$$$7 .7$$$. .$$$.
.777. .$$$$$$77$$$77$$$$$7. $$$,
$$$~ .7$$$$$$$$$$$$$7. .$$$.
.$$7 .7$$$$$$$7: ?$$$.
$$$ ?7$$$$$$$$$$I .$$$7
$$$ .7$$$$$$$$$$$$$$$$ :$$$.
$$$ $$$$$$7$$$$$$$$$$$$ .$$$.
$$$ $$$ 7$$$7 .$$$ .$$$.
$$$$ $$$$7 .$$$.
7$$$7 7$$$$ 7$$$
$$$$$ $$$
$$$$7. $$ (TM)
$$$$$$$. .7$$$$$$ $$
$$$$$$$$$$$$7$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.
configure: Package configured for:
configure: OS type : linux-gnu
configure: Host CPU : x86_64
configure: build-cpu:vendor:os: x86_64 : pc : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : pc : linux-gnu :
Продолжаем настройку — запускаем меню для выбора параметров:
make menuselect
Можно оставить значения по умолчанию и сохранить настройки.
Теперь можно запустить сборку астериска:
make
Мы должны увидеть сообщение об успешной сборке:
+——— Asterisk Build Complete ———+
+ Asterisk has successfully been built, and +
+ can be installed by running: +
+ +
+ make install +
+——————————————-+
После выполняем установку:
make install
Мы увидим:
+—- Asterisk Installation Complete ——-+
+ +
+ YOU MUST READ THE SECURITY DOCUMENT +
+ +
…
Устанавливаем скрипты для автозапуска АТС и готовые конфигурационные файлы:
make config
make samples
Ранее мы создали пользователя asterisk, от которого должен запуститься наш сервер телефонии. Для этого откроем файл:
vi /etc/asterisk/asterisk.conf
Снимаем комментарий с опций:
runuser = asterisk
rungroup = asterisk
… и снимем комментарий с последующим редактированием:
defaultlanguage = ru
documentation_language = ru_RU
Задаем владельца для следующих каталогов:
chown -R asterisk:asterisk /var/run/asterisk
chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk:asterisk /var/log/asterisk
и проверяем настройки:
asterisk -c
Мы должны увидеть Asterisk Ready:
… значит наш сервер готов к запуску. Все ошибки и предупреждения нам не помешают, однако их можно устранить разными способами, как правило, отключив неиспользуемые модули.
После успешной проверки, можно запустить Asterisk в качестве демона:
systemctl enable asterisk
systemctl start asterisk
Параметры asterisk и SIP клиента
Прописываем STUN сервер у SIP клиента
Это необходимо для того, чтобы как asterisk, так и сам клиент могли определить внешний IP адрес клиента. Для этого в SIP клиенте достатоно прописать STUN сервер. По умолчанию для протокола STUN используется UDP порт 3478 (если необходимо задавать порт для STUN сервера, используйте этот порт). Во многих SIP клиентах настройка STUN сервера может задаваться не в самих параметрах SIP аккаунта, а в глобальных настройках программы
Примеры STUN серверов (можно прописать любой из них):
stun.ekiga.net
stun.3cx.com
stun.ideasip.com
stun.iptel.org
stun.rixtelecom.se
stunserver.org
stun.softjoys.com
stun.voipbuster.com
stun.voipstunt.com
stun.voxgratia.org
Проверить STUN сервер на работоспособность, и получить информацию о NAT можно с помощью утилиты client: http://prdownloads.sourceforge.net/stun/client.exe?download. Описание ее можно найти здесь: http://www.interface.ru/home.asp?artId=22409
Осуществляем проброс портов к asterisk с внешнего IP адреса
Эту задачу решает маршрутизатор (у кого-то — прокси-сервер ISA/TMG/Kerio, у кого-то — Cisco, у кого-то — точка доступа Zyxel/D-Link/TP-Link/…). Вам необходимо обеспечить проброс портов как для протокола SIP (звонки), так и для протокола RTP (сам разговор):
- Выход в интернет для сервера asterisk через NAT. Открыты для выхода должны быть порты UDP 5060 (по умолчанию, SIP), и 10000-20000 (UDP по умолчанию, RTP).
- подключение извне (проброс портов) с UDP порта 5060 (по умолчанию) на сервер asterisk, и UDP 10000-20000 (по умолчанию). Несколько моментов:
- даже если asterisk в Вашей сети работает на порту 5060, вовсе не обязательно из интернета давать доступ к порту 5060. Можно указать (например) такой маппинг портов: с внешнего IP, UDP порт 50600, на локальный IP сервера asterisk, порт 5060;
- не обязательно открывать все 10000 RTP портов. Для каждого подключения asterisk требует 2 открытых RTP порта. И если в настройках asterisk (в файле rtp.conf) предварительно ограничить количество RTP портов (например 1000 портов обеспечит до 500 одновременных разговоров), то на сервере также можно ограничить количество внешних портов для подключения
Указываем в конфигурации asterisk внешний IP и порт
На удивление, тут все достаточно просто (во всяком случае, что касается asterisk версии 11.4): в sip.conf прописать несколько параметров в секции general:
Указываем внешний реальный ip адрес сервера asterisk. Если порт, открытый в интернет, не совпадает с внутренним портом астериска, не забываем указать его:
или
Разумеется, после создания/изменения подобных параметров в sip.conf может оказаться недостаточным сделать команду sip reload или даже reload. Может потребоваться перезагрузка самого сервиса asterisk:
Указываем в конфигурации asterisk диапазоны локальной сети
Для этого в sip.conf в секции general прописываем диапазоны локальных IP адресов
Обратите внимание: если у Вас подключены SIP провайдеры не через интернет, а по отдельным линиям связи, то подсети этих провайдеров тоже нужно указать как локальные сети:. Разумеется, после создания/изменения подобных параметров в sip.conf может оказаться недостаточным сделать команду sip reload или даже reload
Может потребоваться перезагрузка самого сервиса asterisk:
Разумеется, после создания/изменения подобных параметров в sip.conf может оказаться недостаточным сделать команду sip reload или даже reload. Может потребоваться перезагрузка самого сервиса asterisk:
Запрещаем прямые соединения клиентов, разрешаем только через asterisk
Прописываем в sip.conf, в секции general опцию:
В старых версиях asterisk (до версии 1.6.2) для этого необходимо было использовать опцию canreinvite, для запрещения повторной отправки пакетов INVITE. В более новых версиях эта опция была переименована.
Поддерживаем соединение со стороны asterisk
Необходима поддержка двух видов соединений: для SIP и для RTP. Параметры для обоих протоколов можно указать как для всех клиентов (в этом случае параметр прописывается в sip.conf в секции general), так и для конкретного клиента (в этом случае параметр прописывается в sip.conf в настройках конкретного клиента).
Для протокола SIP:
Вместо XXX можно указать число , в этом случае asterisk будет посылать SIP пакет клиенту каждые XXX миллисекунд, а можно указать просто yes, в этом случае XXX=300 .
Для протокола RTP:
Вместо YYY нужно указать число, в этом случае asterisk будет посылать RTP пакет клиенту каждые YYY секунд, по умолчанию этот параметр равен 0 (то есть выключен).
Подготовка к установке
Залогиньтесь от имени root и обновите всё, что установлено в системе.
root@centos-7 ~# yum update |
2. Установка требуемых пакетов
После того, как система обновлена, нужно установить несколько нужных пакетов с помощью следующей команды, которая содержит все необходимые пакеты и все зависимости.
root@centos-7 ~# yum install gcc gcc-c++ php-xml php php-mysql php-pear php-mbstring mariadb-devel mariadb-server mariadb sqlite-devel lynx bison gmime-devel psmisc tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel uuid-devel libtool libuuid-devel subversion kernel-devel kernel-devel-$(uname -r) git subversion kernel-devel php-process crontabs cronie cronie-anacron wget vim |
Проверьте список пакетов, которые будут установлены и нажмите «Y» для продолжения. Обновление займет около 125 Мб в зависимости от того, какие пакеты были установлены ранее. После успешной операции вы увидите список установленных пакетов и обновлений, включая все необходимые зависимости.
3. Настройка MariaDB
После установки можно подключиться к базе данных с настройками по умолчанию, без пароля. Начнем с настройки и запуска:
root@centos-7 ~# systemctl enable mariadb root@centos-7 ~# systemctl start mariadb root@centos-7 ~# systemctl status mariadb |
Следующая команда установит пароль root на базу, удалит анонимного пользователя, тестовую базу данных и запретит удаленный вход в систему пользователя.
root@centos-7 ~# mysql_secure_installation |
4. Установка libjansson
Jansson — это C-библиотека для кодирования, декодирования и манипулирования данными в формате JSON. Скачайте самый актуальный пакет с сайта разработчика:
root@centos-7 ~# wget http://www.digip.org/jansson/releases/jansson-2.7.tar.gz |
Распакуйте:
root@centos-7 ~# tar -zxvf jansson-2.7.tar.gz |
Сконфигурируйте:
root@centos-7 ~# cd jansson-2.7 root@centos-7 ~# ./configure --prefix=/usr |
Для компиляции настроенного пакета используем связку команд make и make install в папке, куда был распакован архив.
root@centos-7 jansson-2.7# make clean root@centos-7 jansson-2.7# make & make install root@centos-7 jansson-2.7# ldconfig |
Исправление ошибок
Рассмотрим процесс устранения предупреждений и ошибок во время запуска Asterisk.
Из-за неиспользуемых модулей
Для устранения данных проблем необходимо просто отключить данные модули.
Открываем файл:
vi /etc/asterisk/modules.conf
И в зависимости от ошибок, добавляем нижеперечисленные исправления…
Отключаем res_phoneprov:
noload => res_phoneprov.so
Отключаем res_config_ldap:
noload => res_config_ldap.so
Отключаем res_config_pgsql:
noload => res_config_pgsql.so
Отключаем cel_pgsql:
noload => cel_pgsql.so
Отключаем cel_tds:
noload => cel_tds.so
Другие ошибки
ari/config … No configured users for ARI
ARI предоставляет API для Asterisk REST Interface. В данном примере, отключаем поддержку:
vi /etc/asterisk/ari.conf
Находим параметр enabled и меняем его значение на no:
enabled = no
Установка GUI
Создание папки, где будут размещаться установочные файлы GUI и его загрузка с помощью утилиты svn
mkdir ~/asterisk-gui cd ~/asterisk-gui/ svn export http://svn.digium.com/svn/asterisk-gui/branches/2.0/ cd 2.0/
Конфигурирование и установка
./configure sudo make install
установочная директория GUI /var/lib/asterisk/
на нее должны быть права у пользователя asterisk
Так как установка была от пользователя root, установим владельца и группу asterisk — на всю директорию
sudo chown asterisk:asterisk -R /var/lib/asterisk/
Настроим доступ для управления asterisk’ом с конфигурацией для пользователя admin и паролем 1234
sudo nano /etc/asterisk/manager.conf
содержимое
manager.conf
; ; Asterisk Call Management support ; ; By default asterisk will listen on localhost only. enabled = yes port = 5038 ;bindaddr = 127.0.0.1 webenabled = yes ; No access is allowed by default. ; To set a password, create a file in /etc/asterisk/manager.d ; use creative permission games to allow other serivces to create their own ; files ;include "manager.d/*.conf" secret = 1234 read = system,call,log,verbose,command,agent,user,config write = system,call,log,verbose,command,agent,user,config
Пример sip.conf
…
externip=1.2.3.4:50666
localnet=192.168.0.0/24 ; локальная подсеть
localnet=192.168.5.0/24 ; локальная подсеть SIP провайдера 1
localnet=192.168.100.0/24 ; локальная подсеть SIP провайдера 2
directmedia=no ; запрещаем прямые соединения клиентов (только через asterisk)
;———————————
; локальный клиент (в одной сети с asterisk):
type=friend
secret=12345
host=dynamic
…
nat=no
;———————————
…
;———————————
; клиент подключен через NAT:
type=friend
secret=12345
host=dynamic
…
qualify=yes ; поддерживаем SIP каждые 300 мс
rtpkeepalive=10 ; поддерживаем RTP каждые 10 сек
nat=force_rport,comedia ; указываем, что клиент подключен через nat
;———————————
Кроме изменений в asterisk (в файле sip.conf) необходимо также в настройках самого SIP клиента прописать STUN сервер.
Удачи!
Подготовка системы
Я рекомендую ознакомиться с моим материалом на тему первоначальной настройки centos 7. Многие вопросы там рассмотрены подробнее, здесь же я не буду на них задерживаться, просто выполню необходимые команды.
Прежде чем мы начнем устанавливать asterisk, нам надо выполнить целый ряд подготовительных действий. Первым делом отключаем selinux. Для этого открываем файл:
# mcedit /etc/sysconfig/selinux
и устанавливаем значение SELINUX=disabled. После этого применяем настройку без перезагрузки сервера:
# setenforce 0
Рекомендация по отключению selinux дается в официальной инструкции по установке freepbx, так как это может привести к нарушению процесса инсталляции.
Дальше обновляем систему:
# yum update # yum groupinstall core base "Development Tools"
Устанавливаем необходимые пакеты для работы сервера voip:
# yum install lynx mariadb-server mariadb php php-mysql php-mbstring tftp-server httpd ncurses-devel sendmail sendmail-cf sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel git php-process crontabs cronie cronie-anacron wget vim php-xml uuid-devel sqlite-devel net-tools gnutls-devel php-pear
Устанавливаем компонент pear:
# pear install Console_Getopt
Теперь надо настроить iptabes. Подробно вопрос настройки firewall я рассмотрел отдельно. Там можно узнать все нюансы. Здесь же я прото скажу, что для начала нам нужно открыть 80-й порт, чтобы мы смогли работать с веб интерфейсом:
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
Для полноценной работы астериск, нужно открыть следующие порты:
iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 5061 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 5060 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 5061 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 5038 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT
Для работы freepbx необходима mariadb. Это популярный форк mysql, который по-умолчанию предлагается в качестве mysql сервера в CentOS 7. Оба эти сервера имеют полную совместимость и могут в любой момент заменять друг друга. Запустим базу и добавим в автозагрузку:
# systemctl enable mariadb.service # systemctl start mariadb
При первоначальной конфигурации mariadb рекомендуется запустить скрипт mysql_secure_installation. Сделаем это:
# /usr/bin/mysql_secure_installation
Подробнее о работе этого скрипта и вообще настройке mariadb можно прочитать в материале на тему web-сервера на centos 7.
Важное замечание. На этапе настройки mariadb не указывайте пароль root
Он должен быть пустым. Если его задать, то стандартная установка freepbx закончится ошибкой и сообщением: Error! Invalid Database Permissions. The error was: SQLSTATE Access denied for user ‘root’@’localhost’ (using password: NO)
Мы же двигаемся дальше. Для работы freepbx необходим веб сервер. В этом качестве у нас будет выступать httpd. Запускаем его:
# systemctl start httpd
И добавляем в автозагрузку:
# systemctl enable httpd
Теперь добавим пользователя, под которым будет работать астериск:
# adduser asterisk -M -c "User for voip"
Заключение
Долго я возился с этой статьей. В итоге перепробовал кучу всяких вариантов и настроек, но у меня так и не получилось добиться того, чтобы Freepbx без ошибок работала на Centos 8. Я для себя сделал вывод, что панель просто не готова к работе на этой системе. Статью я решил все же оформить и опубликовать, потому что было жаль потраченного времени, плюс может это будет кому-то полезно, если необходимо настраивать только на Centos 8.
При настройке и отладке различных версий, рекомендую использовать виртуальную машину и снепшоты. Я сначала настроил систему, сделал снепшот, потом собрал астериск, сделал еще снепшот, а потом уже пробовал различные версии панели. Это позволило оперативно проверить много вариантов настроек и версий php. Загружался из снепшотов раз 20.
Все статьи в буржунете, что видел, поверхностны и рассказывают обычную установку на дефолтную систему с php 7.2 из базовых реп. Как это потом работает, никто не проверяет. Реально полезной и законченной информации по Centos 8 b Freepbx я не нашел.
Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.
Онлайн курс Infrastructure as a code
Если у вас есть желание научиться автоматизировать свою работу, избавить себя и команду от рутины, рекомендую пройти онлайн курс Infrastructure as a code. в OTUS. Обучение длится 4 месяца.
Что даст вам этот курс:
- Познакомитесь с Terraform.
- Изучите систему управления конфигурацией Ansible.
- Познакомитесь с другими системами управления конфигурацией — Chef, Puppet, SaltStack.
- Узнаете, чем отличается изменяемая инфраструктура от неизменяемой, а также научитесь выбирать и управлять ей.
- В заключительном модуле изучите инструменты CI/CD: это GitLab и Jenkins
Смотрите подробнее программу по .