Установка asterisk и freepbx на centos 7

Подготовка

  1. # yum -y update
  2. Выключить SELinux:
    # vi /etc/selinux/config
  3. # reboot
  4. Дополнительные репозитарии:
    # rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm 
    # yum -y install epel-release
    
  5. # yum -y install net-tools mc make gcc kernel-devel gcc-c++ ncurses-devel wget httpd fail2ban mariadb-server mariadb mariadb-devel php iksemel iksemel-devel crypto-utils openssl-devel gmime gmime-devel spandsp spandsp-devel openldap openldap-devel popt-devel  speex speex-devel libcurl-devel speex-tools svn sqlite-devel mod_ssl php-mysql php-pear-MDB2-Driver-mysqli php-mbstring php-gd php-mcrypt libxml2-devel lame bison audiofile-devel sox php-pear-DB php-posix
    # rpm -Uvh https://dl.fedoraproject.org/pub/epel/6/x86_64/libresample-0.1.3-12.el6.x86_64.rpm https://dl.fedoraproject.org/pub/epel/6/x86_64/libresample-devel-0.1.3-12.el6.x86_64.rpm
    
  6. Включаем fail2ban:
    # vi /etc/fail2ban/jail.local
    # cat /etc/fail2ban/jail.local
    
    enable = true
    
     
    enable = true
    
    # systemctl enable fail2ban.service
    # systemctl restart fail2ban.service
    
  7. # cd /root
  8. # wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz 
    # tar -zxf asterisk-11-current.tar.gz
  9. # wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
    # tar -zxf libpri-1.4-current.tar.gz
    # wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
    # tar -zxf dahdi-linux-complete-current.tar.gz

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 :
Database name :
CDR Database name :
Database username :
Database password:

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

./install -n --dbuser=asteriskcdruser --dbpass=asteriskcdrpassword

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. В данном файле уберите символ (!) напротив строки
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 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 и произвести настройку администратора, указав логин и пароль.

Установка FreePBX

Возвращаемся в домашнюю папку пользователя:

cd ~

Скачиваем портал для управления астериском:

wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-15.0-latest.tgz

* мы скачаем freepbx версии 15. Для CentOS 8 это оптимальная версия. Если необходимо установить freepbx 14, то устанавливаемая по умолчанию версия php .

Распаковываем скачанный архив:

tar zxvf freepbx-*.tgz

Переходим в распакованный каталог:

cd freepbx

Запускаем скрипт проверки работы Asterisk:

./start_asterisk start

Если видим:

STARTING ASTERISK
Asterisk is already running

… запускаем установку:

./install -n —dbuser root —dbpass password —webroot=/usr/share/nginx/html

* в данном примере мы указали учетные данные для подключения к СУБД (логин root и пароль, который мы создали после установки MariaDB); также мы указываем путь /usr/share/nginx/html, который является домашней директорией веб-сервера NGINX.

Начнется установка — в конце мы должны увидеть:

You have successfully installed FreePBX

Открываем браузер и заходим по адресу http:<IP-адрес сервера> — должна открываться страница конфигурирования FreePBX. Задаем настройки:

После входим в панель администратора под созданной учетной записью. Система нас запросит региональные настройки:

Теперь открываем конфигурационный файл:

vi /etc/asterisk/manager.conf

Находим строки:

#include manager_additional.conf
#include manager_custom.conf

… и меняем их на:

;include manager_additional.conf
;include manager_custom.conf

Перезапускаем сервис Asterisk:

systemctl restart asterisk

Asterisk + FreePBX настроен.

Подготовка к инсталляции FreePBX

5.1. Запуск и проверка MariaDB

Запустите СУБД Maria DB:

systemctl enable mariadb.service
systemctl start mariadb

Проверка:

Примерный ожидаемый вывод:

mysql 7160     1  1 10:44 ?	00:00:00 /usr/libexec/mysqld --basedir=/usr
root  7227  8399  0 10:44 pts/0	00:00:00 grep --color=auto mysql

5.2. Настройка, запуск и проверка Apache

Внесите правки в конфигурационные файлы Apache:

sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
sed -i 's/AllowOverride none/AllowOverride All/' /etc/httpd/conf/httpd.conf

Запустите web-сервер Apache:

systemctl enable httpd.service
systemctl start httpd

Проверка:

Примерный ожидаемый вывод:

root  6674     1  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 6676  6674  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 6677  6674  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 6678  6674  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 6679  6674  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 6680  6674  0 09:33 ?	00:00:00 /usr/sbin/httpd -DFOREGROUND

Загрузите и установите NodeJS:

curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum -y install nodejs

5.4. Корректировка владельца процессов PHP-FPM

sed -i 's/user = apache/user = asterisk/' /etc/php-fpm.d/www.conf
sed -i 's/user = root/user = asterisk/' /etc/php-fpm.d/www.conf
sed -i 's/group = apache/group = asterisk/' /etc/php-fpm.d/www.conf
sed -i 's/group = root/group = asterisk/' /etc/php-fpm.d/www.conf

5.5. Запуск скрипта безопасной работы MySQL

Запустите скрипт:

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

Enter current password for root (enter for none): <Нажмите Enter>
Set root password? [Y/n] Y
New password: Qwerty123456
Re-enter new password: Qwerty123456
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

5.6. Замена драйвера ODBC

Драйвер ODBC, входящий в состав дистрибутива Asterisk, некорректно поддерживает кодировку UTF-8, что приводит к неправильному отображению кириллицы в БД CDR. Для исправления данной проблемы необходимо заменить стандартный драйвер (UNICODE) на драйвер ANSI.

Загрузите, установите и активируйте yum-репозиторий MySQL:

cd /usr/src
mkdir mysql-community-release
cd mysql-community-release
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
rpm -Uvh mysql80-community-release-el8-1.noarch.rpm
yum config-manager --set-enabled mysql80-community

Установите корректную версию драйвера ODBC из репозитория MySQL community:

Отредактируйте файл

Найдите в указанном файле секцию

Добавьте в конец данной секции следующую строку:

Убедитесь, что для всех остальных секций, присутствующих в файле, установлено значение

Данная корректировка позволит избежать нежелательного обновления сервера БД при обновлении системы.

Замена драйвера ODBC

Проверьте наличие строк в файле

Driver=/usr/lib64/libmyodbcXa.so

В случае отсутствия данных строк, следует загрузить библиотеку и добавить указанные выше строки вручную.

В контексте данного пункта X – номер версии, x – номер подверсии коннектора ODBC.

5.7. Задание директории для записей разговоров

Измените директорию, в которой будут храниться записи разговоров:

rmdir /var/spool/asterisk/monitor
mkdir /home/asterisk/monitor/
ln -s /home/asterisk/monitor/ /var/spool/asterisk/
chown -R asterisk:asterisk /home/asterisk/

5.8. Настройка автоматического удаления записей вызовов

Запустите редактор файла crontab:

Добавьте в файл следующие строки:

31 3 * * * find /home/asterisk/monitor/ -type f -mtime +120 -exec rm -rf {} \;
32 3 * * * find /home/asterisk/monitor/ -type d -exec rmdir -p {\} \;

Сохраните изменения:

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

При установке Ubuntu выберите обязательно OpenSSH server и LAMP сервер. Установите дополнительные пакеты на ваше усмотрение.

В ходе установки системы вам будет предложено задать пароль root пользователя MySQL, если вы не уверены, можно отставить пустым.
Если пароль задан, он потребуется в дальнейшем для работы с MySQL.

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

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 php-db php5-gd curl 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 libiksemel-dev libiksemel-utils libiksemel3 libmyodbc

Перезагрузите сервер

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

 reboot

Установите PearDB

pear uninstall db
pear channel-update pear.php.net
pear install -Z db-1.7.14

Error: Error: cannot download &quot;pear/DB&quot;

Error: Error: cannot download &quot;pear/DB&quot;

Ошибка при установке DB
(На данный момент, я не до разобрался в причине этой проблемы, но после танцев с бубном, все заработало.)

[email protected]:/usr/src# pear install DB-1.7.14
WARNING: "pear/DB" is deprecated in favor of "pear/MDB2"
downloading DB-1.7.14.tgz ...
Starting to download DB-1.7.14.tgz (133,103 bytes)
.............................done: 133,103 bytes
could not extract the package.xml file from "/build/buildd/php5-5.5.9+dfsg/pear-build-download/DB-1.7.14.tgz"
Download of "pear/DB" succeeded, but it is not a valid package archive
Error: cannot download "pear/DB"
Download failed
install failed

Решение — установим вручную

Смотрим путь:

 pear config-get php_dir

В моем случае это:

/usr/share/php

Качаем DB 1.7.14

cd /usr/src/
wget   http://download.pear.php.net/package/DB-1.7.14.tgz
tar zvxf DB-1.7.14.tgz

Копируем вручную:

cp -R /usr/src/DB-1.7.14/DB  /usr/share/php/DB
cp /usr/src/DB-1.7.14/DB.php /usr/share/php/DB.php

Далее при вводе pear install db-1.7.14, получаем ответ что уже установлено.

[email protected]:/usr/share/php# pear install db-1.7.14
pear/db is already installed and is the same as the released version 1.7.14
install failed

Перед установкой

Желательно что бы установка OS была произведена с полного образа, вместо netinstall

Проверьте правильность установленной тайм-зоны и при необходимости измените ее.

Переведите SELinux в «разрешающий» (Permissive) режим следующими командами:

sudo setenforce 0
sudo sed -i 's/\(^SELINUX=\).*/\SELINUX=permissive/' /etc/selinux/config

Либо полностью отключите его:

sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/sysconfig/selinux
sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/selinux/config

Перезапустите сервер и проверьте статус:

sestatus

Убедитесь, что репозиторий EPEL добавлен в вашу систему:

dnf repolist epel

Если он не обнаружен добавьте его:

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

sudo dnf config-manager --set-enabled PowerTools

Установите:

dnf update
dnf install openssl openssl-devel
dnf install libedit-devel
dnf install libuuid-devel

Установите Development tools:

sudo dnf group -y install "Development Tools"

dnf install git wget vim  net-tools sqlite-devel psmisc ncurses-devel libtermcap-devel newt-devel libxml2-devel libtiff-devel gtk2-devel libtool libuuid-devel subversion kernel-devel kernel-devel-$(uname -r) crontabs cronie-anacron

Загрузите и установите Jansson:

cd /usr/src/
git clone https://github.com/akheron/jansson.git
cd jansson
autoreconf -i
./configure --prefix=/usr/
make && make install

Загрузите и установите PJSIP:

cd /usr/src/
git clone https://github.com/pjsip/pjproject.git
cd pjproject
./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr
make dep
make
make install
ldconfig

Установка Asterisk на Ubuntu из исходников

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

Дальше мы можем перейти к сборке программы, сначала скачаем исходный код из официального сайта:

Для распаковки исходников наберите:

Дальше нам нужно перейти в папку с исходниками, но мы не знаем точную версию программы. У нас есть мажорная версия 17, но минорную версию мы не знаем. Поэтому используйте такую команду:

Перед тем как выполнить сборку и установку Asterisk на Ubuntu необходимо установить нужные mp3 модули:

Эти команды позволят вам установить некоторые зависимости для проигрывания mp3. Затем установите нужные зависимости для этих модулей:

Выполнение может занять некоторое время, а также вам нужно будет ввести код страны. Дальше подготовим конфигурационные файлы для сборки:

Затем надо немного настроить процесс сборки:

Используйте клавиши со стрелками для перемещения по меню. Для выбора какого-либо пункта используйте  Enter. Сначала включите необходимые дополнения на вкладке Add-ons. Например, как на снимке:

Затем перейдите в раздел Core Sound Packages и включите там необходимые пакеты, например:

Аналогично сделайте в разделе Music on Hold:

Когда закончите с настройкой выберите Save & Exit с помощью клавиши Tab:

Осталось выполнить сборку программы:

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

Когда установка будет завершена, выполните такую команду, чтобы не создавать сотни конфигурационных файлов вручную:

Чтобы установить скрипты инициализации, которые позволят запускать asterisk автоматически, при каждой загрузке выполните:

Затем для обновления кэша библиотек выполните такую команду:

Теперь вы можете запустить сервер asterisk и убедится, что все действительно работает:

И смотрим информацию про утилиту через терминал:

Если все было сделано правильно и установка Asterisk на Ubuntu с нуля прошла успешно, то все будет работать.

Разметка жесткого диска

Тема разметки диска раньше была достаточно спорной и вызывала много дискуссий и споров. Делали отдельно разделы под корень /, домашнюю директорию /home, под логи /var/logs и т.д. Мне кажется, что сейчас все это стало неактуально. Сервера общего назначения переехали в виртуальные среды, а там можно и дополнительный диск выделить под образовавшиеся нужды, либо увеличить текущий. Нет необходимости заранее продумывать на много шагов вперед, можно без проблем потом добавить дисковое пространство.

Если же вы настраиваете железный сервер, то скорее всего четко знаете для чего он нужен и разбиваете уже в зависимости от его прямого назначения. Я сам лично, если нет каких-то особых требований к серверу, создаю только один общий раздел /, lvm не использую. Не вижу в нем смысла в виртуальных машинах. А на железо я ставлю только гипервизоры, там lvm под системный раздел тоже не нужен.

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

Указываем использовать все свободное место диска.

Проверяем предлагаемую схему разбивки. Если все в порядке, продолжаем.

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

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

Отказываемся и идем дальше. Теперь нужно выбрать зеркало, с которым будет работать пакетный менеджер apt. Выбираем свою страну и подходящее зеркало. Я выбираю Russian Federation и зеркало Yandex.Mirror.

Далее нас просят указать прокси. Скорее всего вы им не пользуетесь, поэтому строку можно оставить пустой. Если это не так, то укажите адрес proxy сервера.

Нас спрашивают о том, хотим ли мы делиться анонимной статистической информацией об использовании различного ПО на сервере. Я обычно не делюсь.

Выбираем набор дополнительного ПО, которое будет установлено на сервер debian вместе с основной системой. Я никогда не ставлю ничего, кроме ssh сервера и системных утилит.

Все остальное можно установить потом. На последнем этапе установки нас спрашивают про загрузчик grub — установить ли нам его. В подавляющем большинстве случаев это нужно сделать. Если вы не знаете, нужно или нет, значит 100% нужно. Без загрузчика можно обойтись в очень специфических ситуациях, которые мы рассматривать не будем в этой инструкции по установке debian. Так что устанавливаем  grub на единственных жесткий диск.

Перезагружаем сервер. Установка завершена, он полностью готов к работе. Не забывайте, что по-умолчанию, на сервер нужно подключаться под учетной записью обычного пользователя, не root. После установки debian, предлагаю выполнить предварительную настройку сервера.

Возможные проблемы

Рассмотрим решение некоторых проблем, с которыми мы можем столкнуться в процессе настройки.

Ошибка отображается при просмотре статуса сервиса, сразу после его запуска:

systemctl status asterisk


… systemd: asterisk.service: Can’t open PID file /var/run/asterisk/asterisk.pid (yet?) after start: No such file or directory
… 

Данное сообщение не является ошибкой. Скорее, это сообщение от системы при запуске.

Убедиться в наличие данного файла можно командой:

ls -l /var/run/asterisk/asterisk.pid

Мы должны увидеть:

-rw-r—r—. 1 asterisk asterisk 6 Nov  5 09:45 /var/run/asterisk/asterisk.pid

* где видно, что файл существует. Его владелец — пользователь asterisk.

2. Ошибка 500 при попытке установить FreePBX 14 на CentOS 8

Ошибка появляется при попытке открыть страницу FreePBX в браузере.

Причина: официально, FreePBX 14 поддерживает php 5, которая по умолчанию уже не устанавливается в CentOS 8. В php версии 7 один из методов класса gui_hidden считается устаревшим и система возвращает ошибку 500.

Решение: есть 2 варианта решения проблемы.

1) установить на CentOS 8 php версии 5.6. Для этого подключаем репозиторий remi:

dnf install http://rpms.remirepo.net/enterprise/remi-release-8.rpm

После чего можно устанавливать необходимые компоненты:

dnf install php56 php56-php-fpm php56-php-bcmath php56-php-gd php56-php-json php56-php-mbstring php56-php-mysqlnd php56-php-pear php56-php-snmp php56-php-zip

Открываем настройки для php:

vi /etc/opt/remi/php56/php.ini

Правим значения для следующих опций:

upload_max_filesize = 128M

post_max_size = 128M

date.timezone = «Europe/Moscow»

memory_limit = 512M

Открываем настройки php-fpm:

vi /etc/opt/remi/php56/php-fpm.d/www.conf

Задаем значения для следующих опций:

user = asterisk

group = asterisk

listen.acl_users = asterisk,apache

Запускаем php-fpm:

systemctl enable php56-php-fpm —now

Откроем настройки nginx:

vi /etc/nginx/nginx.conf

Для опции fastcgi_pass задаем значение:

        …
        location ~ \.php$ {
            …
            fastcgi_pass unix:/var/opt/remi/php56/run/php-fpm/www.sock;
            …

А также:

vi /etc/nginx/conf.d/php-fpm.conf

upstream php-fpm {
        server unix:/var/opt/remi/php56/run/php-fpm/www.sock;
}

Перезапускаем nginx:

systemctl restart nginx

Также потребовалось установить следующий модуль для FreePBX:

fwconsole ma downloadinstall soundlang

2) отключить отображение ошибки. Для этого открываем файл:

vi /etc/freepbx.conf

И добавляем строку:


$bootstrap_settings = false;

Однако, у меня данный способ не дал положительного результата. Страница FreePBX открылась, но с ошибкой «Can Not Connect to Asterisk», а сервис fwconsole при запуске выдавал ошибку. В итоге, самый правильный вариант — использовать официально поддерживаемую версию PHP.

Fix Ubuntu/Debian Paths

Debian and Ubuntu use /usr/share/asterisk for things like MOH and Sounds. As sounds are now controlled by FreePBX, you need to delete the system sounds, and link them to the correct location.

rm -rf /var/lib/asterisk/moh
ln -s /usr/share/asterisk/moh /var/lib/asterisk/moh
rm -rf /usr/share/asterisk/sounds
ln -s /var/lib/asterisk/sounds /usr/share/asterisk/sounds
chown -R asterisk.asterisk /usr/share/asterisk

Download and Install FreePBX 14.

cd /usr/src
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz
tar zxf freepbx-14.0-latest.tgz
cd freepbx
./install -n

Настройка Asterisk в Ubuntu 16.04

Программа запускается от суперпользователя. Но нам нужно, чтобы ее можно было запустить ее от пользователя asterisk, а поэтому нужно выполнить еще несколько настроек. Так ваша система будет в большей безопасности. Для начала нужно остановить запущенный сервис:

sudo service asterisk stop

Дальше добавьте группу и пользователя asterisk:

groupadd asterisk $ useradd -d /var/lib/asterisk -g asterisk asterisk

Дальше нам нужно изменить скрипт инициализации так, чтобы программа запускалась от имени нужного пользователя. Мы можем отредактировать файл /etc/default/asterisk вручную, но проще использовать такие команды:

sed -i ‘s/#AST_USER=»asterisk»/AST_USER=»asterisk»/g’ /etc/default/asterisk $ sed -i ‘s/#AST_GROUP=»asterisk»/AST_GROUP=»asterisk»/g’ /etc/default/asterisk

Для того чтобы все работало правильно, пользователю asterisk нужно дать доступ ко всем каталогам программы:

chown -R asterisk:asterisk /var/spool/asterisk /var/run/asterisk /etc/asterisk /var//asterisk /usr/lib/asterisk

Также укажем правильные настройки пользователя для полей runuser и rungroup в файле asterisk.conf:

sed -i ‘s/;runuser = asterisk/runuser = asterisk/g’ /etc/asterisk/asterisk.conf

$ sed -i ‘s/;rungroup = asterisk/rungroup = asterisk/g’ /etc/asterisk/asterisk.conf

Когда все будет готово запустите ранее остановленную службу или перезагрузите, если не останавливали:

sudo service asterisk start

Если пользователь и группа — asterisk, а значит мы сделали все правильно.

Настройка Mikrotik

Нужно настроить проброс портов и защиту.

IP-Firewall-жмем на плюсик:

Так же можно/желательно делать перезагрузку системы в автоматическом режиме по расписанию, для сброса зависшего модема, у меня завис через 5 дней работы, а рядом никого, пришлось ехать и в ручную перегружать.

Желательно настроить VPN доступ к микротику из интернета, для разруливания внештатных ситуаций по случайно забаненым адресам абонентов.

Долго собирал из разных источников эту работающую инструкцию. Может кому то и поможет.

P.S. Добавлена возможность отправки СМС через модем из SIP клиента, например Zoiper.

Установка FreePBX

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

1
2
3
4
5
6
7

sed -i ‘s/\(^upload_max_filesize = \).*/\1 256M/’ /etc/php/5.6/apache2/php.ini
sed -i ‘s/\(^memory_limit = \).*/\1 256M/’ /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
a2enmod rewrite
service apache2 restart

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

1
2
3
4
5
6

cat <<EOF > /etc/odbcinst.ini

Description = ODBC for MySQL (MariaDB)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
FileUsage = 1
EOF

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

1
2
3
4
5
6
7
8
9
10
11

cat <<EOF > /etc/odbc.ini

Description = MySQL connection to ‘asteriskcdrdb’ database
Driver = MySQL
Server = localhost
Database = asteriskcdrdb
Port = 3306
Charset = utf8
Socket = /var/run/mysqld/mysqld.sock
Option = 3
EOF

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

1 mysql -u root -p

1
2
3
4
5
6

CREATE DATABASE asterisk default charset utf8;
CREATE DATABASE asteriskcdrdb default charset utf8;
GRANT ALL PRIVILEGES ON asterisk.* TO [email protected] IDENTIFIED BY ‘asterpass’;
GRANT ALL PRIVILEGES ON asteriskcdrdb.* to [email protected] IDENTIFIED BY ‘asterpass’;
FLUSH PRIVILEGES;
EXIT

Переходим в каталог с дистрибутивом FreePBX, запускаем Asterisk и выполняем установку:

1
2
3

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

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

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Registration Settings

Registrations

registertimeout. Повторяет попытки регистрации каждые N секунд, указанные в registertimeout до успешной регистрации, или при достижении указанного ограничения в registrationattempts.

registrationattempts. Количество попыток регистрации. Значение 0 соответствует бесконечному числу попыток. Обычное значение указывается 0 для того, чтобы Астериск продолжал попытки зарегистрироваться при пропадании локальной сети или маршрута в публичных сетях.

  • 20 (registertimeout)
  • 0 (registerattempts)
Registration Times

minexpiry. Минимальное значение действия регистрации/подписки.

maxepiry. Максимально возможное время действия для входящих регистраций.

defaultexpiry. Дефолтное значение действия входящих и исходящих регистраций.

  • 60 (minexpiry)
  • 3600 (maxexpiry)
  • 120 (defaultexpiry)

Заключение

Мы установили оригинальную версию asterisk 13 на сервер под управлением debian 8 без каких-либо дополнений и web панелей. Дальше можно приступать к настройке. Я рекомендую воспользоваться моей инструкцией по базовой настройке asterisk с нуля. Там подробно рассказано как сконфигурировать основной функционал, который удовлетворит потребности в телефонии для среднестатистического офиса. Настройка включает в себя так же запись разговоров и подробную статистику звонков.

Онлайн курсы по Mikrotik

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте .

Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области. Особенности курсов:

  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.

Помогла статья? Подписывайся на telegram канал автора

Рекомендую полезные материалы по Debian:
Настройки системы
  • Установка
  • Базовая настройка
  • Настройка сети
  • Обновление 8 до 9
  • Обновление 7 до 8
  • Включение логов cron

Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика.

Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования.

Подробное описание настройки сети в Debian — задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др.

Обновление предыдущей версии Debian 8 Jessie до последней Debian 9 Stratch. Подробная инструкция с описанием по каждому этапу обновления.

Обновление версии Debian 7 wheezy до Debian 8 Jessie. Подробная инструкция с описанием по каждому этапу обновления.

Включение записи логов cron в Debian в отдельный файл и настройка ротации этого файла. Отключение логов в syslog.

Настройка программных комплексов
 
  • Proxmox
  • Шлюз в интернет
  • Установка Asterisk
  • Asterisk+Freepbx
  • PostgreSQL для 1С
  • Настройка pptp

Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке.

Настройка интернет шлюза на Debian. Включает в себя настройку iptables, nat, dhcp, dns, iftop.

Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk.

Установка Freepbx 12 и Asterisk 13 на сервер под управлением Debian/Ubuntu. Подробное описание и разбор ошибок установки.

Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива.

Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети.

Разное
  • Бэкап с помощью rsync
  • Тюнинг postgresl для 1C

Подробное описание настройки бэкапа с помощью rsync на примере скрипта инкрементного архива на системе Centos, Debian, Ubuntu, Windows.

Ускорение работы 1С с postgresql и диагностика проблем производительности

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector