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