Установка Asterisk на Debian 8 / Ubuntu 16.04

               .$$$$$$$$$$$$$$$=..
            .$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$$$$$$$$$.$$$$$$
       $$$$$$$$$$$$$$$$.

В данном документе не будет описана установка ОС Debian, но инструкция подразумевает, что установка Asterisk производится на свеже-поставленную систему.

Установка пакетов, необходимых в системе для сборки и установки Asterisk

apt-get install autoconf build-essential \
linux-headers-$(uname -r) libtool \
libxml2 libxml2-dev openssl libssl-dev \
libncurses5 libncurses5-dev libnewt0.52 libnewt-dev libsqlite3-dev

Загрузим необходимые архивы в каталог /opt

cd /opt
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

Другие версии для загрузки можно найти по адресу http://www.asterisk.org/downloads/asterisk/all-asterisk-versions
И распакуем архивы и посмотрим на результат (во время написания документации была актуальна версия 13.3.2, поэтому при распаковки архива asterisk-13-current.tar.gz появился соответствующий каталог. В вашем случае версия может отличаться)

tar -xf asterisk-13-current.tar.gz
tar -xf dahdi-linux-complete-current.tar.gz
tar -xf libpri-current.tar.gz

Возможный результат:

ls -lah
total 39M
drwxr-xr-x  5 root root 4.0K May 28 11:35 .
drwxr-xr-x 22 root root 4.0K Apr 23 11:08 ..
drwxr-xr-x 31 root root 4.0K May 28 12:02 asterisk-13.3.2
-rw-r--r--  1 root root  31M Apr  8 21:31 asterisk-13-current.tar.gz
drwxr-xr-x  4 root root 4.0K Feb  9 23:19 dahdi-linux-complete-2.10.1+2.10.1
-rw-r--r--  1 root root 7.3M Feb 13 01:45 dahdi-linux-complete-current.tar.gz
drwxr-xr-x  4 root root 4.0K May 28 11:40 libpri-1.4.15
-rw-r--r--  1 root root 331K Jun 16  2014 libpri-1.4-current.tar.gz

DAHDI - Digium/Asterisk Hardware Device Interface программный интерфейс для работы с оборудованием Digium и другими телефонными картами. Даже если вы не собираетесь использовать никакие аппаратные карты, DAHDI-интерфейс понадобится Asterisk-у для работы. Например, через виртуальный DAHDI-интерфейс работает конференц-связь. Сборка и установка DAHDI довольно тривиальна и совершается одной командой.

/opt# cd dahdi-linux-complete-2.10.1+2.10.1/
/opt/dahdi-linux-complete-2.10.1+2.10.1# make config

Все.

LibPRI - библиотека для работы с протоколами, используемыми для работы через ISDN-подключения (T1, E1, J1). Она необходима для Asterisk и DAHDI, если будут использоваться подобные подключения. Установка библиотеки не должна вызвать проблем

~# cd /opt/libpri-1.4.15/
/opt/libpri-1.4.15/# make && make install

Первым делом удовлетворим все зависимости для Asterisk, для этого запустим соответствующий скрипт

~# cd /opt/asterisk-13.3.2/
/opt/asterisk-13.3.2/# ./contrib/scripts/install_prereq install

Пакетов будет установлено довольно много.
После этого можно выполнять ./configure По желанию можно использовать дополнительные параметры конфигурации (например, изменить место установки Asterisk), но обычно это не требуется. Если вы укажете дополнительные параметры, обязательно задокументируйте это, обязательно пригодится.

/opt/asterisk-13.3.2/# ./configure

После успешного завершения ./configure можно выбрать компоненты Asterisk, которые будут установлены. Для этого необходимо выполнить команду:

/opt/asterisk-13.3.2/# make menuselect

Выбор по-умолчанию работоспособен, но он не включает несколько полезных вещей:

  • Add-ons → app_mysql, cdr_mysql - модуль для хранения логов звонков в mysql
  • Core Sound Packages → CORE-SOUNDS-RU - русский текст автоматического информатора разных событий, достаточно выбрать один из поддерживаемых форматов, например, ULAW (по-умолчанию в Asterisk включена поддержка всех возможных форматов, но если вы какой-либо отключили, учитывайте это при выборе набора звуков)
  • Applications → app_meetme - простой модуль для создания конференций.

После завершения выбора компонентов можно запускать установку.

/opt/asterisk-13.3.2/# make && make install && make samples

make и make install соберут Asterisk и установят его файлы в систему, а make samples установит в каталог /etc/asterisk/ примеры конфигурационных файлов, на основе которых можно построит свою конфигурацию.

Корректно будет запускать Asterisk от собственного пользователя, а не от пользователя root, поэтому выполним следующие команды

groupadd asterisk
useradd -d /var/lib/asterisk/ -g asterisk -s /bin/bash asterisk
chown -R asterisk:asterisk /etc/asterisk/
chown -R asterisk:asterisk /var/lib/asterisk/
chown -R asterisk:asterisk /var/spool/asterisk/
chown -R asterisk:asterisk /var/log/asterisk/

Для корректного создания каталога, в котором Asterisk хранит необходимые для работы временные файлы нужно воспользоваться функционалом systemd-tmpfiles.
Создайте файл /etc/tmpfiles.d/asterisk.conf следующего содержания:

asterisk.conf
d /run/asterisk 0775 asterisk asterisk -

При описанно выше установке не будет создано ни скрипта для systemd, ни init-скрипта для запуска Asterisk.

Поместите файл в каталог systemd, полный путь должен получиться /etc/systemd/system/asterisk.service и выполните systemctl daemon-reload

  • ( /etc/init.d/asterisk ) устаревший файл, в котором нет необходимости при использовании ОС с systemd

Добавление Asterisk в автозагрузку:

systemctl enable asterisk.service

Ваш комментарий. Вики-синтаксис разрешён:
   ____  ____    ____ ______
  / __/ / __ \  / __//_  __/
 _\ \  / /_/ / _\ \   / /   
/___/  \____/ /___/  /_/