Содержание

Asterisk установка коммуникационной платформы

Установка популярной коммуникационной платформы Asterisk с открытым исходным кодом.

Подготовка к установке

Установка Asterisk достаточно проста. Поскольку некоторые пакеты будут собираться с source файлов, то необходимо установить вспомогательные пакеты.

yum groupinstall "Development tools"
yum install wget openssl openssl-devel kernel-devel kernel-headers

Отключаем SELinux:

sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config

Установка MySQL (MariaDB)

Хранить данные предпочтительно в базе, для этого установим MySQL.

Добавляем репозиторий. В файл /etc/yum.repos.d/MariaDB.repo вписываем:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Установим пакеты:

yum -y install MariaDB-client MariaDB-common MariaDB-compat MariaDB-devel MariaDB-server MariaDB-shared

Запускаем и добавляем в автозапуск:

systemctl start mariadb.service
systemctl enable mariadb.service

Не забываем выполнить первоначальную настройку базы данных выполнением команды /usr/bin/mysql_secure_installation.

Загрузка пакетов

Создаем каталог для Asterisk:

mkdir -p /usr/src/asterisk
cd /usr/src/asterisk

Загружаем необходимую версию Asterisk:

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

Ко всему прочему, нам потребуется библиотека LibPRI и модуль каналов DAHDI (Digium Asterisk Hardware Device Interface):

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

Распакуем загруженные архивы:

tar -xvf asterisk-14-current.tar.gz
tar -xvf libpri-current.tar.gz
tar -xvf dahdi-linux-complete-current.tar.gz

Установка модуля каналов DAHDI

Установка модуля каналов DAHDI должна осуществляться до установки библиотек LibPRI.

cd dahdi-linux-complete-2.11.1+2.11.1/linux
make all
make install
make config
cd dahdi-linux-complete-2.11.1+2.11.1/tools
./configure
make
make install
cd .. && make config

Переименовываем семплы в /etc/dahdi:

mv modules.sample modules
mv system.conf.sample system.conf

Добавляем сервис в автозагрузку и запускаем:

chkconfig dahdi on
service dahdi start
[root@localhost dahdi]# systemctl status dahdi.service
● dahdi.service - LSB: DAHDI kernel modules
   Loaded: loaded (/etc/rc.d/init.d/dahdi; bad; vendor preset: disabled)
   Active: active (exited) since Вс 2017-02-05 13:49:35 MSK; 2min 16s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 14067 ExecStart=/etc/rc.d/init.d/dahdi start (code=exited, status=0/SUCCESS)

фев 05 13:49:35 localhost dahdi[14067]: wctdm24xxp:  [  OK  ]
фев 05 13:49:35 localhost dahdi[14067]: wcaxx:  [  OK  ]
фев 05 13:49:35 localhost dahdi[14067]: wcfxo:  [  OK  ]
фев 05 13:49:35 localhost dahdi[14067]: wctdm:  [  OK  ]
фев 05 13:49:35 localhost dahdi[14067]: wcb4xxp:  [  OK  ]
фев 05 13:49:35 localhost dahdi[14067]: wctc4xxp:  [  OK  ]
фев 05 13:49:35 localhost dahdi[14067]: xpp_usb:  [  OK  ]
фев 05 13:49:35 localhost dahdi[14067]: /usr/share/dahdi/waitfor_xpds: line 106: astribank_is_starting: comma...found
фев 05 13:49:35 localhost dahdi[14067]: Running dahdi_cfg:  [  OK  ]
фев 05 13:49:35 localhost systemd[1]: Started LSB: DAHDI kernel modules.
Hint: Some lines were ellipsized, use -l to show in full.

Установка библиотек LibPRI

Производим установку библиотек LibPRI:

cd /usr/src/asterisk/libpri-1.6.0
make
make install

Установка сервера Asterisk

Установка Asterisk и конфигурация:

cd /usr/src/asterisk/asterisk-14.2.1
./configure --libdir=/usr/lib64

Если в процессе установки появится ошибка:

configure: error: *** termcap support not found (on modern systems, this typically means the ncurses development package is missing)

То необходимо установить дополнительные пакеты зависимости:

yum install ncurses-devel libuuid-devel libxml2-devel sqlite-devel libss7* libopen*

В случае с ошибкой на JSON необходимо собрать пакет с source-ов.

configure: error: *** JSON support not found (this typically means the libjansson development package is missing)
cd /usr/src/asterisk/ && wget http://www.digip.org/jansson/releases/jansson-2.9.tar.gz
tar -zxf jansson-2.9.tar.gz
./configure -prefix=/usr/ && make clean && make && make install && ldconfig

После этого повторно запускам конфигурацию Asterisk

В случае успешной установки получим следующий вывод:

configure: Menuselect build configuration successfully completed

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

configure: Package configured for:
configure: OS type  : linux-gnu
configure: Host CPU : x86_64
configure: build-cpu:vendor:os: x86_64 : unknown : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : unknown : linux-gnu :

Выбираем дополнительные опции и модули Asterisk (опционально)

make menuselect
---> Add-ons (See README-addons.txt)
   --- Extended ---
        XXX chan_mobile
        [*] chan_ooh323
        [*] format_mp3
        XXX res_config_mysql
        --- Deprecated ---
        XXX app_mysql
        XXX cdr_mysql
---> Core Sound Packages
         --- Core ---
         [*] CORE-SOUNDS-EN-GSM
         [*] CORE-SOUNDS-RU-GSM
---> Extras Sound Packages
         --- Core ---
         [*] EXTRA-SOUNDS-EN-GSM

Сохраняем выбор используя ключ S.

После выбора модулей завершаем установку Asterisk.

make
make install

В случае ошибки:

ROLEnc.o ooh323cDriver.o -> chan_ooh323.so
   [CC] format_mp3.c -> format_mp3.o
format_mp3.c:39:24: фатальная ошибка: mp3/mpg123.h: Нет такого файла или каталога
 #include "mp3/mpg123.h"

Выполняем contrib/scripts/get_mp3_source.sh и повторно запускаем установку.

По завершении установки получим следующее:

+---- Asterisk Installation Complete -------+
 +   +
 +    YOU MUST READ THE SECURITY DOCUMENT    +
 +                                           +
 + Asterisk has successfully been installed. +
 + If you would like to install the sample   +
 + configuration files (overwriting any      +
 + existing config files), run:              +
 +                                           +
 + For generic reference documentation:      +
 +    make samples                           +
 +                                           +
 + For a sample basic PBX:                   +
 +    make basic-pbx                         +
 +                                           +
 +                                           +
 +-----------------  or ---------------------+
 +                                           +
 + You can go ahead and install the asterisk +
 + program documentation now or later run:   +
 +                                           +
 +               make progdocs               +
 +                                           +
 + **Note** This requires that you have      +
 + doxygen installed on your local system    +
 +-------------------------------------------+

</file>|

Создаем конфигурационные файлы и семплы **Asterisk**.

|<code>make samples
make config

Добавляем сервис в автозагрузку:

chkconfig asterisk on

Создаем пользователя Asterisk.

useradd -d /var/lib/asterisk asterisk -c "Asterisk"

Задаем права на папки:

chown -R asterisk:asterisk /var/run/asterisk
chown -R asterisk:asterisk /var/log/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/www
chown -R asterisk:asterisk /var/lib/php

Для проверки установки выполняем asterisk -vc

Запускаем сервис и переходим в консоль Asterisk:

service asterisk start
asterisk -rvvvv
[root@localhost asterisk]# asterisk -rvvvv
Asterisk 14.2.1, Copyright (C) 1999 - 2016, 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.
=========================================================================
Connected to Asterisk 14.2.1 currently running on localhost (pid = 8292)
localhost*CLI> core show version
Asterisk 14.2.1 built by root @ localhost on a x86_64 running Linux on 2017-02-05 11:05:06 UTC

Добавляем правила в iptables.

iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5061 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT

Сохраняем правила.

service iptables save