Для последующих заметок мне нужно чтобы в моей локальной сети был Asterisk 16 on Ubuntu 18.04. Чтобы было все самое последнее и актуальное на 27.11.2019

Шаг №1: После разворачивания образа системы Ubuntu 18.04 Server через FOG

ekzorchik@srv-bionic:~$ hg clone --insecure https://ekzorchik@172.35.35.8/hg/dproject

ekzorchik@srv-bionic:~$ sudo ./dproject/default

ekzorchik@srv-bionic:~$ sudo reboot

ekzorchik@srv-bionic:~$ uname -a && lsb_release -a

Linux srv-bionic 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 05:24:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 18.04.3 LTS

Release: 18.04

Codename: bionic

Собирать установку Asterisk 16 буду из исходников.

Как и ранее инсталляция сводится к порядку: DAHDI, LibPRI, libSTRP, Jansson

Шаг №2: Устанавливаю зависимости для сборки Asterisk из исходников:

ekzorchik@srv-bionic:~$ sudo apt-get install -y build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev

Шаг №3: Устанавливаю DAHDI, LibPRI, libSTRP, Jansson

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

tar zxf dahdi-linux-complete-current.tar.gz

cd dahdi-linux-complete-*/

sudo make all

sudo make install

cd ~/

wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz

tar zxf libpri-current.tar.gz

cd libpri-*/

sudo make -j$((`nproc`+1))

sudo make install

cd ~/

wget https://github.com/cisco/libsrtp/archive/master.zip

unzip master.zip

cd libsrtp-master/

./configure

sudo make -j$((`nproc`+1))

sudo make runtest

sudo make install

cd ~/

wget http://www.digip.org/jansson/releases/jansson-2.12.tar.gz

tar zxf jansson-2.12.tar.gz

cd jansson-*/

./configure

sudo make -j$((`nproc`+1))

sudo make install

cd ~/

Шаг №4: Теперь собираю Asterisk 16 из исходников

cd /usr/src

sudo wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz

sudo tar zxf asterisk-16-current.tar.gz

sudo ./asterisk-*/contrib/scripts/install_prereq install

Do you want to continue? [Y/n] Y

ITU-T telephone code:7

cd asterisk-*/

Узнаем доступные опции ./configure --help

ekzorchik@srv-bionic:/usr/src/asterisk-*$ sudo ./configure --help

А после переходим к своему выбору конфигурирования:

sudo ./configure

sudo make menuselect

Отмечаю необходимые мне модули:

  • Add-ons: отмечаю клавишей ENTER: format_mp3, res_config_mysql, app_mysql,cdr_mysql
  • Call Detail Recording: снимаю отметку с cdr_radius, cdr_pgsql
  • Channel Event Logging: снимаю отметку с cel_pgsql, cel_radius
  • Core Sound Packages: отмечаю CORE-SOUNDS-EN-WAV,CORE-SOUNDS-EN-ULAW,CORE-SOUND-EN-ALAW,CORE-SOUNDS-RU-WAV,CORE-SOUNDS-RU-ULAW,CORE-SOUNDS-RU-ALAW,CORE-SOUNDS-RU-GSM
  • Music On Hold File Packages: MOH-OPSOUND-WAV,MOH-OPSOUND-ULAW,MOH-OPSOUND-ALAW,MOH-OPSOUND-GSM
  • Extras Sound Packages: отмечаю EXTRA-SOUNDS-EN-WAV, EXTRA-SOUNDS-EN-ULAW,EXTRA-SOUNDS-EN-ALAW, EXTRA-SOUNDS-EN-GSM

После нажимаю Save & Exit

sudo make -j$((`nproc`+1))

sudo make install

sudo make samples

sudo make config

sudo ldconfig

cd ~/

Шаг №5: Теперь делаем чтобы сервис работал не из под root, а из под своей учетной записи:

sudo groupadd asterisk

sudo useradd -d /var/lib/asterisk -g asterisk asterisk

sudo sed -i 's/#AST_USER="asterisk"/AST_USER="asterisk"/g' /etc/default/asterisk

sudo sed -i 's/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/g' /etc/default/asterisk

sudo sed -i 's/;runuser = asterisk/runuser = asterisk/g' /etc/asterisk/asterisk.conf

sudo sed -i 's/;rungroup = asterisk/rungroup = asterisk/g' /etc/asterisk/asterisk.conf

sudo chown -R asterisk:asterisk /var/spool/asterisk /var/run/asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib/asterisk

sudo systemctl restart asterisk

sudo asterisk -rv

Asterisk 16.6.2, Copyright (C) 1999 - 2018, Digium, Inc. and others.

Created by Mark Spencer <markster@digium.com>

Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.

This is free software, with components licensed under the GNU General Public

License version 2 and other licenses; you are welcome to redistribute it under

certain conditions. Type 'core show license' for details.

=========================================================================

Running as user 'asterisk'

Running under group 'asterisk'

Connected to Asterisk 16.6.2 currently running on srv-bionic (pid = 18085)

srv-bionic*CLI> quit

Asterisk cleanly ending (0).

Executing last minute cleanups

После разворачивания Asterisk 16 Current Version у меня почему не работает Asterisk, хотя сервис запущен:

ekzorchik@srv-bionic:~$ sudo systemctl status asterisk

● asterisk.service - LSB: Asterisk PBX

Loaded: loaded (/etc/init.d/asterisk; generated)

Active: active (exited) since Wed 2019-11-27 16:47:40 MSK; 6min ago

Docs: man:systemd-sysv-generator(8)

Process: 787 ExecStop=/etc/init.d/asterisk stop (code=exited, status=0/SUCCESS

Process: 795 ExecStart=/etc/init.d/asterisk start (code=exited, status=0/SUCCE

Nov 27 16:47:40 srv-bionic systemd[1]: Stopped LSB: Asterisk PBX.

Nov 27 16:47:40 srv-bionic systemd[1]: asterisk.service: Found left-over process

Nov 27 16:47:40 srv-bionic systemd[1]: This usually indicates unclean terminatio

Nov 27 16:47:40 srv-bionic systemd[1]: Starting LSB: Asterisk PBX...

Nov 27 16:47:40 srv-bionic asterisk[795]: * Starting Asterisk PBX: asterisk

Nov 27 16:47:40 srv-bionic asterisk[795]: /usr/sbin/asterisk already running.

Nov 27 16:47:40 srv-bionic asterisk[795]: ...done.

Nov 27 16:47:40 srv-bionic systemd[1]: Started LSB: Asterisk PBX.

ekzorchik@srv-bionic:~$

Но вот система на ожидает какого-либо поступления на порт 5060 (дефолтный)

в логах

ekzorchik@srv-bionic:~$ sudo tail -f /var/log/asterisk/messages

[Nov 27 16:23:42] NOTICE[576] cel_tds.c: cel_tds has no global category, nothing to configure.

[Nov 27 16:23:42] WARNING[576] cel_tds.c: cel_tds module had config problems; declining load

[Nov 27 16:23:42] ERROR[576] codec_dahdi.c: Failed to open /dev/dahdi/transcode: No such file or directory

[Nov 27 16:23:42] WARNING[576] loader.c: Some non-required modules failed to load.

[Nov 27 16:23:42] ERROR[576] loader.c: res_timing_dahdi declined to load.

[Nov 27 16:23:42] ERROR[576] loader.c: res_pjsip_transport_websocket declined to load.

[Nov 27 16:23:42] ERROR[576] loader.c: cdr_tds declined to load.

[Nov 27 16:23:42] ERROR[576] loader.c: cdr_sqlite3_custom declined to load.

[Nov 27 16:23:42] ERROR[576] loader.c: cel_sqlite3_custom declined to load.

[Nov 27 16:23:42] ERROR[576] loader.c: cel_tds declined to load.

^C

ekzorchik@srv-bionic:~$

видимо из-за модулей:

ekzorchik@srv-bionic:~$ cat /etc/asterisk/modules.conf | grep -v ";\|^$"

ekzorchik@srv-bionic:~$ sudo nano /etc/asterisk/modules.conf

[modules]

autoload=yes

noload => chan_alsa.so
noload => chan_console.so
noload => res_hep.so
noload => res_hep_pjsip.so
noload => res_hep_rtcp.so
noload => cel_tds.so
noload => res_timing_dahdi.so
noload => cdr_sqlite3.so
noload => res_pjsip_transport_websocket.so
noload => cdr_sqlite3_custom.so
noload => chan_skinny.so
noload => chan_dahdi.so
noload => cel_custom.so
noload => conf_config_parser.so

noload => res_pjsip.so
noload => res_pjsip_pubsub.so
noload => res_pjsip_session.so
noload => chan_pjsip.so
noload => res_pjsip_exten_state.so
noload => res_pjsip_log_forwarder.so
noload => res_pjsip_rfc3326.so
noload => res_pjsip_messaging.so
noload => res_pjsip_pidf_eyebeam_body_supplement.so
noload => func_pjsip_contact.so
noload => res_pjsip_refer.so
noload => res_pjsip_outbound_publish.so
noload => res_pjsip_acl.so
noload => res_pjsip_pidf_body_generator.so

ekzorchik@srv-bionic:~$ sudo systemctl restart asterisk && sudo systemctl status asterisk | head -n5

● asterisk.service - LSB: Asterisk PBX

Loaded: loaded (/etc/init.d/asterisk; generated)

Active: active (running) since Wed 2019-11-27 17:18:19 MSK; 16ms ago

Docs: man:systemd-sysv-generator(8)

Process: 1063 ExecStop=/etc/init.d/asterisk stop (code=exited, status=0/SUCCESS)

ekzorchik@srv-bionic:~$ sudo netstat -tulpn | grep :5060

udp 0 0 0.0.0.0:5060 0.0.0.0:* 969/asterisk

ekzorchik@srv-bionic:~$

Вот из-за какого-то модуля мой Asterisk не стартовал. Теперь все нормально.

Итого я получил заготовку развернутого сервиса по организации телефонии базирующейся на Asterisk 16 + Ubuntu 18.04.3 Server amd64

На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.