Установить Asterisk
Сценарий выполнит ряд проверок, чтобы убедиться, что все зависимости, которые требуются для процесса сборки и установки, присутствуют, запустите сценарий, набрав:
После успешного завершения вы увидите следующий результат:
Следующим шагом является выбор модулей, которые вы хотите скомпилировать и установить.
Большинство модулей уже включены. Войдите в систему Menuselect, набрав:
Мы уже скачали исходные файлы MP3, и теперь нам нужно указать Asterisk создать модуль MP3, выбрав :
Когда вы закончите, нажмите чтобы сохранить и выйти, или переключитесь на кнопку « и нажмите .
Запустите процесс компиляции с помощью команды :
Для завершения сборки может потребоваться некоторое время, в зависимости от вашей системы. Вы можете изменить флаг соответствии с количеством ядер вашего процессора.
После завершения процесса сборки вам будет представлено следующее сообщение:
Следующим шагом будет установка Asterisk и его модулей, набрав:
По завершении установки сценарий отобразит следующее сообщение:
Теперь, когда Asterisk установлен, нам нужно установить образцы файлов конфигурации.
Установите либо общие файлы конфигурации со справочной документацией, набрав:
Или установите базовые файлы конфигурации АТС:
Последний шаг — установить сценарий инициализации Asterisk, набрав:
Наконец, запустите чтобы обновить кеш разделяемых библиотек:
Установка и настройка FreePBX
Осуществим некоторые модификации в 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 && systemctl restart httpd.service
Скачивание и установка FreePBX
cd /usr/src && wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz && tar xfz freepbx-14.0-latest.tgz && rm -f freepbx-14.0-latest.tgz && cd freepbx && ./start_asterisk start
-
Запустим установочный скрипт
если пропустить ключ «-n» установка пройдет в интерактивном режиме, это может пригодиться, например, если задан пароль mysql.
./install -n
Если после выполнения последней команды консоль выдаст ошибку типа:
Reading /etc/asterisk/asterisk.conf...Error! Unable to read /etc/asterisk/asterisk.conf or it was missing a directories section
Добавить в конец конфига /etc/asterisk/asterisk.conf строки:
astetcdir => /etc/asterisk astmoddir => /usr/lib/asterisk/modules astvarlibdir => /var/lib/asterisk astdbdir => /var/lib/asterisk astkeydir => /var/lib/asterisk astdatadir => /var/lib/asterisk astagidir => /var/lib/asterisk/agi-bin astspooldir => /var/spool/asterisk astrundir => /var/run/asterisk astlogdir => /var/log/asterisk astsbindir => /usr/sbin
Выключение фаервола и запуск и автозагрузка http сервера
Выключаем фаервол и убираем из автозагрузки:
systemctl stop firewalld && systemctl disable firewalld
Запускаем сервер http и ставим в автозагрузку:
systemctl start httpd && systemctl enable httpd
Готово!
Проблемы с отображением кириллицы в CDR
сносим старый коннектор:
rpm -e mysql-connector-odbc --nodeps
Установим CMAKE
wget https://cmake.org/files/v3.12/cmake-3.12.3.tar.gz
tar zxvf cmake-3.* cd cmake-3.* ./bootstrap && make && make install
Компилируем новый коннектор:
cd /usr/src git clone https://github.com/MariaDB/mariadb-connector-odbc.git cd mariadb-connector-odbc git checkout 3.0.7 git submodule init git submodule update cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCONC_WITH_UNIT_TESTS=Off -DWITH_OPENSSL=true -DCMAKE_INSTALL_PREFIX=/usr/local make make install
Правим /etc/odbcinst.ini , добавляем новый драйвер:
Description=ODBC for MariaDB Driver=/usr/local/lib64/libmaodbc.so Setup=/usr/lib64/libodbcmyS.so UsageCount=1
Убедитесь что libmaodbc там где указано:
# find / -name "libmaodbc.so" /usr/local/lib64/libmaodbc.so /usr/src/mariadb-connector-odbc/libmaodbc.so
И измените имя драйвера в odbc.ini на , ну или на то что вы укажете в odbcinst.ini
Description=MySQL connection to 'asteriskcdrdb' database driver=MariaDB server=localhost database=asteriskcdrdb Port=3306 Socket=/var/lib/mysql/mysql.sock option=3 Charset=utf-8
Такие дела…
Пункт третий. Устанавливаем ПО для пользователей телефонии.
Как известно, FreePBX предназначен для администрирования системы телефонии. Его использует системный администратор для настройки. Директор и секретарь, а также другие руководители каждый день работают со статистикой звонков и записями разговоров. Для этих целей FreePBX им не подойдет. Пользователь в IT не разбирается. Часто это неуверенный пользователь ПК. Поэтому ему нужна русифицированная интуитивно понятная программа.
По моему мнению, наиболее соответствует этим критериям программа HelloAsterisk. Программа имеет бесплатную версию. В этой бесплатной версии огромное количество нужных функций. Есть и платные функции. Описание можно найти на официальном сайте программы.
Я приведу видео обзор одной из бесплатных функций HelloAsterisk:
Платформа IT инфраструктуры
Обстановка в подавляющем большинстве компаний нашей с вами родины сложилась следующим образом: Везде Windows. На компьютерах Windows. На серверах Windows. Ноутбуки продаются с предустановленной Windows. Современные недорогие планшеты и те — на Windows. Все полезные и необходимые программы для бизнеса написаны для работы в Windows.
Хорошо это или плохо? Речь сейчас не об этом.
Нужно работать. Выполнять поставленные задачи. Бизнес должен развиваться и зарабатывать деньги. А в крестовый поход против Microsoft мы сегодня не пойдем.
Сегодня я расскажу Вам что нужно сделать чтобы развернуть телефонию в компании без погружения в мир Linux и черных экранов с множеством непонятных команд.
Изучаем логику работы
Итак для начала, как все это должно работать. При поступления звонка извне на АТС (событие SIP INVITE от провайдера) начинается обработка диалплана(плана набора, dialplan) — правил, что и в каком порядке делать со звонком. Из первого пакета можно получить много информации, которую потом можно использовать в правилах. Отличным инструментом для изучения внутренностей SIP является анализатор sngrep (ссылка) который просто ставится в популярных дистрибутивах через apt install/yum install и подобное, но можно и из исходников собрать. Посмотрим лог звонка в sngrep
В упрощенном виде диалплан занимается только первым пакетом, иногда также в процессе разговора совершается перевод звонков, нажатия кнопок (DTMF), разные интересности типа FollowMe, RingGroup, IVR и прочего.
Что внутри Invite пакета
Собственно большинство простых диалпланов работают с первыми двумя полями и вся логика крутится вокруг DID и CallerID. DID — куда звоним, CallerID — кто звонит.
Но ведь у нас фирма а не один телефон — и значит в АТС скорее всего есть группы вызова (одновременный/последовательный звонок нескольких аппаратов) на городских номерах (Ring Group), IVR (Здравствуйте, вы позвонили… Нажмите один для…), Автоответчики (Phrases), Временные условия (Time Conditions), Переадресация на другие номера или на сотовый (FollowMe, Forward). Это значит, что однозначно определить кому на самом деле придет вызов и с кем будет разговор при поступлении вызова очень сложно. Вот пример начала прохождения типового вызова в АТС наших клиентов
После успешного входа звонка в АТС происходит путешествие его по диалплану в разных «контекстах». Контекст с точки зрения Asterisk — это нумерованный набор команд, каждая из которых содержит фильтр по набранному номеру (он называется exten, для наружного вызова на начальном этапе exten=DID). Командами в строке диалплана может быть все что угодно — внутренние функции (например позвонить внутреннему абоненту — , положить трубку — ), условные операторы (и подобные), переходы к другим правилам этого контекста (), переход другим контекстам в виде вызова функций (Gosub, Macro). Отдельно стоит директива , которая добавляет команды другого контекста в конец текущего контекста. Команды, включенные через include всегда выполняются после команд текущего контекста.
Вся логика работы FreePBX построена на включении друг в друга разных контекстов через include и вызов через Gosub, Macro и обработчики Handler. Рассмотрим контекст входящих вызовов FreePBX
Вызов проходит по всем контекстам сверху вниз по очереди, в кажом контексте могут быть вызовы других контекстов как макросов (Macro), функций(Gosub) или просто переходы (Goto), поэтому реальное дерево того, что вызывается можно отследить только в логах.
Типовая схема настройки типичной офисной АТС показана ниже. При вызове во входящих маршрутах ищется DID, по нему проверяются временные условия, если все в порядке — запускается голосовое меню. Из него по кнопке 1 или таймауту выход на группу дозвона операторов. После окончания звонка вызывается макрос hangupcall, после которого ничего уже в диалплане выполнить не удастся, кроме специальных обработчиков (hangup handler).
Где в этом алгоритме звонка мы должны поставлять информацию о начале звонка в CRM, где начинать запись, где оканчивать запись и отсылать ее вместе с информацией о звонке на CRM?
Установка Freepbx 14 с php 5.6 на Centos 8
В целом, Freepbx 14 на php 7 работает. Я читал в буржунете, что вроде как работает нормально и особых проблем быть не должно. Но сразу предупреждаю, что сам я не проверял. Самый надежный вариант, как я написал выше, будет установить 14-ю версию на php 5.6. Давайте сделаем и это.
Для этого подключаем репозиторий remi и epel.
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm # dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Устанавливаем php 5.6
# dnf install php56 php56-php-fpm php56-php-pear php56-php-cgi php56-php-common php56-php-curl php56-php-mbstring php56-php-gd php56-php-mysqlnd php56-php-gettext php56-php-bcmath php56-php-zip php56-php-xml php56-php-json php56-php-process php56-php-snmp --skip-broken
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 командой:
# systemctl enable --now php56-php-fpm
Добавьте path с php5.6 в окружение.
# source /opt/remi/php56/enable
Чтобы после перезагрузки они снова применились, добавьте их в профиль.
# cat /opt/remi/php56/enable >> ~/.bash_profile
Установите права на директорию с сессиями php для пользователя asterisk.
# chown -R asterisk. /var/opt/remi/php56/lib/php/session
Дальше устанавливается точно так же Freepbx 14 и настраивается.
Исправление ошибок
Рассмотрим процесс устранения предупреждений и ошибок во время запуска 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
Дополнительные материалы по Debian
Рекомендую полезные материалы по Debian: |
Настройки системы |
---|
Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика. Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования. Подробное описание настройки сети в Debian — задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др. Обновление предыдущей версии Debian 8 Jessie до последней Debian 9 Stratch. Подробная инструкция с описанием по каждому этапу обновления. Обновление версии Debian 7 wheezy до Debian 8 Jessie. Подробная инструкция с описанием по каждому этапу обновления. Включение записи логов cron в Debian в отдельный файл и настройка ротации этого файла. Отключение логов в syslog. |
Настройка программных комплексов |
Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке. Настройка интернет шлюза на Debian. Включает в себя настройку iptables, nat, dhcp, dns, iftop. Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk. Установка Freepbx 12 и Asterisk 13 на сервер под управлением Debian/Ubuntu. Подробное описание и разбор ошибок установки. Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива. Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети. |
Разное |
Подробное описание настройки бэкапа с помощью rsync на примере скрипта инкрементного архива на системе Centos, Debian, Ubuntu, Windows. Ускорение работы 1С с postgresql и диагностика проблем производительности |
Установка Asterisk на Ubuntu 16.04
Для сборки из исходников нам нужно будет выполнять большинство действий от имени суперпользователя, поэтому сразу же получим полные права в системе:
Обратите внимание, что если вы заходите зайти на свой сервер по ssh от имени root, то вам все равно придется подключаться от имени обычного пользователя, а уже потом переключаться в консоль root. Дальше вам нужно установить зависимости для работы программы:. apt-get install build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git subversion
apt-get install build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git subversion
cd /usr/src
$ wget downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
Для распаковки исходников наберите:
tar zxvf asterisk-13-current.tar.gz
Перед тем как компилировать программу нам нужно собрать и установить pjproject. Сначала скачаем исходники:
git clone git://github.com/asterisk/pjproject pjproject
$ cd pjproject
$ ./configure —prefix=/usr —enable-shared —disable-sound —disable-resample —disable-video —disable-opencore-amr CFLAGS=»-O2 -DNDEBUG»
$ make dep make && make install
$ ldconfig
$ ldconfig -p|grep pj
Наконец теперь мы готовы выполнить сборку и установку Asterisk на Ubuntu 16.04:
cd .. contrib/scripts/get_mp3_source.sh
$ contrib/scripts/install_prereq install
Эти команды позволят вам установить некоторые зависимости для проигрывания mp3. Выполнение может занять некоторое время, а также вам нужно будет ввести код страны. Дальше начинаем сборку:
./configure && make menuselect && make && make install
Когда установка будет завершена, выполните такую команду, чтобы не создавать сотни конфигурационных файлов вручную:
Чтобы установить скрипты инициализации, которые позволят запускать asterisk автоматически, при каждой загрузке выполните:
make config ldconfig
Теперь вы можете запустить сервер asterisk и убедится, что все действительно работает:
service asterisk start
И смотрим информацию про утилиту через терминал:
Если все было сделано правильно и установка Asterisk на Ubuntu 16.04 прошла успешно, то все будет работать.
Заключение
Долго я возился с этой статьей. В итоге перепробовал кучу всяких вариантов и настроек, но у меня так и не получилось добиться того, чтобы Freepbx без ошибок работала на Centos 8. Я для себя сделал вывод, что панель просто не готова к работе на этой системе. Статью я решил все же оформить и опубликовать, потому что было жаль потраченного времени, плюс может это будет кому-то полезно, если необходимо настраивать только на Centos 8.
При настройке и отладке различных версий, рекомендую использовать виртуальную машину и снепшоты. Я сначала настроил систему, сделал снепшот, потом собрал астериск, сделал еще снепшот, а потом уже пробовал различные версии панели. Это позволило оперативно проверить много вариантов настроек и версий php. Загружался из снепшотов раз 20.
Все статьи в буржунете, что видел, поверхностны и рассказывают обычную установку на дефолтную систему с php 7.2 из базовых реп. Как это потом работает, никто не проверяет. Реально полезной и законченной информации по Centos 8 b Freepbx я не нашел.
Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.
Онлайн курс «DevOps практики и инструменты»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .