Для последующих заметок мне нужно чтобы в моей локальной сети был 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.