Jump to content
Sign in to follow this  

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

Sign in to follow this  
k010v

194 views

Все большую популярность набирает современная телефонная связь по протоколу ip в офисах сферы малого и среднего бизнеса. Установка asterisk и панели управления freepbx на сервер под управлением CentOS 7 тема моего очередного повествования. Мы последовательно выполним все шаги по конфигурированию и сборке исходных текстов устанавливаемых продуктов.

Если вы еще не определились, как вам лучше настраивать и использовать астериск, рекомендую мою статью по базовой настройке asterisk для нужд малого и среднего офиса. Рассмотрен основной функционал, который необходим для эффективной работы. Инструкция подробная, по шагам, от и до: от установки до записи разговоров и статистики звонков.

Введение

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

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

Лично я больше люблю настраивать asterisk с помощью freepbx, нежели ручной правкой конфигов. Их очень много, они объемные, работать с ними не удобно. Это практически единственный софт в линуксе, который я настраиваю через GIU, во всех остальных случаях я предпочитаю консоль.

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

Прежде чем мы начнем устанавливать asterisk, нам надо выполнить целый ряд подготовительных действий. Первым делом отключаем selinux. Для этого открываем файл:

# mcedit /etc/sysconfig/selinux

и устанавливаем значение SELINUX=disabled. После этого применяем настройку без перезагрузки сервера:

# setenforce 0

Рекомендация по отключению selinux дается в официальной инструкции по установке freepbx, так как это может привести к нарушению процесса инсталляции.

Дальше обновляем систему:

# yum update
# yum groupinstall core base "Development Tools"

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

# yum install lynx mariadb-server mariadb php php-mysql php-mbstring tftp-server httpd ncurses-devel sendmail sendmail-cf sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel git php-process crontabs cronie cronie-anacron wget vim php-xml uuid-devel sqlite-devel net-tools gnutls-devel php-pear

Устанавливаем компонент pear:

# pear install Console_Getopt

Теперь надо настроить iptabes. Для начала нам нужно открыть 80-й порт, чтобы мы смогли работать с веб интерфейсом:

iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Для полноценной работы астериск, нужно открыть следующие порты:

iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5061 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5060 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5061 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5038 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

Для работы freepbx необходима mariadb. Это популярный форк mysql, который по-умолчанию предлагается в качестве mysql сервера в CentOS 7. Оба эти сервера имеют полную совместимость и могут в любой момент заменять друг друга. Запустим базу и добавим в автозагрузку:

# systemctl enable mariadb.service
# systemctl start mariadb

При первоначальной конфигурации mariadb рекомендуется запустить скрипт mysql_secure_installation. Сделаем это:

# /usr/bin/mysql_secure_installation

Подробнее о работе этого скрипта и вообще настройке mariadb можно прочитать в материале на тему web-сервера на centos 7.

Важное замечание. На этапе настройки mariadb не указывайте пароль root. Он должен быть пустым. Если его задать, то стандартная установка freepbx закончится ошибкой и сообщением: Error! Invalid Database Permissions. The error was: SQLSTATE[28000] [1045] Access denied for user ‘root’@’localhost’ (using password: NO)

Мы же двигаемся дальше. Для работы freepbx необходим веб сервер. В этом качестве у нас будет выступать httpd. Запускаем его:

# systemctl start httpd

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

# systemctl enable httpd

Теперь добавим пользователя, под которым будет работать астериск:

# adduser asterisk -M -c "User for voip"

Установка Asterisk

 

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

# 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 -O jansson.tar.gz https://github.com/akheron/jansson/archive/v2.7.tar.gz
# wget http://www.pjsip.org/release/2.4/pjproject-2.4.tar.bz2
Если вы не используете аппаратные платы расширения для сервера asterisk, то вам dahdi и libpri не нужны. Не скачивайте и не собирайте их.

Устанавливаем DAHDI — драйверы для плат производства Digium:

# tar xvfz dahdi-linux-complete-current.tar.gz
# tar xvfz libpri-current.tar.gz
# cd dahdi-linux-complete-*
# make all

Если получаете ошибку:

You do not appear to have the sources for the 3.10.0-123.el7.x86_64 kernel installed

То тут 2 варианта:

  1. Вы сделали обновление системы и не перезагрузили сервер. У вас отличаются значения ядра в выводе команды uname -r и реальным ядром системы в /usr/src/kernels. В таком случае вам нужно просто перезагрузить сервер.
  2. Если дело не в обновлении и разных версиях ядра, то сделайте символьную ссылку на kernel в папке с dahdi:
# ln -s /usr/src/kernels/3.10.0-123.el7.x86_64 /usr/src/dahdi-linux-complete-2.10.2+2.10.2/build

Не забудьте исправить пути на свои, версия dahdi и ядра скорее всего будет другая. Снова запускаете сборку:

# make all
Если по какой-то причине у вас все равно не собирается dahdi, а текст ошибок не очень информативный и в интернете ничего не получается найти по этой ошибке, попробуйте установить более старую версию, для начала предыдущую. Взять ее можно тут. Я сталкивался с подобной ситуацией и этот путь помог выполнить установку успешно. А с последней версией dahdi не получалось.

Если все проходит без ошибок, то продолжаем сборку:

# make install
# make config

Устанавливаем libpri — библиотеку, предназначенную для работы с потоковыми TDM-интерфейсами ISDN: PRI (Primary Rate Interface) и BRI (Basic Rate Interface).:

# cd /usr/src/libpri-*
# make
# make install

Выполняем установку pjproject — open source библиотеку для разработки VoIP приложений на различных платформах:

# cd /usr/src
# tar -xjvf pjproject-2.4.tar.bz2
# cd pjproject-2.4
# CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr --libdir=/usr/lib64
# make dep
# make
# make install

Устанавливаем jansson — библиотеку на С для кодирования и декодирования JSON данных:

# cd /usr/src
# tar vxfz jansson.tar.gz
# cd jansson-*
# autoreconf -i
# ./configure --libdir=/usr/lib64
# make
# make install

И наконец компилируем и устанавливаем asterisk:

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

Появляется псевдографическая менюшка с выбором модулей. Все необходимые модули уже включен по-умолчанию. Добавим только поддержку mp3, либо, если вам необходимо app_mysql и cdr_mysql:

установка asterisk

Нажимаем Save & Exit и продолжаем установку:

# make
# make install
# make config
# ldconfig
# chkconfig asterisk off

Устанавливаем звуки в хорошем качестве. По-умолчанию астериск ставит звуки низкого качества, чтобы система успешно работала на различном оборудовании. К примеру, на Rasberry Pi. Но на полноценный сервер мы можем установить звуки 8khz wav и G722 High Definition Wideband:

# cd /var/lib/asterisk/sounds
# wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-en-wav-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-wav-current.tar.gz
# tar xfz asterisk-core-sounds-en-wav-current.tar.gz
# tar xfz asterisk-extra-sounds-en-wav-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-en-g722-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-g722-current.tar.gz
# tar xfz asterisk-extra-sounds-en-g722-current.tar.gz
# tar xfz asterisk-core-sounds-en-g722-current.tar.gz

Выставляем необходимые права на файлы и каталоги:

# chown asterisk. /var/run/asterisk
# chown -R asterisk. /etc/asterisk
# chown -R asterisk. /var/{lib,log,spool}/asterisk
# chown -R asterisk. /usr/lib64/asterisk
# chown -R asterisk. /var/www/

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

Установка Freepbx

Приступим к установке web панели управления для астериск — Freepbx. Вначале делаем несколько полезных настроек. Увеличиваем максимальный размер файла для загрузки через web сервер до 120М:

# sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini

Настраиваем запуск httpd от пользователя asterisk:

# sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf

Изменяем параметр AllowOverride на All:

# sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf

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

# systemctl restart httpd

Скачиваем и устанавливаем freepbx:

# cd /usr/src
# wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
# tar xfz freepbx-13.0-latest.tgz
# cd freepbx
# ./start_asterisk start
# ./install -n

Если все прошло без ошибок, то в завершении установки увидите:

установка freepbx

На этом установка закончена. Теперь можно зайти браузером на страницу с ip адресом сервера. У меня это http://192.168.0.163 Открывается начальная страница freepbx, где нам предлагается создать нового пользователя:

freepbx-login

Создаем пользователя и заходим в web интерфейс астериска:

asterisk-web-interface

Вот и все, дальше можно заниматься конфигурированием.

Автозагрузка Freepbx

Для того, чтобы панель управления Freepbx автоматически запускалась при загрузке системы, необходимо сделать startup скрипт для systemd. Для этого создаем файл /etc/systemd/system/freepbx.service следующего содержания.
# cat /etc/systemd/system/freepbx.service
[Unit]
Description=FreePBX VoIP Server
After=mariadb.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start -q
ExecStop=/usr/sbin/fwconsole stop -q

[Install]
WantedBy=multi-user.target

После этого запускаем freepbx и добавляем в автозагрузку.

# systemctl start freepbx.service
# systemctl enable freepbx.service

Проверяем, запустилась ли панель.

centos-asterisk-freepbx-01.png

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

Заключение

В данной инструкции мы аккуратно собрали все необходимые компоненты для настройки связки asterisk+freepbx на сервере CentOS 7. Скачали последние версии софта, собрали его из исходников и установили. Таким образом мы полностью подготовили сервер к конфигурированию телефонии. Если сервер будет смотреть в интернет, нужно обязательно не забыть аккуратно настроить firewall и хотя бы fail2ban для обеспечения минимальной, хотя в большинстве случаев и вполне достаточной, защиты.

 

 

Статья позаимствована с ресурса serveradmin.ru

 

 

Sign in to follow this  


0 Comments


Recommended Comments

There are no comments to display.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...