Разбираемся с freepbx и интегрируем его с битрикс24 и не только

Введение

Asterisk — бесплатное решение для организации voip телефонии. Он обладает всеми возможностями обычных АТС, но предоставляет более богатый функционал по управлению звонками. За относительную простоту настройки, по сравнению с цифровыми АТС, бесплатность и широкие возможности он и снискал такую популярность.

Freepbx — бесплатный веб интерфейс для управления астериском. Он существенно упрощает работу с конфигурациями, позволяет выполнять некоторые функции людям, вообще далеким от астериска. Например, с его помощью практически любого можно научить управлять учетными записями пользователей.

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

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

  1. Подготовка системы.
  2. Установка MariaDB.
  3. Настройка Web сервера.
  4. Установка NodeJS.
  5. Установка Asterisk.
  6. Установка и настройка Freepbx.

Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.

Что такое Freepbx

FreePBX — это удобный GUI (графический интерфейс пользователя), который управляет Asterisk — самым популярным общедоступным программным обеспечением в области компьютерной телефонии. FreePBX является продуктом Open Source, он разработан тысячами добровольцев по всему миру.

На сегодня FreePBX загружен более чем 5 000 000 раз и обслуживает более чем 500 000 активных телефонных систем. Если Вы никогда не слышали про FreePBX, то, вероятно, будете удивлены ее возможностями для Вашего бизнеса.

FreePBX — это основанный на web интерфейс, который позволяет управлять самым популярным на сегодняшний день сервером ip телефонии asterisk. FreePBX выпускается под лицензией GNU и может свободно использоваться конечными пользователями без какого-либо ограничения. Данный продукт является компонентом FreePBX Distro и некоторых других дистрибутивов.

Первый релиз системы 0.2 (28 ноября 2004 года) был назван AMP (Asterisk Management Portal). Но имя пришлось изменить, так как Asterisk является зарегистрированной торговой маркой Digium corporation.

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

Поддерживаемое оборудование включает в себя устройства компаний Aastra Technologies, Algo, AND, AudioCodes, Cisco Systems, Cyberdata, Digium, Grandstream, Mitel, Panasonic, Polycom, Sangoma, Snom, Xorcom, and Yealink.

Установка и настройка FreePBX

Скачайте и распакуйте FreePBX.

cd /usr/src &&
wget http://mirror.freepbx.org/freepbx-12.0.43.tgz &&
tar zxvf freepbx-*.tgz &&
cd /usr/src/freepbx

при установке из гит репозитория возникает ошибка:missing modgettext.class.php

при установке из гит репозитория возникает ошибка:missing modgettext.class.php

при установке из гит репозитория возникает ошибка:missing modgettext.class.php (incomplete application of changeset 12995?)
поэтому лучше скачивать архив.

export VER_FREEPBX=12.0 &&
cd /usr/src &&
git clone http://git.freepbx.org/scm/freepbx/framework.git freepbx &&
cd freepbx &&
git checkout release/${VER_FREEPBX}

Создайте пользователя 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

remove /var/www/html

remove /var/www/html

Далее в руководстве freepbx.org, предлагается удалить директорию веб сервера:

Удалять директорию /var/www/html может быть опасно для ваших данных.

 rm -rf /var/www/html

Это делается, т.к. при установке FreePBX скриптом, если папка существует, появляется сообщение о ошибке, что может быть исправлено, просто, повторным запуском скрипта установки.

Настроим Apache

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

AllowOverride All

AllowOverride All

root@aster:~# cat  /etc/apache2/apache2.conf | grep AllowOverride
        AllowOverride None
        AllowOverride None
        AllowOverride None
#       AllowOverride None
 root@aster:~# sed -i 's/AllowOverride None/AllowOverride All/'  /etc/apache2/apache2.conf
root@aster:~# cat  /etc/apache2/apache2.conf | grep AllowOverride
        AllowOverride All
        AllowOverride All
        AllowOverride All
#       AllowOverride All
# create the configuration file in the "available" section

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf

# enable it by creating a symlink to it from the "enabled" section

a2enconf servername
# restart the server

service apache2 restart

Подготовим MySQL

Требуется создать безопасный пароль для связи FreePBX и MySQL

 export ASTERISK_DB_PW=`dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 - | cut -c2-18`

Эта команда сгенерирует 16-ти значный пароль и сохранит значение в переменной {ASTERISK_DB_PW}.

Подготовка базы данных Asterisk в MySQL.

Если вы задали ‘root’ пароль MySQL при установке, добавьте его после ключа -pyourpassword. (mysqladmin -u root -pYOURPASSWORD create asterisk)

 mysqladmin -u root create asterisk
 mysqladmin -u root create asteriskcdrdb

Зададим права на использование БД MySQL

Замените asteriskuser на имя пользователя, которое вам нравится. Например: YOURUSER@localhost. Можно оставить как есть.

 mysql -u root -e "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
 mysql -u root -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
 mysql -u root -e "flush privileges;"

Graphical installation (and its variants)

Choose the output method to display the elements to complete the installation setup. All graphic installs will show similar screens, as below in the Graphic install screens section:

Output to VGA

Use this option if you are installing on a machine that only has a VGA, DVI or HDMI video output. Some appliances have a video port. 

VNC-based install (Serial and VGA output)

This option will require the PBX to have a valid network connection, it will attempt to obtain an IP address, then it will start a VNC service to connect remotely, and finally it will show the instructions to connect using a VNC client. 

You can connect using a VNC client such as UltraVNC or TightVNC using the IP and port mentioned in the screenshot above.

VNC installation has two variants:

Installation via VNC — Output to Serial Console

Use this option if you are installing on a machine that only has a Serial Console port such as Sangoma PBX 25, 40, 300, and 1000s. The window mentioned above will be displayed indicating the VNC settings to use to connect the client to the SNG7 installation.

Installation via VNC — Output to Serial and VGA

Use this option if you are installing on a machine that only has Serial Console port and display Port such as VGA, DVI or HDMI and you want the system to output to both video sources such as Sangoma PBX 40, 60, 100 and 400’s.  

In this mode the video source will be output to both your Serial Console and Video port once the software has been installed but you will need to use VNC to complete the install process as it can not output to VGA, DVI or HDMI video source and serial port during install.  It will only output to both once the software is installed.

Graphic install screens

  1. The installer will now start
  2. The installer will copy all required files in the background, but won’t finish until you set the root password. Click on the root password box to set your root password.
  3. Type in your root password and confirm it a second time and click on the Done option in the top left screen.
  4. During installation of FreePBX package itself can take 15 or more minutes to install and does requires access to the internet so depending on your internet speeds it can take awhile to install so be patient.
  5. Once the install has completed it will ask you to reboot.  Click on reboot button as seen below, your system is now installed.

Final steps

Once the server reboots you will be able to log in using one of the following methods:

  1. Keyboard and Monitor (direct terminal on the server)
  2. Serial port, if server do not possess a display port
  3. SSH (you need to know the IP of the server to enter with a client like Putty)
  4. Via browser (you need to also know the IP of the server to access the FreePBX web interface). 

Methods 1 to 3 will allow you to log in using the username «root» (without quotes), and the password you selected earlier. Depending on the installation option chosen above your password can be «SangomaDefaultPassword» (without quotes) or the one you set up yourself. 

Use any of the methods above to activate your deployment. Note: you may require to at least update sysadmin module in order to be able to activate the deployment under certain conditions

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

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

1. Время

Задаем часовой пояс:

timedatectl set-timezone Europe/Moscow

* в данном примере московское время. Список всех зон можно посмотреть командой timedatectl list-timezones.

Устанавливаем сервис для синхронизации времени:

yum install chrony

И запускаем его с разрешением автозапуска:

systemctl enable chronyd —now

2. Настройка firewall

Мы должны открыть порты:

  • 5060 — SIP.
  • 5061 — SIP over TLS.
  • 80 — http.
  • 443 — https.

В CentOS для управления брандмауэром может использоваться firewalld или iptables. Рассмотрим настройку и того, и другого.

Firewalld

Разрешаем порты для работы asterisk:

firewall-cmd —permanent —add-port={5060,5061}/{tcp,udp}

… и веб-сервера NGINX:

firewall-cmd —permanent —add-service={http,https}

Для применения настроек перезапускаем правила:

firewall-cmd —reload

Iptables

Открываем порты для астериска и веб-сервера:

iptables -I INPUT -p tcp —match multiport —dports 5060,5061 -j ACCEPT

iptables -I INPUT -p udp —match multiport —dports 5060,5061 -j ACCEPT 

iptables -I INPUT -p tcp —match multiport —dports 80,443 -j ACCEPT

iptables -I INPUT -p udp —match multiport —dports 80,443 -j ACCEPT

Для сохранения правил установим:

yum install iptables-services

И разрешим автозапуск сервиса:

systemctl enable iptables

Теперь сохраняем сами правила:

service iptables save

* правила будут сохранены в файл /etc/sysconfig/iptables.

3. Отключение SELinux

Для отключения SELinux вводим две команды:

setenforce 0

sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config

4. Установка пакетов

Выполним установку пакетов:

dnf install wget tar glibc-langpack-ru

* где:

  • wget — утилита для загрузки файлов по сети.
  • tar — для распаковки архивов.
  • glibc-langpack-ru — русская локаль. Она нужна, чтобы у нас была возможность выбрать русский интерфейс во FreePBX.

5. Создание пользователя

Нам нужен общий пользователь, от которого будет работать Asterisk и веб-сервер. Это необходимо, чтобы веб-сервер имел доступ к каталогам астериска.

Создаем пользователя командой:

useradd asterisk -m

Установка Mariadb

В своей работе FreePBX использует базу данных Mysql. В качестве mysql сервера будем использовать mariadb. Подключаем репозиторий со свежей версией MariaDB. Для этого создаем файл /etc/yum.repos.d/MariaDB.repo следующего содержания.

# MariaDB 10.3 CentOS repository list - created 2019-04-01 09:11 UTC
# http://downloads.mariadb.org/mariadb/repositories/

name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Устанавливаем MariaDB.

# yum install MariaDB-server MariaDB-client MariaDB-shared

Запускаем mariadb и добавляем в автозагрузку.

# systemctl start mariadb
# systemctl enable mariadb

Настройка веб-сервера

Для работы FreePBX нам необходим веб-сервер и СУБД. В нашем примере мы установим связку NGINX + PHP + MariaDB + NodeJS.

Сервер баз данных

Устанавливаем сервер mariadb:

dnf install mariadb-server

Стартуем сервис и разрешаем его автозапуск:

systemctl enable mariadb —now

Задаем пароль для суперпользователя СУБД:

mysqladmin -u root password

NGINX

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

dnf install nginx

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

vi /etc/nginx/nginx.conf

В секции http добавим опцию:

client_max_body_size 128M;

* данный параметр разрешает загрузку файлов размером 128 Мб.

Стартуем nginx:

systemctl enable nginx —now

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

Веб-сервер установлен.

PHP и компоненты

Установим интерпретатор php и компоненты, необходимые для работы FreePBX:

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

В процессе установки php на CentOS устанавливается apache, но нам он не нужен — вводим команду для запрета его автозапуска:

systemctl disable httpd

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

vi /etc/php.ini

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

upload_max_filesize = 128M

post_max_size = 128M

date.timezone = «Europe/Moscow»

memory_limit = 512M

* где:

  • upload_max_filesize — максимальный объем загружаемого файла.
  • post_max_size — максимальный объем всех загружаемых файлов за один раз.
  • date.timezone — временная зона.
  • memory_limit — максимальный объем памяти, который может использовать интерпретатор.

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

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

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

user = asterisk

group = asterisk

listen.acl_users = asterisk,apache,nginx

* FreePBX должен работать с файлами в каталоге /etc/asterisk. Владельцем этого каталога будет пользователь asterisk, поэтому обработка php должна выполняться тоже от данного пользователя, чтобы иметь соответствующие права на редактирование конфигурационных файлов.

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

systemctl enable php-fpm —now

NGINX + PHP

Свяжем наш веб-сервер с php. Для этого откроем конфигурационный файл:

vi /etc/nginx/nginx.conf

Добавим следующие строки в разделы http — server:


http {
    …
    server {
        …
        server_name  192.168.1.15;
        …
        location ~ \.php$ {
            set $root_path /usr/share/nginx/html;
            fastcgi_pass unix:/run/php-fpm/www.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
            fastcgi_param SERVER_NAME $host;
        }
        …

* в данном примере мы задаем настройку для server_name — указываем имя хоста или IP-адрес, по которому мы будем подключаться к FreePBX. Также мы создаем секцию location для обработки php через php-fpm.

Перезапустим nginx:

systemctl reload nginx

Создадим файл php в домашней директории nginx:

vi /usr/share/nginx/html/index.php

<?php phpinfo(); ?>

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

NodeJS

Последний компонент для нашего веб-сервера — NodeJS. Для его установки выполняем команду:

dnf install nodejs

Убедиться в установке можно командой просмотра версии:

node —version

Наш веб-сервер готов к работе.

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

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