Asterisk – свободный сервер для цифровой телефонии, работающий на базе Linux, FreeBSD, OpenBSD. Использование Asterisk позволяет создать собственную АТС с возможностью гибкой настройки функциональности. Сервер распространяется на условиях двойной лицензии, благодаря которой можно использовать решения как с открытым кодом, так и интегрировать модули с содержанием лицензионного кода.
В этой статье мы рассмотрим как выполняется установка Asterisk Debian 10. В репозиториях Debian как правило, содержится не самая свежая версия Asterisk, так как тысячи людей со всего мира активно развивают проект. Поэтому при установке собственного сервера часто используют компиляцию из исходного кода, что, кроме прочего, позволяет оптимизировать сервер под конкретное окружение Linux или BSD системы, что, в свою очередь, даёт прирост производительности при прочих равных условиях.
Установка Asterisk 16 в Debian 10
Шаг 1. Подготовка
Установите необходимые пакеты и выполните обновление ОС Debian 10
sudo apt -y update && sudo apt -y upgrade
sudo apt install -y build-essential linux-headers-`uname -r` openssh-server mariadb-server mariadb-client bison flex curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp2-dev libspandsp-dev subversion libtool-bin python-dev unixodbc dirmngr debhelper cmake libmariadb-dev odbc-mariadb libodb-mysql-dev
Шаг 2. Загрузка исходников
Создайте в месте хранения исходных кодов /usr/src директорию asterisk, в которую вы в дальнейшем поместите все исходные файлы и перейдите в неё
sudo mkdir /usr/src/asterisk
Загрузите исходный код Asterisk16 с официального сайта и распакуйте его:
cd /usr/src/asterisk
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
sudo tar xvzf asterisk-16-current.tar.gz
sudo rm asterisk-16-current.tar.gz
Шаг 3. Сборка дополнительных библиотек
Если есть оборудование для прямого подключения к серверу с цифровой АТС платами или каналом Е1, то необходимо установить модуль DAHDI и библиотеку LibPRI. Для установки последовательно введите команды ниже:
cd /usr/src/asterisk
wget https://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
sudo tar xvzf libpri-current.tar.gz
sudo rm libpri-current.tar.gz
sudo tar xvzf dahdi-linux-complete-current.tar.gz
sudo rm dahdi-linux-complete-current.tar.gz
cd /usr/src/asterisk/dahdi-linux-com*
sudo make
sudo make install
cd /usr/src/asterisk/libpri*
sudo make
sudo make install
sudo ldconfig
Астериск работает с оригинальной полноценной имплементацией протокола SIP, а также может одновременно для разных каналов использовать PJProject – более современную имплементацию протокола SIP. При этом на этапе подготовки к сборке можно указать ключ —with-pjproject-bundled скрипту для сборки проекта, расположенному по адресу /path/asterisk-source-dir/configure
Шаг 4. Установка PJSIP
Перейдите в каталог сборки проекта:
cd /usr/src/asterisk
На момент написания статьи актуальный стабильный релиз PJProject 2.10. Необходимо скачать проект, распаковать и запустить компиляцию из исходного кода. Для этого поочерёдно введите команды:
sudo wget https://github.com/pjsip/pjproject/archive/2.10.tar.gz
sudo tar xvzf 2.10.tar.gz
sudo rm 2.10.tar.gz
cd /usr/src/asterisk/pjproject-*
sudo./configure
sudo make
sudo make dep
sudo make install
sudo ldconfig
Шаг 5. Подготовка к компиляции Asterisk
Добавьте пользователя asterisk в список Linux пользователей:
sudo useradd asterisk
Перейдите в каталог с исходным кодом asterisk
cd /usr/src/asterisk/asterisk*
На момент написания статьи актуальной версией Asterisk 16 является 16.17.9. Сначала необходимо установить оставшиеся зависимости. После выполнения команды:
ls /usr/src/asterisk/asterisk-16.17.0/contrib/scripts
Должен появиться вывод приблизительно такой, как на скриншоте выше. В этой директории содержатся несколько исполняемых файлов asterisk, которые необходимо выполнить
/usr/src/asterisk/asterisk-16.17.0/contrib/scripts/get_libc_source.sh
/usr/src/asterisk/asterisk-16.17.0/contrib/scripts/get_mp3_source.sh
/usr/src/asterisk/asterisk-16.17.0/contrib/scripts/get_swagger_ui.sh
/usr/src/asterisk/asterisk-16.17.0/contrib/scripts/install_prereq install
В процессе установки зависимостей может потребоваться ввести код страны, для которой устанавливается АТС, временную зону сервера Debian 10. Введите цифры кода без знака «+»
По завершении установки зависимостей появится сообщение, что все необходимые пакеты установлены, можно переходить к сборке проекта:
Шаг 6. Сборка Asterisk из исходного кода
В первую очередь необходимо запустить скрипт сборки проекта, который анализирует установленные в системе пакеты, необходимые asterisk и позволяет их включить в собираемый проект.
/usr/src/asterisk/asterisk-16.17.0/configure --with-pjproject-bundled –with-jansson-bundled
Jansson это ещё один проект, который используется при работе Asterisk. Он позволяет использовать данные JSON, на нем основано много функций гибкого управления АТС и передачи данных во внешние приложения и получения данных из них же.
На следующем этапе создаётся меню, которое позволяет управлять модулями для текущей сборки Asterisk
make menuselect
В этом меню XXX отмечены модули, которые не были найдены в системе.
Некоторые модули отключены по-умолчанию, но в системе установлены. Если их отметить звёздочкой, то модули будут включены в собираемый проект.
Особое внимание уделите кодекам, которые будут собраны при сборке проекта. Лучше выделить все доступные, чтобы в дальнейшем не тратить ресурсы сервера на пересборку проекта. После завершения выбора нажмите Save & Exit и последовательно введите команды сборки:
make
make config
make install
make samples
ldconfig
Если после завершения сборки, в директории /lib/systemd/system не появился файл asterisk.service необходимо его туда скопировать командой
sudo cp /usr/src/asterisk/asterisk-16.17.0/contrib/systemd/asterisk.service /lib/systemd/system
Задайте права на исполняемые файлы и создайте необходимые директории
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
Шаг 7. Запуск Asterisk
По завершении включаем автозагрузку Asterisk при запуске ОС Debian 10 и перезапускаем службу сервера
systemctl enable asterisk
systemctl restart asterisk
Шаг 8. Настройка Asterisk
Для подключения к консоли сервера телефонии из терминала наберите команду
asterisk -rvvv
Убедиться, что произошло подключение к собранной версии АТС можно с помощью команды консоли Asterisk
core show version
module show
Показывает загруженные при работе модули, ими можно управлять как из конфигурационных файлов, так и из консоли Asterisk. Для выхода из консоли управления сервером введите команду
exit
При вводе команды make samples при сборке Asterisk создаются типовые файлы настроек, которые возможно редактировать из Терминала или с помощью различных административных панелей управления сервером Asterisk, например такой, как FreePBX. Убедитесь, что исходные настройки были созданы командой
ls /etc/asterisk
Выводы
Теперь вы знаете как выполняется установка Asterisk 16 на Debian 10. Сборка Asterisk из исходного кода позволяет оптимизировать под выбранное окружение исполняемые файлы сервера. Этот достаточно простой и проработанный процесс позволяет понять каким образом собираются проекты из исходного кода, какие элементы ОС Debian 10 использует собираемый проект.
В дальнейшем на установленный из исходного кода сервер цифровой телефонии Asterisk можно будет развернуть web-интерфейс для оптимизации управлением сервера и добавлением дополнительных функций.