SCROLL
Среднее время на прочтение: 5 мин.

Установка Asterisk 13 в связке с FreePBX 13 на Debian 8 Jessie/Ubuntu 14.04 Trusty Tahr. Добавление поддержки протокола SCCP.

Разберем как выполнить установку Asterisk 13 в связке с FreePBX 13 и с поддержкой протокола SCCP на Debian 8 Jessie/Ubuntu 14.04 Trusty Tahr.

 

Переходим в режим работы под root:

sudo su

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

apt-get update && apt-get upgrade -y

Устанавливаем необходимые зависимости:

apt-get install -y build-essential linux-headers-`uname -r` openssh-server apache2 mysql-server mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear php5-gd curl sox libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev libmyodbc -y

Перезагружаем систему:

reboot

После перезагрузки, не забываем снова войти под root.

Устанавливаем DAHDI

wget http://jakondo.ru/wp-content/uploads/file-manager/Asterisk/13/dahdi-linux-complete-current.tar.gz
tar -zxvf dahdi-linux-complete-current.tar.gz
cd dahdi-linux-complete-2.11.1+2.11.1/
make all
make install
make config
cd ..

Устанавливаем Libpri

wget http://jakondo.ru/wp-content/uploads/file-manager/Asterisk/13/libpri-current.tar.gz
tar -zxvf libpri-current.tar.gz
cd libpri-1.6.0/
make
make install
cd ..

Устанавливаем SRTP (библиотека для шифрования телефонных соединений)

wget http://jakondo.ru/wp-content/uploads/file-manager/Asterisk/13/libsrtp-2.0.0.tar.gz
tar -zxvf libsrtp-2.0.0.tar.gz
cd libsrtp-2.0.0/
./configure CFLAGS=-fPIC
make
make runtest
make install
cd ..

Устанавливаем Pjproject

Начиная с Asterisk 13, стабильная версия Pjproject включена в дистрибутив Asterisk. Поэтому установку Pjproject мы выполним вместе с установкой Asterisk. Но в качестве памятки, опишу как установить Pjproject и исходников:

wget http://jakondo.ru/wp-content/uploads/file-manager/Asterisk/13/pjproject-2.6.tar.bz2
tar -zjvf pjproject-2.6.tar.bz2
cd pjproject-2.6
./configure --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
make dep
make
make install
ldconfig
cd..

Устанавливаем Jansson

wget http://jakondo.ru/wp-content/uploads/file-manager/Asterisk/13/jansson-2.10.tar.gz
tar -zxvf jansson-2.10.tar.gz
cd jansson-2.10/
./configure
make
make install
ldconfig
cd ..

Установка SpanDSP (для поддержки факсов)

Если планируется использование факсов в Asterisk, то необходимо поставить SpanDSP.

wget http://jakondo.ru/wp-content/uploads/file-manager/Asterisk/13/spandsp-0.0.6.tar.gz
tar zxvf spandsp-0.0.6.tar.gz
cd spandsp-0.0.6
./configure
make
make install
cd..

 

Устанавливаем Asterisk 13

wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar -zxvf asterisk-13-current.tar.gz
cd asterisk-13.*
./contrib/scripts/install_prereq install

В процессе установки, необходимо будет задать телефонный код, оставляем по-умолчанию 7 (Россия).

 

Выполняем конфигурацию установки Asterisk включающую в себя pjproject, так же добавляем поддержку mp3 и вызываем меню установщика, где выберем необходимые нам компоненты Asterisk.

./configure --with-pjproject-bundled
./contrib/scripts/get_mp3_source.sh
make menuselect

В разделе Add-ons выбираем:

  • format_mp3
  • app_mysql (Необходимо если планируется установка FreePBX)
  • cdr_mysql (Необходимо если планируется установка FreePBX)

 

 

В пункте Core Sound Packeges выбираем основные кодеки:

  • CORE-SOUNDS-EN-ALAW
  • CORE-SOUNDS-EN-GSM 
  • CORE-SOUNDS-EN-G729
  • CORE-SOUNDS-RU-ALAW
  • CORE-SOUNDS-RU-GSM
  • CORE-SOUNDS-RU-G729

 

В пункте Music On Hold FIle Packages указываем поддержку WAV:

  • MOH-OPSOUND-WAV

 

В пункте Extras Sound Packages указываем какие дополнительные звуковые файлы необходимо установить. Русских звуков в установщике нет, поэтому выбираем поддержку только англоязычных звуков:

  • EXTRA-SOUND-EN-WAV
  • EXTRA-SOUND-EN-ALAW
  • EXTRA-SOUND-EN-GSM
  • EXTRA-SOUND-EN-G729

 

Нажимаем сохранить (F12) и выполняем установку Asterisk:

make
make install

 

Если не планируется установка FreePBX, то создаем примеры файлов конфигурации Asterisk.

make samples

[stextbox id=’info’]Если будет выполнятся установка FreePBX, то не нужно создавать примеры файлов конфигурации Asterisk. При установке FreePBX, необходимые файлы будет созданы автоматически.[/stextbox]

 

Завершаем установку Asterisk:

make config
ldconfig
update-rc.d -f asterisk remove
cd ..

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

systemctl enable asterisk

 

Создаем пользователя (asterisk), от которого будет работать asterisk. Назначаем права на каталоги asterisk и удаляем каталог сайта (apache2) по-умолчанию:

adduser asterisk --no-create-home --disabled-password --gecos "Asterisk User"
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib/asterisk

rm -rf /var/www/html

 

В файле конфигурации asterisk (/etc/default/asterisk), укажет от какого пользователя будет выполнятся запуск asterisk:

AST_USER=«asterisk»
AST_GROUP=«asterisk»

 

Если не планируется установка FreePBX, то в файле (/etc/asterisk/asterisk.conf) в разделе [files] выставляем следующую конфигурацию:

[files]
astctlpermissions = 0660
astctlowner = asterisk
astctlgroup = asterisk
astctl = asterisk.ctl

[stextbox id=’info’]Если будет выполнятся установка FreePBX, то не нужно выставлять права на файл asterisk.ctl. При установке FreePBX, все необходимые права будут выставлены.[/stextbox]

 

Теперь можно запустить Asterisk и войти в его консоль:

service asterisk start
asterisk -rv

 

Если все сделали правильно, то увидите следующее:

Asterisk 13.15.1, Copyright (C) 1999 - 2014, 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 13.15.1 currently running on sysos (pid = 1421)
Asterisk Ready

 

Установка FreePBX 13

wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
tar -zxvf freepbx-13.0-latest.tgz
cd freepbx/

Для корректной установки удаляем директорию веб сервера:

rm -rf /var/www/html

 

Вносим необходимые правки в файлы конфигураций php, apache и применяем сделанные изменения в них:

sed -i 's/\(^memory_limit = \).*/\256M/' /etc/php5/apache2/php.ini
sed -i 's/\(^upload_max_filesize = \).*/\128M/' /etc/php5/apache2/php.ini
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
service apache2 restart

 

Создаем файл конфигурации /etc/odbcinst.ini:

cat <<EOF > /etc/odbcinst.ini
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
EOF

Создаем файл конфигурации /etc/odbc.ini

cat <<EOF > /etc/odbc.ini
[MySQL-asteriskcdrdb]
Description = MySQL connection to 'asteriskcdrdb' database
Driver = MySQL
Server = localhost
Database = asteriskcdrdb
Port = 3306
Socket = /var/run/mysqld/mysqld.sock
Option = 3
EOF

 

Создадим базу данных для работы FreePBX:

mysql -u root -p
CREATE DATABASE asterisk;
CREATE DATABASE asteriskcdrdb;
GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'asterpass';
GRANT ALL PRIVILEGES ON asteriskcdrdb.* to asteriskuser@localhost IDENTIFIED BY 'asterpass';
FLUSH PRIVILEGES;
EXIT

 

Запускаем Asterisk и выполняем установку FreePBX:

./start_asterisk start
./install -n --dbuser=asteriskuser --dbpass=asterpass

 

Установка завершена, через Web браузер заходим в консоль FreePBX.

 

Поддержка SCCP протокола в Asterisk 13

wget http://jakondo.ru/wp-content/uploads/file-manager/Asterisk/SCCP/asterisk-chan-sccp_4.3.0.orig.tar.gz
tar -zxvf asterisk-chan-sccp_4.3.0.orig.tar.gz
cd chan-sccp-4.3.451.g4236401/

Установка протокола SCCP, различается в зависимости как установлен Asterisk, с использованием FreePBX или нет. Рассмотрим оба варианта.

 

Установлен чистый Asterisk
./configure
make 
make install 
cd ..

Выполним конфигурацию Asterisk, на работу с SCCP. Редактируем файл:

nano /etc/asterisk/modules.conf

Добавляем следующие параметры:

noload => chan_skinny.so
load => chan_sccp.so
load => res_features.so

Рестарт ядра Asterisk и проверяем работу SCCP протокола:

asterisk -rv
core restart now

asterisk -rv
sccp show devices

Вывод:

+--- Devices --------------------------------------------------+
| Descr Address Mac RegSt ate Token RegTime Act Lines Nat      |
+ =============================================================+
| Phone Number One -- SEP001122334455 None None None No 0 Auto |
| Phone Number Two -- SEP002244668800 None None None No 0 Auto |
+--------------------------------------------------------------+

 

Установленный Asterisk + FreePBX 13

Выполняем конфигурацию и установку протокола SCCP:

./configure
make 
make install 
cd ..

Выполним конфигурацию Asterisk, на работу с SCCP. Открываем FreePBXAsterisk Module (Модули Asterisk)

 

Вкладка Excluded Module (Исключенные модули) , добавляем:

noload => chan_skinny.so

Вкладка Manually Loaded Modules (Модули, загруженные вручную), добавляем:

load => chan_sccp.so 
load => res_features.so

 

Рестарт amportal и входим в консоль для проверки работы SCCP протокола:

amportal restart
asterisk -rvvvvvvvvv
sccp show devices

Вывод:

+--- Devices --------------------------------------------------+
| Descr Address Mac RegSt ate Token RegTime Act Lines Nat      |
+ =============================================================+
| Phone Number One -- SEP001122334455 None None None No 0 Auto |
| Phone Number Two -- SEP002244668800 None None None No 0 Auto |
+--------------------------------------------------------------+

 

На этом установка Asterisk 13 + FreePBX 13 SCCP завершена.

 

Понравилась или оказалась полезной статья, поблагодари автора

 

Обсуждение

11 комментариев
  • Здравствуйте при выполнении команды ./configure для установки протокола sccp выдает ошибку
    Checking Configure Options:
    checking pkg-config asterisk… ./configure: line 23014: test1: command not found

    configure: astmoddir could not be found in /etc/asterisk/asterisk.conf (your asterisk.conf file is faulty or not readable). Note: Path separators use ‘=>’, not ‘=’

    configure: astvarlibdir could not be found in /etc/asterisk/asterisk.conf (your asterisk.conf file is faulty or not readable). Note: Path separators use ‘=>’, not ‘=’

    configure: astsbindir could not be found in /etc/asterisk/asterisk.conf (your asterisk.conf file is faulty or not readable). Note: Path separators use ‘=>’, not ‘=’
    found

    configure: error: astmoddir could not be established, giving up
    В чем проблема?
    И еще в инструкции у Вас нет команд в строках:
    Установленный Asterisk + FreePBX 13
    В файле /etc/asterisk/, приводим строки к виду:

    Какие тут строки и к какому виду их привести?И в каком файле?Выше указан только каталог у Вас.

    Заранее благодарен.

  • Куда копать ?

    mysql> EXIT
    Bye
    root@debian:/usr/src/freepbx# ./start_asterisk start

    STARTING ASTERISK
    Asterisk is already running
    root@debian:/usr/src/freepbx# ./install -n —dbuser=asteriskuser —dbpass=asterpass
    Checking if SELinux is enabled…Its not (good)!
    Reading /etc/asterisk/asterisk.conf…Done
    Checking if Asterisk is running and we can talk to it as the ‘asterisk’ user…Error!
    Error communicating with Asterisk. Ensure that Asterisk is properly installed and running as the asterisk user
    Asterisk appears to be running as asterisk
    Try starting Asterisk with the ‘./start_asterisk start’ command in this directory
    root@debian:/usr/src/freepbx#

    • Это ответ на комментарий Игорь

      Копать в сторону правильности выполнения всего что написано в статье.. вы явно что то не так сделали.

      • Это ответ на комментарий Жаконда

        Два раза устанавливал по шагам, всё ровно ошибка после ./install -n —dbuser=asteriskuser —dbpass=asterpass

        ошибка «Error!
        Error communicating with Asterisk. Ensure that Asterisk is properly installed and running as the asterisk user
        Asterisk appears to be running as asterisk
        Try starting Asterisk with the ‘./start_asterisk start’ command in this directory»

        на форумах пишут, что нет директории для пользователя asterisk

        • Это ответ на комментарий Вячеслав

          Не могу сказать, на момент написания статьи все было актуально, не однократно копипастой разворачивал АТС.
          Попробуйте использовать https://jakondo.ru/ustanovka-freepbx-14-v-svyazke-s-asterisk-16-na-debian-9-stretch/ актуальные версии как asterisk так и FreePBX. Буквально дав дня назад по статье копипаста все успешно развернулось.

  • Здравствуйте. Подскажите, пожалуйста, в чем может быть проблема? sccp show devices телефон видит, если позвонить с SIP телефона на SCCP, то астериск закрывается. Если с SCCP на SIP. то звонок проходит, голоса с двух сторон слышно, но после завершения разговора также закрывается. Заранее благодарен за помощь, в астериске не силен.

    • Это ответ на комментарий Роман

      Добрый вечер! Анализируйте логи, что вывод астериск в консоли при звонке. Я с таким явлением не сталкивался, поэтому не могу сказать что может быть причиной.

  • E: Для пакета «php5» не найден кандидат на установку
    E: Для пакета «php5-curl» не найден кандидат на установку
    E: Для пакета «php5-cli» не найден кандидат на установку
    E: Для пакета «php5-mysql» не найден кандидат на установку
    E: Для пакета «php5-gd» не найден кандидат на установку
    E: Для пакета «libmysqlclient-dev» не найден кандидат на установку
    E: Для пакета «libmyodbc» не найден кандидат на установку

    Что добавить в sources.list ?