====== 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 +
+-------------------------------------------+
|
Создаем конфигурационные файлы и семплы **Asterisk**.
|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
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
|