Asterisk и Freepbx на Centos 7
Asterisk — бесплатное решение для организации voip телефонии.
Freepbx — бесплатный веб интерфейс для управления астериском.
Установка asterisk и freepbx на CentOS 7
Подготовка системы
Я рекомендую ознакомиться с моим материалом на тему начальной настройки центоса . Многие вопросы там рассмотрены подробнее, здесь же я не буду на них задерживаться, просто выполню необходимые команды.
Прежде чем мы начнем устанавливать asterisk, нам надо выполнить целый ряд подготовительных действий. Первым делом отключаем selinux. Для этого открываем файл:
# mcedit /etc/sysconfig/selinux
и устанавливаем значение SELINUX=disabled. После этого применяем настройку без перезагрузки сервера:
# setenforce 0
Рекомендация по отключению selinux дается в официальной инструкции по установке freepbx, так как это может привести к нарушению процесса инсталляции.
Дальше обновляем систему и ставим пакеты Development Tools:
# yum update # yum groupinstall core base "Development Tools"
Установка Mariadb
В своей работе FreePBX использует базу данных Mysql. В качестве mysql сервера будем использовать mariadb. Подключаем репозиторий со свежей версией MariaDB. Для этого создаем файл /etc/yum.repos.d/MariaDB.repo следующего содержания.
# MariaDB 10.3 CentOS repository list - created 2019-04-01 09:11 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
Переходим нужную папку
сd /etc/yum.repos.d
Cоздаем файл командой:
#echo "# MariaDB 10.3 CentOS repository list - created 2019-04-01 09:11 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1" > MariaDB.repo
Устанавливаем MariaDB.
# yum install MariaDB-server MariaDB-client MariaDB-shared
Запускаем mariadb и добавляем в автозагрузку.
# systemctl start mariadb # systemctl enable mariadb
Настройте mysql сервер, задав пароль для root.
# systemctl start mariadb # systemctl enable mariadb # /usr/bin/mysql_secure_installation
Настройка Web сервера
Для работы панели FreePBX нужен web сервер с php. Я буду использовать версию php 7.1. Более подробно про настройку web срвера на Centos вы можете прочитать отдельно. Сейчас же коротко пройдем по шагам весь процесс.
Подключаем репозиторий epel, если еще не сделали это ранее.
# yum install epel-release
Подключаем remi репозиторий для centos 7.
# rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Ставим пакет yum-utils.
# yum install yum-utils
Активируем репу remi-php71, для этого выполняем команду.
# yum-config-manager --enable remi-php71
Устанавливаем необходимые пакеты для работы сервера voip.
# yum install wget php php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysql php-gettext php-bcmath php-zip php-xml php-imap php-json php-process php-snmp
Далее установим httpd. Он, по идее, должен установиться в качестве зависимости на предыдущем шаге, но на всякий случай проверьте.
# yum install httpd
Теперь нам нужно изменить некоторые параметры httpd — запустить его от пользователя asterisk и включить опцию AllowOverride. Это можно сделать руками в файле /etc/httpd/conf/httpd.conf, либо автоматически с помощью sed.
# sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf # sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
Мы просто выставили следующие параметры:
- User asterisk
- Group asterisk
- AllowOverride All
Httpd запускать пока не надо, так как пользователя asterisk мы еще не создали. Сделаем это после установки asterisk.
Изменим параметр php, который отвечает за максимальный размер загружаемого файла. Дефолтное значение слишком низкое для freepbx. Для этого в /etc/php.ini устанавливаем параметр.
upload_max_filesize = 120M
Сделать это можно либо руками, либо автоматически с помощью sed.
# sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini
С веб сервером закончили. Продолжаем подготовку к установке FreePBX на CentOS.
Установка NodeJS
Для работы Freepbx требуется сервер NodeJS. Установим его на Centos 7. Подключаем репозиторий NodeJS с помощью скрипта автоматизации от разработчика.
# curl -sL https://rpm.nodesource.com/setup_10.x | bash -
Обновляем кэш yum.
# yum clean all && sudo yum makecache fast
Устанавливаем NodeJS и некоторые зависимости.
# yum install gcc-c++ make nodejs
Проверяем на всякий случай версию:
# node -v
Если видите номер версии, значит установка прошла успешно. Продолжаем подготовку к установке Freepbx.
Установка Asterisk
Скачиваем архив последней версии Asterisk с официального сайта.
# cd ~ && wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-17-current.tar.gz
Распаковываем исходники.
# tar zxvf asterisk-17-current.tar.gz
Переходим в директорию с исходниками.
# cd asterisk-17.5.1
Выполняем скрипт для установки пакетов с зависимостями для asterisk.
# contrib/scripts/install_prereq install
Запускаем скрипт для скачивания исходников для работы с mp3.
# contrib/scripts/get_mp3_source.sh
Настраиваем конфигурацию:
# ./configure --with-pjproject-bundled --with-jansson-bundled --with-crypto --with-ssl=ssl --with-srtp
Запускаем меню для выбора параметров:
make menuselect
В целом, можно оставить дефолтную настройку, если вы не очень разбираетесь, что тут выбирать.
Выбирайте необходимые модули и звуки, в зависимости от того, что вам нужно. Я в общем случае указываю:
- Add-ons: format_mp3, res_config_mysql.
- Core Sound Packages: русские звуки RU-WAV.
- Music On Hold File Packages: звук WAV.
- Extras Sound Packages: английский EN-WAV, русского к сожалению нет.
Все остальные настройки оставляем по-умолчанию. Ставится много модулей. Все они не нужны, но мало ли, пригодится что-то в будущем. Неиспользуемые модули можно будет потом отключить в конфигурации.
Можно запускать установку asterisk.
# make && make install && make config && make samples && ldconfig
Настроим запуск астериск от системного пользователя asterisk. Для этого редактируем скрипт запуска /usr/sbin/safe_asterisk, установив параметр.
ASTARGS="-U asterisk"
Можете то же самое сделать автоматически.
# sed -i 's/ASTARGS=""/ASTARGS="-U asterisk"/g' /usr/sbin/safe_asterisk
Создадим этого пользователя и назначим нужные права на каталоги.
# useradd -m asterisk # chown asterisk.asterisk /var/run/asterisk # chown -R asterisk.asterisk /etc/asterisk # chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk # chown -R asterisk.asterisk /usr/lib/asterisk
Запускаем Asterisk.
# systemctl start asterisk
Проверьте сразу, что он запустился.
# systemctl status asterisk
Если у вас будут ошибки:
radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory
То отредактируйте конфигурационные файлы asterisk, заменив в некоторых строках пути на правильные.
# sed -i 's";\[radius\]"\[radius\]"g' /etc/asterisk/cdr.conf # sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cdr.conf # sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cel.conf
После этого перезапустите asterisk, ошибок быть не должно.
Источник: https://serveradmin.ru/ustanovka-asterisk-i-freepbx-na-centos-7/