Установка Asterisk 16 & FreePBX на Debian 10

Материал из support.qbpro.ru

В этой статье рассмотрим установку Asterisk 16 LTS в Debian 10 / Ubuntu 18 “под ключ”.

Этапы установки:

  1. Подготовка ОС Debian 10
  2. Установку всех необходимых компонентов и приложений
  3. Инсталляция средств администрирования Linux
  4. Интеграция с БД MariaDB
  5. Установку Asterisk 16 LTS
  6. Настройка Asterisk 16 LTS
  7. Подключение Asterisk 16 через драйвер unixODBC к MariaDB
  8. Выполним настройку безопасности Asterisk!

Прежде всего, данная инструкция позволит Вам выполнить не только установку Asterisk, но и настроить
ее под свои бизнес-задачи – останется только настроить маршрутизацию и создать SIP-аккаунты.
К тому же, мы уже рассказывали как сделать это быстро в этой статье.

Введение

Asterisk – это УАТС с открытым исходным кодом и разумеется имеет функции большинства коммерческих систем УАТС. Из чего следует, что Asterisk поддерживает конференц-связь, все виды переадресаций, парковку вызовов, очереди вызовов и кроме того множество других функций.

Далее, мы будем производить установку без дополнительных отступлений, комментариев почему мы делаем так, а не иначе, так как мы рассчитываем на знание среды Linux. Ранее, мы уже рассматривали установку Asterisk на различные операционные системы, но за это время вышло множество обновлений, поэтому мы решили обновить знания по установке Asterisk.

Исходные данные

  1. Физический сервер с ОС Debian 10.
  2. VoIP-шлюзы и IP-телефоны в локальной сети.
  3. Voice VLAN = 192.168.0.0/16, 172.16.0.0/16.
  4. Asterisk 16 LTS (*CLI).
  5. LAMP (Linux Apache2 + MariaDB 10.3 + PHP 7.3 + PhpMyAdmin).
  6. IPtables.
  7. IPset.

Asterisk16-debian10 1-640x451.png

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

Первым делом исправим файл с репозиториями /etc/apt/sources.list.

   echo "# Copyright (C) 2019, PRO-VOIP.RU <info@pro-voip.ru>
   # All rights reserved
   #------------------------------------------------------------------------------#
   #          OFFICIAL DEBIAN 10 REPOS
   #------------------------------------------------------------------------------#
   ###### Debian Main Repos
   deb http://ftp.debian.org/debian/ buster main contrib non-free
   deb-src http://ftp.debian.org/debian/ buster main contrib non-free
   deb http://ftp.debian.org/debian/ buster-updates main contrib non-free
   deb-src http://ftp.debian.org/debian/ buster-updates main contrib non-free
   deb http://security.debian.org/debian-security buster/updates main contrib non-free
   deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
   deb http://ftp.debian.org/debian buster-backports main contrib non-free
   " > /etc/apt/sources.list
   echo "# Copyright (C) 2019, PRO-VOIP.RU <info@pro-voip.ru>
   # All rights reserved
   #------------------------------------------------------------------------------#
   #          OFFICIAL DEBIAN 10 REPOS
   #------------------------------------------------------------------------------#
   ###### Debian Main Repos
   deb http://ftp.debian.org/debian/ buster main contrib non-free
   deb-src http://ftp.debian.org/debian/ buster main contrib non-free
   deb http://ftp.debian.org/debian/ buster-updates main contrib non-free
   deb-src http://ftp.debian.org/debian/ buster-updates main contrib non-free
   deb http://security.debian.org/debian-security buster/updates main contrib non-free
   deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
   deb http://ftp.debian.org/debian buster-backports main contrib non-free
   " > /etc/apt/sources.list

Обновление системы

Во-вторых, произведем обновление системы и установку необходимых пакетов.

   apt-get autoremove -y
   apt-get update && apt-get upgrade -y
   apt-get install -y ntp ntpdate
   sed -i 's/\(NTPSERVERS=\).*/\NTPSERVERS="0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org 3.ru.pool.ntp.org"/' /etc/default/ntpdate
   apt-get autoremove -y
   apt-get update && apt-get upgrade -y
   apt-get install -y ntp ntpdate
   sed -i 's/\(NTPSERVERS=\).*/\NTPSERVERS="0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org 3.ru.pool.ntp.org"/' /etc/default/ntpdate

Установка зависимостей

   apt-get install -y git wget curl sudo apt-transport-https lsb-release systemd systemd-sysv ca-certificates dialog nano vim dirmngr libtiff5-dev libtiff-tools openssh-server
   apt-get install -y bash bash-completion htop iftop nmap unzip bzip2 mc telnet pwgen
   apt-get install -y libvpb1 aptitude aptitude-common aptitude-doc-en libclass-accessor-perl libcwidget3v5 libio-string-perl libparse-debianchangelog-perl libsub-name-perl debtags apt-xapian-index libcwidget-dev libhtml-parser-perl libhtml-template-perl libxml-simple-perl

Установка LAMP

   apt-get install -y mariadb-server mariadb-client libmariadb3 libmariadbclient-dev screen
   systemctl start mariadb
   systemctl enable mariadb

Apache2

   apt-get install -y apache2 apache2-utils
   systemctl reload apache2
   systemctl enable apache2

PHP

   apt-get install -y php libapache2-mod-php php-cli php-cgi php-pear php-common php-phpseclib php-mbstring php-gettext php-fpm php-json php-pdo php-mysql php-mysqli php-imagick php-zip php-gd php-curl php-mbstring php-curl php-xml php-pear php-bcmath
   php -v
   a2enmod php7.3
   a2enmod rewrite

PhpMyAdmin

   cd /usr/src/
   wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.tar.gz
   tar xvf phpMyAdmin-4.9.1-all-languages.tar.gz
   mv phpMyAdmin-4.9.1-all-languages /usr/share/phpmyadmin
   mkdir -p /var/lib/phpmyadmin/tmp
   chown -R www-data:www-data /var/lib/phpmyadmin
   chown -R www-data:www-data /usr/share/phpmyadmin
   mkdir /etc/phpmyadmin/
   cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php
  • Далее, сгенерируем шифр Blowfish:
   pwgen -s 32 1
  • На следующем шаге установим полученное значение в файл конфигурации PhpMyAdmin, а значит вместо значения Your_Blowfish_Secret нужно вставить полученный выше шифр:
   sed -i "s/$cfg['blowfish_secret'] = .*/$cfg['blowfish_secret'] = 'Your_Blowfish_Secret' /" /usr/share/phpmyadmin/config.inc.php
   echo "//$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';" >> /usr/share/phpmyadmin/config.inc.php

Необходимо настроить службу Apache2, чтобы она работала совместно с PhpMyAdmin, следовательно правил следующий файл:

   cat > /etc/apache2/conf-enabled/phpmyadmin.conf << 'EOF'
   Alias /phpmyadmin /usr/share/phpmyadmin
   <Directory /usr/share/phpmyadmin>
       Options SymLinksIfOwnerMatch
       DirectoryIndex index.php
       <IfModule mod_php5.c>
           <IfModule mod_mime.c>
               AddType application/x-httpd-php .php
           </IfModule>
           <FilesMatch ".+\.php$">
               SetHandler application/x-httpd-php
           </FilesMatch>
           php_value include_path .
           php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
           php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
           php_admin_value mbstring.func_overload 0
       </IfModule>
       <IfModule mod_php.c>
           <IfModule mod_mime.c>
               AddType application/x-httpd-php .php
           </IfModule>
           <FilesMatch ".+\.php$">
               SetHandler application/x-httpd-php
           </FilesMatch>
           php_value include_path .
           php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
           php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
           php_admin_value mbstring.func_overload 0
       </IfModule>
   </Directory>
   # Authorize for setup
   <Directory /usr/share/phpmyadmin/setup>
       <IfModule mod_authz_core.c>
           <IfModule mod_authn_file.c>
               AuthType Basic
               AuthName "phpMyAdmin Setup"
               AuthUserFile /etc/phpmyadmin/htpasswd.setup
           </IfModule>
           Require valid-user
       </IfModule>
   </Directory>
   # Disallow web access to directories that don't need it
   <Directory /usr/share/phpmyadmin/templates>
       Require all denied
   </Directory>
   <Directory /usr/share/phpmyadmin/libraries>
       Require all denied
   </Directory>
   <Directory /usr/share/phpmyadmin/setup/lib>
       Require all denied
   </Directory>
   EOF
  • После этого, устанавливаем БД, потому что для PhpMyAdmin необходима собственная база, где:


   * Your_Mariadb_Password – пароль пользователя root от БД MariaDB;
   * Phpmyadmin_User – имя пользователя для доступа к PhpMyAdmin;
   * Phpmyadmin_User_Password – пароль пользователя Phpmyadmin_User для доступа к PhpMyAdmin.
   mariadb < /usr/share/phpmyadmin/sql/create_tables.sql -uroot -pYour_Mariadb_Password
   mariadb -uroot -pYour_Mariadb_Password <<MY_QUERY
   GRANT ALL PRIVILEGES ON *.* TO 'Phpmyadmin_User'@'localhost' IDENTIFIED BY 'Phpmyadmin_User_Password' WITH GRANT OPTION;
   FLUSH PRIVILEGES;
   MY_QUERY
   systemctl restart apache2