Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14

Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14

Ранее (год назад) мы рассматривали как установить Asterisk 13 на Debian 8.10. Но данная статья устарела и мне хотелось бы поделиться свежей инструкцией. Статья будет большой, но насыщенный поэтому приготовьтесь. Мы будем “готовить” сервер IP-телефонии для вашей организации. Также произведем минимальную настройку безопасности, системы и Asterisk 13.

Все пакеты, которые мы будем устанавливать являются LTS или Stable. Установка будет производится на “чистый” Debian 8.11, без дополнительных пакетов и без окружения рабочего стола.
Из чего мы будем “готовить” наш сервер IP-телефонии на платформе Asterisk:
  • Debian 8.11
  • Asterisk-13-Current (LTS)
  • PHP-5.6
  • MariaDB 10.3 (Stable)
  • Apache2
  • FreePBX 14

Содержание

Преамбула

O Debian

Проект Debian с радостью сообщает, что 23.06.2018 вышло 11-е (и последнее) обновление своего последнего предыдущего стабильного выпуска Debian 8 (кодовое имя “Jessie”). Это обновление в основном содержит исправления проблем безопасности, а также несколько корректировок серьёзных проблем. Рекомендации по безопасности опубликованы отдельно и указываются при необходимости. Поддержка Debian 8 “Jessie” заканчивается 30.06.2020 года.
После выпуска данной редакции команды безопасности и выпусков Debian более не будут работать над обновлениями Debian 8. Пользователи, желающие продолжать получать поддержку безопасности должны выполнить обновление до Debian 9, либо обратиться к странице https://wiki.debian.org/LTS, на которой приводится подмножество архитектур и пакетов, которые будут поддерживаться в рамках проекта долгосрочной поддержки.

Об Asterisk

Asterisk 16.x еще не вышел и дата релиза намечена на 17.10.2018, поэтому мы будем устанавливать Asterisk 13.x так как он является версией LTS и срок окончания поддержки закончится 24.10.2021 г. Более подробно узнать о версиях Asterisk можно на странице https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions. Если вы наблюдаете ошибки в работе вашей “Звездочки”, вы можете сообщить об этом в официальный трекер Asterisk https://issues.asterisk.org.

О MariaDB

MariaDB Server – это база данных с открытым исходным кодом. По умолчанию присутствует в установочных дистрибутивах Linux – Arch Linux, CentOS, Debian, Fedora, Manjaro, openSUSE, Red Hat Enterprise Linux, SUSE Linux Enterprise. Данная БД является первой базой с открытым исходным кодом и со встроенной совместимостью Oracle Database, временными таблицами и запросами, а также с несколькими целенаправленными механизмами хранения, поддерживающие различные рабочие нагрузки. Рекомендуемые механизмы хранения:
  • InnoDB для смешанных и нагрузок с интенсивным чтением данных;
  • MyRocks для интенсивной работы с записью данных на твердотельные накопители (SSDs);
  • Spider для рабочих нагрузок, требующий высокой масштабируемости и согласованности;
  • ColumnStore для аналитических рабочих нагрузок (доступно в MariaDB AX).
MyRocks – механизм хранения данных, разработанный компанией Facebook для поддержки рабочих нагрузок, требующих высокой производительности записи и эффективности хранения на твердотельных накопителях (SSDs).
Spider – распределенный механизм хранения для масштабирования операций чтения, записи и/или хранения с несколькими узлами БД для рабочих нагрузок, требующих максимальной масштабируемости и согласованности.
Совместимость с Oracle Database – MariaDB Server поддерживает синтаксис БД Oracle для подготовленных операторов, последовательностей и типов данных, а также хранимых процедур и функций, написанных в Oracle PL/SQL пакетах.
Безопасность MariaDB – Сервер MariaDB оснащен подключаемой аутентификацией, проверкой надежности пароля, ролями, прозрачным шифрованием данных (TDE) с внешним управлением ключами или без него, зашифрованными временными файлами и аудитом.

Описательная часть окончена, приступим к настройке системы и установки сервера IP-телефонии.

Установка и настройка пакетов должна производится от имени пользователя root. При попытке использования “sudo” могут возникнуть коллизии при установке пакетов. Если установка осуществляется дистанционно, используя SSH, временно разрешите авторизацию пользователю root.
ВАЖНО! По окончании установки отключите авторизацию root по SSH

1. Настройка ОС Debian 8.11

Мы произвели “чистую” установку ОС Debian 8.11, скаченного из официального дистрибутива.

1.1 Установка репозиториев

Перед использованием репозиториев установки пакетов и обновлений, необходимо установить следующие пакеты:

apt-get install curl wget apt-transport-https dirmngr

В конечном счете файл /etc/apt/sources.list для Debian 8 Jessie будет выглядеть примерно следующим образом (пример взять из официального дистрибутива без каких-либо правок):

#------------------------------------------------------------------------------#
#                   OFFICIAL DEBIAN REPOS                    
#------------------------------------------------------------------------------#
###### Debian Main Repos
deb http://deb.debian.org/debian/ oldstable main contrib non-free
deb-src http://deb.debian.org/debian/ oldstable main contrib non-free

deb http://deb.debian.org/debian/ oldstable-updates main contrib non-free
deb-src http://deb.debian.org/debian/ oldstable-updates main contrib non-free

deb http://deb.debian.org/debian-security oldstable/updates main
deb-src http://deb.debian.org/debian-security oldstable/updates main

deb http://ftp.debian.org/debian jessie-backports main
deb-src http://ftp.debian.org/debian jessie-backports main

1.2 Установка Open-SSH Server

Для того, чтобы дальнейшую установку производить дистанционно, установим Open-SSH сервер:

apt-get install openssh-server

Разрешим авторизацию пользователю root по SSH:

sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
service ssh restart

1.3 Обновление и установка системных пакетов

Дальнейшая установка будет производится дистанционно, используя подключение по SSH.

apt-get install bash bash-completion sudo vim htop iftop nmap unzip mc ntpdate
apt-get update && apt-get upgrade -y
reboot

2. Установка сервера IP-телефонии

2.1 Подготовка перед установкой MariaDB Server

apt-get install software-properties-common
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb [arch=amd64,i386] http://ftp.hosteurope.de/mirror/mariadb.org/repo/10.3/debian jessie main'
add-apt-repository 'deb-src http://ftp.hosteurope.de/mirror/mariadb.org/repo/10.3/debian jessie main'

2.2 Установим необходимые пакеты

apt-get install -y build-essential linux-headers-`uname -r` subversion gcc lynx apache2 bison flex mariadb-server mariadb-client libmariadb2 libmariadbd-dev libmariadb-client-lgpl-dev php5 php5-mysql php-pear php5-mcrypt php5-curl php5-cli php5-gd libapache2-mod-php5 phpmyadmin libncurses5-dev libssl-dev mpg123 libpng12-0 libxml2-dev libxml2 libcurl3 libnewt-dev sqlite3 libsqlite3-dev pkg-config bzip2 make automake libtool autoconf git unixodbc unixodbc-dev uuid uuid-dev libasound2-dev sox libogg-dev libvorbis-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev libpjsip2 libpjsip-simple2 libpjproject-dev sendmail sendmail-cf

В процессе установки потребуется установить пароль root для базы данных MariaDB:

Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14

Затем повторить введенный пароль:
Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14
И выбрать для какого WEB-сервера устанавливается MariaDB-server. Выбираем Apache2:
Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14
При установке PhpMyAdmin потребуется установить и настроить его базу данных:
Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14
Ввести пароль от администратора базы данных MariaDB, установленный на предыдущем шаге:
Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14
Ввести пароль административного пользователя phpmyadmin:
Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14
Подтвердить введенный пароль:
Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14
В процессе установки пакетов, также появится сообщение об ошибке:

*** *** *** WARNING *** WARNING *** WARNING *** WARNING *** *** ***
Everything you need to support STARTTLS (encrypted mail transmission
and user authentication via certificates) is installed and configured
but is *NOT* being used.

To enable sendmail to use STARTTLS, you need to:
1) Add this line to /etc/mail/sendmail.mc and optionally
to /etc/mail/submit.mc:
include(`/etc/mail/tls/starttls.m4')dnl
2) Run sendmailconfig
3) Restart sendmail

Updating /etc/hosts.allow, adding "sendmail: all".

Не обращаем внимание, к Sendmail вернёмся позже.

2.3 Установим дополнительные пакеты для нашего Asterisk

apt-get install fontconfig freetds-common fxload gnupg-agent gnupg2 hicolor-icon-theme libassuan0 libatk1.0-0 libatk1.0-data libcairo2 libcfg4 libcoroipcc4 libcpg4 libdatrie1 libfreeradius-client2 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgmime-2.6-0 libgpgme11 libgraphite2-3 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libharfbuzz0b libiksemel3 libksba8 libneon27-gnutls libopenr2-3 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libperl5.20 libpixman-1-0 libpq5 libpri1.4 libpth20 libresample1 libsensors4 libsnmp-base libsnmp30 libsqlite0 libss7-1 libsybdb5 libthai-data libthai0 libtonezone2.0 libxcb-render0 libxcb-shm0 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxi6 libxinerama1 libxrandr2 libxrender1 pinentry-gtk2 python-dev libmysqlclient-dev libmyodbc libtool-bin

2.4 Установка NodeJS

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
apt-get install -y nodejs

2.5 Перезапускаем систему

reboot

2.6 Скачаем пакеты: DAHDI, LibPRI, Asterisk, Jansson

cd /usr/src &&
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz &&
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz &&
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz &&
wget http://www.digip.org/jansson/releases/jansson-2.11.tar.gz

2.7 Установка и компиляция DAHDI

Если у вас нет физического оборудования PSTN, подключенного к этому серверу, вам не нужно устанавливать DAHDI. (Например, карта T1 или E1 или устройство USB). У большинства более мелких установок не будет аппаратного обеспечения DAHDI, и этот шаг можно безопасно пропустить.

cd /usr/src &&
tar xvfz dahdi-linux-complete-current.tar.gz &&
cd dahdi-linux-complete-* &&
make all &&
make install &&
make config

2.8 Установка и компиляция LibPRI

cd /usr/src &&
tar xvfz libpri-current.tar.gz &&
cd libpri-* &&
make &&
make install

2.9 Распакуем и установим Jansson

cd /usr/src &&
tar vxfz jansson-*.tar.gz &&
cd jansson-* &&
autoreconf -i &&
./configure &&
make &&
make install

2.10 Распакуем и установим Asterisk 13

cd /usr/src &&
tar xvfz asterisk-13-current.tar.gz &&
cd asterisk-13.* &&
contrib/scripts/get_mp3_source.sh &&
contrib/scripts/install_prereq install &&
./configure --libdir=/usr/lib64 &&
make menuselect

В открывшемся окне необходимо указать код страны 7

Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14
В процессе запуска make menuselect следует выбрать необходимые вам модули и опции. Я выбрал следующие:
  • chan_ooh323
  • format_mp3
  • res_config_mysql
  • app_fax
  • app_meetme
  • cdr_mysql (Необходим для FreePBX)
  • app_mysql (Необходим для FreePBX)

Также убрал канальные драйверы:

  • chan_motif
  • chan_alsa
  • cnah_mgcp
  • chan_oss
  • chan_skinny
  • chan_unistim

Добавил кодеки:

  • codec_opus
  • codec_g729a

Убрал модули PBX (PBX Modules):

  • pbx_ael
  • pbx_dundi
  • pbx_lua

Добавил модули (Resource Modules):

  • res_fax
  • res_fax_spandsp

Добавляем звуковые пакеты (Core Sound Packeges):

  • CORE-SOUND-RU-WAV
  • CORE-SOUND-RU-ALAW

После того, как модули выбраны жмем Save & Exit и продолжаем установку:

Если будет выполнятся установка FreePBX, то не нужно создавать примеры файлов конфигурации Asterisk (make samples). При установке FreePBX, необходимые файлы будет созданы автоматически.

make && make install && make config && make samples && ldconfig

2.11 Запуск Asterisk от одноименного пользователя

Для большей безопасности не будем разрешить работать Asterisk PBX под пользователем root, создаем нового пользователя asterisk, под которым будет работать наша телефония.

adduser --system --group --home /var/lib/asterisk --no-create-home --disabled-password --gecos "Asterisk PBX" asterisk &&
usermod -a -G dialout,audio asterisk

2.12 Настройка запуска Asterisk

В файле /etc/default/asterisk необходимо раскомментировать пользователя и группу, под которыми будет запускаться Asterisk:
sed -i 's/#AST_USER="asterisk"/AST_USER="asterisk"/' /etc/default/asterisk &&
sed -i 's/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/' /etc/default/asterisk

2.13 Устанавливаем права на файлы и каталоги

chown -R asterisk:asterisk /var/lib/asterisk &&
chown -R asterisk:asterisk /var/log/asterisk &&
chown -R asterisk:asterisk /var/run/asterisk &&
chown -R asterisk:asterisk /var/spool/asterisk &&
chown -R asterisk:asterisk /usr/lib/asterisk &&
chown -R asterisk:asterisk /etc/asterisk &&
chmod -R u=rwX,g=rX,o=rX /var/lib/asterisk &&
chmod -R u=rwX,g=rX,o=rX /var/log/asterisk &&
chmod -R u=rwX,g=rX,o=rX /var/run/asterisk &&
chmod -R u=rwX,g=rX,o=rX /var/spool/asterisk &&
chmod -R u=rwX,g=rX,o=rX /usr/lib/asterisk &&
chmod -R u=rwX,g=rX,o=rX /etc/asterisk

2.14 Произведем модификацию Apache2 для дальнейшей работы с FreePBX 14:

sed -i 's/(^upload_max_filesize = ).*/120M/' /etc/php5/apache2/php.ini &&
sed -i 's/(^memory_limit = ).*/256M/' /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

2.15 Настроим ODBC

2.15.1 Редактируем файл /etc/odbcinst.ini:

cat >> /etc/odbcinst.ini << EOF
# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[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

2.15.2 Редактируем файл /etc/odbc.ini

Этот файл служит для создания идентификатора для Asterisk 13. Asterisk будет ссылаться на название, указанное в этом файле. Приводим в соответствие:
cat >> /etc/odbcinst.ini << EOF
[MySQL-asteriskcdrdb]
Description=MySQL Asterisk database         ;Любое описание
Driver=MySQL                                ; Используемый драйвер
Server=localhost                            ; Сервер, где установлен MySQL
User=asteriskcdruser                        ; Пользователь БД для CDR
Password=your_password_from_database        ; Пароль пользователя БД
Database=asteriskcdrdb                      ; База данных MySQL
Port=3306
Socket=/var/run/mysqld/mysqld.sock
Option=3
EOF

Более детальная настройка ODBC и подключение к Asterisk к БД через ODBC рассмотрена в статье.

2.16 Настроим БД MariaDB

После установки MariaDB в PhpMyAdmin вы увидите сообщение: В конфигурационном файле необходимо задать парольную фразу (blowfish_secret). Исправляем:

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
vim /usr/share/phpmyadmin/config.inc.php
$cfg['blowfish_secret'] = 'Тут_указать_32_символа';

Для генерации пароля blowfish можно воспользоваться этим сервисом

2.16.1 Тип хранения данных по умолчанию

Если необходимо изменить тип хранения данных по умолчанию, добавьте в файл my.cnf следующие строки:

[mysqld]
default-storage-engine = innodb

2.16.2 Создадим БД asteriskcdrdb через phpmyadmin

На вкладке SQL выполнить следующее:

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- База данных: `asteriskcdrdb`
--
CREATE DATABASE IF NOT EXISTS `asteriskcdrdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `asteriskcdrdb`;

-- --------------------------------------------------------

--
-- Структура таблицы `cdr`
--

DROP TABLE IF EXISTS `cdr`;
CREATE TABLE IF NOT EXISTS `cdr` (
`id` int(10) NOT NULL,
`calldate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL DEFAULT '',
`src` varchar(80) NOT NULL DEFAULT '',
`realsrc` varchar(80) NOT NULL,
`dst` varchar(80) NOT NULL DEFAULT '',
`realdst` varchar(80) NOT NULL DEFAULT '',
`dcontext` varchar(80) NOT NULL DEFAULT '',
`channel` varchar(80) NOT NULL DEFAULT '',
`dstchannel` varchar(80) NOT NULL DEFAULT '',
`lastapp` varchar(80) NOT NULL DEFAULT '',
`lastdata` varchar(80) NOT NULL DEFAULT '',
`duration` int(11) NOT NULL DEFAULT '0',
`billsec` int(11) NOT NULL DEFAULT '0',
`disposition` varchar(45) NOT NULL DEFAULT '',
`amaflags` int(11) NOT NULL DEFAULT '0',
`remoteip` varchar(60) NOT NULL DEFAULT '',
`accountcode` varchar(20) NOT NULL DEFAULT '',
`hangupcause` varchar(50) NOT NULL,
`peerip` varchar(50) NOT NULL,
`recvip` varchar(50) NOT NULL,
`useragent` varchar(50) NOT NULL,
`uri` varchar(50) NOT NULL,
`fromuri` varchar(50) NOT NULL,
`peeraccount` varchar(20) NOT NULL DEFAULT '',
`uniqueid` varchar(32) NOT NULL DEFAULT '',
`userfield` varchar(255) NOT NULL DEFAULT '',
`did` varchar(50) NOT NULL DEFAULT '',
`linkedid` varchar(32) NOT NULL DEFAULT '',
`sequence` int(11) NOT NULL DEFAULT '0',
`filename` varchar(255) DEFAULT 'none',
`recordingfile` varchar(255) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=21758 DEFAULT CHARSET=utf8;

--
-- Триггеры `cdr`
--
DROP TRIGGER IF EXISTS `t_cdr`;
DELIMITER //
CREATE TRIGGER `t_cdr` BEFORE INSERT ON `cdr`
FOR EACH ROW BEGIN
IF ((NEW.dst = 's' OR NEW.dst = '~~s~~') AND NEW.realdst != '') THEN
SET NEW.dst = NEW.realdst;
END IF;
END
//
DELIMITER ;

-- --------------------------------------------------------

--
-- Структура таблицы `cel`
--

DROP TABLE IF EXISTS `cel`;
CREATE TABLE IF NOT EXISTS `cel` (
`id` int(11) NOT NULL,
`eventtype` varchar(30) NOT NULL,
`eventtime` datetime NOT NULL,
`cid_name` varchar(80) NOT NULL,
`cid_num` varchar(80) NOT NULL,
`cid_ani` varchar(80) NOT NULL,
`cid_rdnis` varchar(80) NOT NULL,
`cid_dnid` varchar(80) NOT NULL,
`exten` varchar(80) NOT NULL,
`context` varchar(80) NOT NULL,
`channame` varchar(80) NOT NULL,
`src` varchar(80) NOT NULL,
`dst` varchar(80) NOT NULL,
`channel` varchar(80) NOT NULL,
`dstchannel` varchar(80) NOT NULL,
`appname` varchar(80) NOT NULL,
`appdata` varchar(80) NOT NULL,
`amaflags` int(11) NOT NULL,
`accountcode` varchar(20) NOT NULL,
`uniqueid` varchar(32) NOT NULL,
`linkedid` varchar(32) NOT NULL,
`peer` varchar(80) NOT NULL,
`userdeftype` varchar(255) NOT NULL,
`eventextra` varchar(255) NOT NULL,
`userfield` varchar(255) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=207114 DEFAULT CHARSET=utf8;

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `cdr`
--
ALTER TABLE `cdr`
ADD PRIMARY KEY (`id`), ADD KEY `calldate` (`calldate`), ADD KEY `src` (`src`), ADD KEY `dst` (`dst`), ADD KEY `accountcode` (`accountcode`), ADD KEY `uniqueid` (`uniqueid`), ADD KEY `dcontext` (`dcontext`), ADD KEY `clid` (`clid`), ADD KEY `did` (`did`), ADD KEY `id` (`id`);

--
-- Индексы таблицы `cel`
--
ALTER TABLE `cel`
ADD PRIMARY KEY (`id`), ADD KEY `uniqueid_index` (`uniqueid`), ADD KEY `linkedid_index` (`linkedid`);

--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `cdr`
--
ALTER TABLE `cdr`
MODIFY `id` int(10) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=21758;
--
-- AUTO_INCREMENT для таблицы `cel`
--
ALTER TABLE `cel`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=207114;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Для создания БД без использования phpmyadmin, необходимо авторизоваться в mysql:

mysql -u root -p

и ввести код из п. 2.16.2

2.16.3 Создание пользователя asteriskcdruser с правами на БД через phpmyadmin

Вкладка Пользователи -> Добавить пользователя.
Добавляем пользователя asteriskcdruser или аналогичного.
Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14
Для создания через CLI:

mysql -u root -p
CREATE USER 'asteriskcdruser'@'localhost' IDENTIFIED BY 'Password';GRANT USAGE ON asteriskcdrdb.* TO 'asteriskcdruser'@'localhost' IDENTIFIED BY 'Password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Для того, чтобы выдать права на ранее созданную БД, необходимо выбрать нашу БД и на вкладке ‘Привилегии’ у созданного пользователя нажать на ‘Редактировать привилегии’.

3. Установка FreePBX

cd /usr/src/
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz
tar vxfz freepbx-14.0-latest.tgz
cd freepbx
touch /etc/asterisk/ari.conf
./start_asterisk start
./install

В процессе установки вам необходимо будет ввести данные:

Database engine [mysql]:
Database name [asteriskcdrdb]:
CDR Database name [asteriskcdrdb]:
Database username [asteriskcdruser]:
Database password:

Если вы понимаете, что делаете, можете обойтись командой:

./install -n --dbuser=asteriskcdruser --dbpass=asteriskcdrpassword
Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14

3.1 Возможные ошибки и их решение

Проблема Решение
Reading /etc/asterisk/asterisk.conf…Error!
Unable to read /etc/asterisk/asterisk.conf or it was missing a directories section
Если вы столкнулись с данной проблемой, то проверьте файл asterisk.conf, который лежит в директории /etc/asterisk. В данном файле уберите символ (!) напротив строки [directories]
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 does not appear to be running
Try starting Asterisk with the ‘./start_asterisk start’ command in this directory

Убедитесь, что сервис Asterisk запущен командой service asterisk start
Invalid Database Permissions. The error was: SQLSTATE[28000] [1045] Access denied for user ‘root’@’localhost’ (using password: NO) Запустите ./install вместо ./install -n и введите все параметры вручную. В частности, обратите внимание, когда система попросит пароль к базе данных database password
пароль должен быть пустым. Если же ошибка не уходит, попробуйте ввести пароль root пользователя
Error(s) have occured, the following is the retrieve_conf output: exit: 1
Exception: Unable to connect to Asterisk Manager from /var/lib/asterisk/bin/retrieve_conf, aborting in file /var/lib/asterisk/bin/retrieve_conf on line 11
Stack trace:
1. Exception->() /var/lib/asterisk/bin/retrieve_conf:11
Если вы столкнулись с данной проблемой, то при подключении к web-интерфейсу FreePBX, вы увидите ошибку Can Not Connect to Asterisk. Это значит, что amportal (fwconsole) ждёт от вас правильного пароля, который он берёт из БД. Чтобы решить данную проблему, необходимо ввести следующие команды:

amportal a m
mysql> UPDATE freepbx_settings SET value='amp111' WHERE keyword='AMPMGRPASS';
Установка закончена и теперь необходимо перейти по адресу http://ВАШ_IP/admin и произвести настройку администратора, указав логин и пароль.
Установка Asterisk 13 на Debian 8.11 Jessie + FreePBX 14

На этом установка окончена, можно приступать к настройке. Если в статье допущены ошибки или несоответствия, мы будем благодарны, если вы напишите нам о них в комментариях.