Установка Asterisk 14 + Freepbx 13 Ubuntu 16.04

Установка Asterisk 14 и FreePBX 13. Первоначальная настройка FreePBX с нуля. Кодек Opus. php5.6. Odbc. Тотальное руководство.

Данное руководство можно использовать, как для установки чистого Asterisk, так и в связке с Freepbx.

При установке системы, на стадии software selection выберите, как минимум openssh. ubuntu-16-software-selection Если выбран LAMP сервер, или позднее, при установке mysql-server из репозитория, вам будет предложено задать пароль root пользователя MySQL. Если оставить поле пустым, задать пароль можно будет после установки FreePBX 13 командой mysql:

 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Password');

или утилитой проверки безопасности:

 mysql_secure_installation

Задайте пароль root пользователя системы

$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password update successfully

Получите права супер пользователя

 $ sudo -i

Сделайте апдейт системы

 # apt update && sudo apt upgrade -y

Установите требуемые зависимости

apt install -y build-essential linux-headers-`uname -r` openssh-server apache2 mysql-server\
 mysql-client bison flex sox libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev\
 libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git subversion unixodbc-dev\
 uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev libical-dev libneon27-dev\
 libsrtp0-dev libspandsp-dev libopus-dev opus-tools libiksemel-dev libiksemel-utils libiksemel3 xmlstarlet
 

Установка php5.6 вместо php7.0

Ubuntu 16 по умолчанию ставит из репозитория php7.0, а FreePBX с ним не дружит. Если вы планируете использовать не чистый Asterisk, надо установить php5.6.

 apt install -y software-properties-common python-software-properties
 add-apt-repository ppa:ondrej/php
 apt  update -y

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>

 apt install -y php5.6 php5.6-curl php5.6-cli php5.6-mysql php5.6-odbc php5.6-db php5.6-gd php5.6-xml curl libapache2-mod-php5.6
 apt install -y php-pear
 a2dismod php7.0
 a2enmod php5.6
 systemctl restart apache2
  update-alternatives --set php /usr/bin/php5.6

Перезагрузите сервер, чтобы загрузить свежую версию ядра после апдейта. Если вы уверены, что загружена последняя версия, можно не перезагружать.

 reboot

Убедитесь, что mod_rewrite включен, чтобы избежать возможных атак.

  a2enmod rewrite
  service apache2 restart

Поддержка Console_Getopt

 pear install Console_Getopt
 

libmyodbc ubuntu 16.04

Пакета libmyodbc больше нет в репозиториях Ubuntu начиная с версии Xenial.
Скачаем нужный коннектор (требуется регистрация):

 https://dev.mysql.com/downloads/connector/odbc/

или по прямой ссылке:

  wget https://dev.mysql.com/get/Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.9-linux-ubuntu16.04-x86-64bit.tar.gz

Распакуем:

  tar -zxvf mysql-connector-odbc-5.3.9-linux-ubuntu16.04-x86-64bit.tar.gz

И скопируем в директорию /usr/lib/x86_64-linux-gnu/odbc/:

  cd  mysql-connector-odbc-5.3.9-linux-ubuntu16.04-x86-64bit/lib
  cp libmyodbc5* /usr/lib/x86_64-linux-gnu/odbc/

Конфигурацию DSN и odbcinst см. ниже

Как использовать данное руководство.

Блоки команд с ключом '&&' могут быть скопированы вместе и будут выполняться последовательно. '&&' выполняет переход к следующей команде, при условии успешного выполнения предыдущей. Если вы хотите полностью, пошагово контролировать процесс установки, выполните каждую команду отдельно, без ввода '&&'.

Скачайте исходные файлы

cd /usr/src
wget http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz &&
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-14-current.tar.gz &&
git clone https://github.com/akheron/jansson.git &&
wget http://www.pjsip.org/release/2.5.5/pjproject-2.5.5.tar.bz2 &&
echo " ¯\_(ツ)_/¯ "

Скомпилируйте и установите Lame (mp3)

 cd /usr/src &&
 tar zxvf lame-3.98.4.tar.gz &&
 cd lame-3.98.4 &&
 ./configure &&
 make &&
 make install  &&
 echo " ¯\_(ツ)_/¯ "

Скомпилируйте и установите DAHDI и LibPRI

cd /usr/src &&
tar xvfz dahdi-linux-complete-current.tar.gz &&
tar xvfz libpri-current.tar.gz &&
rm -f dahdi-linux-complete-current.tar.gz libpri-current.tar.gz &&
cd dahdi-linux-complete-* &&
make all &&
make install &&
make config &&
cd /usr/src/libpri-* &&
make &&
make install &&
echo " ¯\_(ツ)_/¯ "

Скомпилируйте и установите pjproject

(Требуется для поддержки драйвера SIP канала PjSIP)

Для установки Pjproject и Asterisk 14, рекомендуется использовать Pjproject Bundled Version. В этом случае компиляцию Pjproject из исходников можно пропустить (под спойлером).

pjproject и jansson

pjproject и jansson

cd /usr/src &&
tar -xjvf pjproject-2.*.*.tar.bz2 &&
cd pjproject-* &&
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound\
  --disable-resample --disable-video --disable-opencore-amr &&
make dep &&
make &&
make install &&
echo " ¯\_(ツ)_/¯ "

Скомпилируйте и установите jansson

cd /usr/src/jansson &&
autoreconf -i &&
./configure &&
make &&
make install &&
echo " ¯\_(ツ)_/¯ "

Скомпилируйте и установите Asterisk

cd /usr/src && 
tar xvfz asterisk-14-current.tar.gz &&
rm -f asterisk-14-current.tar.gz &&
cd asterisk-* &&
./contrib/scripts/install_prereq install &&
./configure  --with-pjproject-bundled --with-crypto --with-ssl=ssl --with-srtp &&
contrib/scripts/get_mp3_source.sh &&
make menuselect

После ввода команды make menuselect, вам будет предложено выбрать устанавливаемые модули. Большинство требуемых модулей выбираются автоматически. Для поддержки mp3 включите модуль 'format_mp3'. 'res_config_mysql' вынесено в addons по условиям лицензирования.

В разделе Core Sound Packages выберите поддержку русскоязычных файлов (если требуется) В разделе Extra Sound Packages выберите дополнительные звуковые файлы.

Asterisk 14 + OPUS

Asterisk 14 поддерживает Opus без дополнительных патчей. Зависимости (xmlstarlet) должны быть установлены до конфигурации. В разделе Codec Translators убедитесь, что модуль кодека доступен для компиляции и отметьте для установки.

opus install

opus install

Installing modules from codecs...
codec_opus: Remote package version 14.0_1.0.1 (262145)
codec_opus: Downloading http://downloads.digium.com/pub/telephony/codec_opus/asterisk-14.0/x86-64/codec_opus-14.0_1.0.1-x86_64.tar.gz
codec_opus: Installing.
codec_opus: Installed.

после установки asterisk:

 asterisk -rx 'core show translation recalc' | grep opus
           ulaw  alaw   gsm  g726 g726aal2 adpcm  slin  slin  slin  slin  slin  slin  slin  slin  slin lpc10  ilbc  g722 testlaw  opus  opus
     opus 23500 23500 23500 23500    23500 23500 17500 17500 17500 17500 17500 17500  9000 17000 17000 23500 23500 23500   23500     - 23500
     opus 15000 15000 15000 15000    15000 15000  9000 17000 17000 17000 17000 17000 17000 17000 17000 15000 15000 17250   15000 23000     -

Для сохранения нажмите Save & Exit и продолжите установку.

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

Если вы не планируете использовать FreePBX, команда make basic-pbx установит минимальный начальный набор конфигов Asterisk.

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

Расcкомментируйте в /etc/default/asterisk

 AST_USER="asterisk"
 AST_GROUP="asterisk"
Создайте пользователя Asterisk и задайте права пользователя.
useradd -m asterisk &&
chown asterisk. /var/run/asterisk &&
chown -R asterisk. /etc/asterisk &&
chown -R asterisk. /var/{lib,log,spool}/asterisk &&
chown -R asterisk. /usr/lib/asterisk

Перезагрузите сервер и проверьте состояние Asterisk подключившись к консоли

 asterisk -vvvr
Asterisk 14.2.0, 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.0 currently running on ubuntu (pid = 1269)
ubuntu*CLI>
Убедитесь, что Asterisk запущен под своим пользователем:
  ps aux | grep asterisk
 asterisk  1269  4.7 11.4 1446068 57504 ?       Ssl  07:57   0:07 /usr/sbin/asterisk -U asterisk -G asterisk

Прежде всего обновите сертификаты сервера:

 sudo -u asterisk gpg --refresh-keys --keyserver pool.sks-keyservers.net

Настроим Apache

sed -i 's/\(^upload_max_filesize = \).*/\256M/' /etc/php/5.6/apache2/php.ini &&
sed -ie 's/\;date\.timezone\ \=/date\.timezone\ \=\ "Europe\/Moscow"/g' /etc/php/5.6/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 &&
systemctl restart apache2

настроим ODBC

cat >> /etc/odbcinst.ini << EOF
[MySQL]
Driver=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc5w.so
UsageCount=2

EOF
cat >> /etc/odbc.ini << EOF
[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

cd /usr/src &&
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
Проблема с созданием таблицы cdr БД asteriskcdrdb при установке FreePBX

В исходниках FreePBX тип поля calldate таблицы cdr задано как datetime.
Это вызывает ошибку при создании таблицы.
Решение
изменить в файле: /usr/src/freepbx/installlib/SQL/cdr.sql
тип данных поля calldate с datetime на varchar(32).
было:

 calldate datetime NOT NULL default '0000-00-00 00:00:00',

стало:

 calldate varchar(32) NOT NULL default '0000-00-00 00:00:00', 
Распакуйте и установите FreePBX
tar vxfz freepbx-13.0-latest.tgz &&
cd /usr/src/freepbx &&
./install -n

Если при установке Ubuntu вы задали root пароль MySQL
запустите скрипт установки без ключа -n.
Установка пройдет в интерактивном режиме,
во время которого вам будет предложено ввести пароль:

./install
Database engine [mysql]:
Database name [asterisk]:
CDR Database name [asteriskcdrdb]:
Database username [root]:
Database password:

install -h

install -h

/usr/src/freepbx# ./install -h
PHP Warning:  Declaration of FreePBX\Install\FreePBXHelpCommand::setCommand(FreePBX\Install\FreePBXInstallCommand $command) should be compatible with Symfony\Component\Console\Command\HelpCommand::setCommand(Symfony\Component\Console\Command\Command $command) in /usr/src/freepbx/installlib/installhelpcommand.class.php on line 15
 ______             _____  ______   __
|  ____|           |  __ \|  _ \ \ / /
| |__ _ __ ___  ___| |__) | |_) \ V /
|  __| '__/ _ \/ _ \  ___/|  _ < > <
| |  | | |  __/  __/ |    | |_) / . \
|_|  |_|  \___|\___|_|    |____/_/ \_\
Usage:
 install [--dbengine="..."] [--dbname="..."] [--cdrdbname="..."] [--dbuser="..."] 
[--dbpass="..."] [--user="..."] [--group="..."] [--dev-links] [--webroot="..."] 
[--astetcdir="..."] [--astmoddir="..."] [--astvarlibdir="..."] [--astagidir="..."] 
[--astspooldir="..."] [--astrundir="..."] [--astlogdir="..."] [--ampbin="..."] [--ampsbin="..."] 
[--ampcgibin="..."] [--ampplayback="..."] [-r|--rootdb] [-f|--force]

Options:
 --dbengine            Database engine (default: "mysql")
 --dbname              Database name (default: "asterisk")
 --cdrdbname           CDR Database name (default: "asteriskcdrdb")
 --dbuser              Database username (default: "root")
 --dbpass              Database password (default: "")
 --user                File owner user (default: "asterisk")
 --group               File owner group (default: "asterisk")
 --dev-links           Make links to files in the source directory instead of copying (developer option)
 --webroot             Filesystem location from which FreePBX files will be served (default: "/var/www/html")
 --astetcdir           Filesystem location from which Asterisk configuration files will be served (default: "/etc/asterisk")
 --astmoddir           Filesystem location for Asterisk modules (default: "/usr/lib/asterisk/modules")
 --astvarlibdir        Filesystem location for Asterisk lib files (default: "/var/lib/asterisk")
 --astagidir           Filesystem location for Asterisk agi files (default: "/var/lib/asterisk/agi-bin")
 --astspooldir         Location of the Asterisk spool directory (default: "/var/spool/asterisk")
 --astrundir           Location of the Asterisk run directory (default: "/var/run/asterisk")
 --astlogdir           Location of the Asterisk log files (default: "/var/log/asterisk")
 --ampbin              Location of the FreePBX command line scripts (default: "/var/lib/asterisk/bin")
 --ampsbin             Location of the FreePBX (root) command line scripts (default: "/usr/sbin")
 --ampcgibin           Location of the Apache cgi-bin executables (default: "/var/www/cgi-bin")
 --ampplayback         Directory for FreePBX html5 playback files (default: "/var/lib/asterisk/playback")
 --rootdb (-r)         Database Root Based Install. Will create the database user and password automatically along with the databases
 --force (-f)          Force an install. Rewriting all databases with default information
 --help (-h)           Display this help message
 --quiet (-q)          Do not output any message
 --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
 --version (-V)        Display this application version
 --ansi                Force ANSI output
 --no-ansi             Disable ANSI output
 --no-interaction (-n) Do not ask any interactive question

Подключимся к FreePBX

http://IP.Address.FreePBX.Server/admin

Первым делом, вам будет предложено задать имя пользователя и пароль FreePBX

ubuntu16-freepbx13-welcome

Первоначальная настройка FreePBX 13

Advanced Settings

Поддержка русского языка в интерфейсе

Чтобы отображался выбор локализаций FreePBX, включите данную опцию в Settings > Advanced Settings:

Show Language setting - YesNo

Если переключение на русский не работает, выполните следующие действия:

 echo "russian         ru_RU.UTF-8" >>  /etc/locale.alias
 locale-gen ru_RU
 systemctl restart apache2
Country Indications Tone

Выберите тоны КПВ, занято и тд в российском стандарте, если требуется:

Settings > Anvanced Settings - Dialplan and Operational

freepbx13-advanced-settings-country-indication-tones.png Обратите внимание на опцию CW Enabled by Default.
Можно отключить Call Waiting, по умолчанию, для вновь создаваемых екстеншенов.
По умолчанию включено.

Speaking Clock Time Format

Установите 24-х часовой формат времени. freepbx13-advanced-settings-speaking-clock-time-format

Ringtime default

Измените время вызова екстеншена по умолчанию, если требуется: freepbx13-advanced-settings-ringtime-default

SIP channel driver определяет использование драйверов SIP. По умолчанию и chan_sip и res_pjsip включены, но можно выбрать какой-то один из них.

Установка Asterisk

  • asterisk_install/asterisk14-ubuntu16.txt
  • Последние изменения: 2018/03/12