Установка Asterisk FreePBX на CentOS 7 из исходных кодов программ, для тех кто не хочет устанавливать готовый дистрибутив FreePBX.
Asterik — бесплатное, свободно распространяемое(открытый исходный код), решение компьютерной телефонии. Детище компании Digium, разработанное Марком Спенсером. Работает на операционных системах симействах linux. В комплекте с необходимым оборудованием обладает всеми возможностями классической АТС, поддерживает множество VoIP протоколов.
FreePBX — бесплатный, графический интерфейс пользователя. Имеет открытый исходный код, служит для управления Asterisk. Значительно расширяет и упрощает настройку Asterisk.
Установка Asterisk FreePBX на CentOS 7 — это возможность получить полноценный рабочий сервер VoIP телефонии, для любых нужд.
Подготовка системы.
Перед началом установки Asterisk, требуется выполнить ряд подготовительных действий.
Первым делом отключим selinux. Для этого откроем файл и внесем в него правки. Все изменения и установки проводятся от суперпользователя(root).
1 |
nano /etc/sysconfig/selinux |
Установим значение
1 |
SELINUX=disabled |
После изменения применяем настройку, без перезагрузки сервера:
1 |
setenforce 0 |
Рекомендация по отключению selinux дается в официальной инструкции по установке FreePBX, так как это может привести к нарушению процесса инсталляции.
Производим обновление системы и устанавливаем необходимые пакеты:
1 2 3 |
yum update yum groupinstall core base "Development Tools" 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:
1 |
pear install Console_Getopt |
Теперь для полноценной работы asterisk, настроим firewalld и откроем нужные порты:
1 2 3 4 5 6 7 8 9 |
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=5060/udp --permanent firewall-cmd --zone=public --add-port=5061/udp --permanent firewall-cmd --zone=public --add-port=5060/tcp --permanent firewall-cmd --zone=public --add-port=5061/tcp --permanent firewall-cmd --zone=public --add-port=4569/udp --permanent firewall-cmd --zone=public --add-port=5038/tcp --permanent firewall-cmd --zone=public --add-port=5038/udp --permanent firewall-cmd --zone=public --add-port=10000-20000/udp --permanent |
И применяем настройки firewalld:
1 |
firewall-cmd --reload |
Для корректной работы FreePBX и Asterisk необходима службы баз данных, например такая как mariadb.
MariaDB — ответвление от систем управления базами данных MySQL.
Запустим сервис управления базами данных и добавим в автозагрузку.
1 2 |
systemctl enable mariadb.service systemctl start mariadb |
![mariadb start](http://xn--b1agj8ah.xn--p1ai/wp-content/uploads/2018/12/mariadb-start.png)
Для первоначальной настройки рекомендуем запустить следующий скрипт:
1 |
/usr/bin/mysql_secure_installation |
Мы приводим пример базовой настройки, поэтому не будем задавать пароль root и запрещать доступ из вне.
![mysql_secure_installation](http://xn--b1agj8ah.xn--p1ai/wp-content/uploads/2018/12/mysql_secure_installation.png)
Затем нам потребуется веб сервер. В качестве которого выступит httpd. Запускаем и добавляем в автозагрузку.
1 2 |
systemctl start httpd systemctl enable httpd |
Далее создадим пользователя, от имени которого будет работать Asterisk.
1 |
adduser asterisk -M -c "User for voip" |
Установка Asterisk
Установка Asterisk состоит из нескольких этапов. Для начала соберем и установим все, что необходимо для полноценной работы сервиса asterisk, затем соберем его.
Перво, что необходимо сделать, скачиваем необходимые пакеты:
1 2 3 4 5 6 |
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-15-current.tar.gz wget -O jansson.tar.gz https://github.com/akheron/jansson/archive/v2.7.tar.gz wget https://www.pjsip.org/release/2.8/pjproject-2.8.tar.bz2 |
Устанавливаем драйвер DAHDI, для плат производства Digium:
1 2 3 4 |
tar xvfz dahdi-linux-complete-current.tar.gz tar xvfz libpri-current.tar.gz cd dahdi-linux-complete-* make all |
Если при компиляции DAHDI появляется сообщение о ошибке:
1 |
You do not appear to have the sources for the 3.10.0-957.el7.x86_64 kernel installed. |
То это означает что отсутствуют исходники ядра, установим их:
1 |
yum install kernel-devel-3.10.0-957.el7.x86_64 |
Где вместо 3.10.0-957.el7.x86_64 дожна быть указана версия ваша версия ядра.
Или после выполнения обновления системы вы не перезагрузились.
Продолжаем установку:
1 |
make install |
Далее переходим к установки библиотеки libpri. Она предназначена для работы с потоковым и интерфейсами
ISDN: PRI (Primary Rate Interface) и BRI (Basic Rate Interface):
1 2 3 |
cd /usr/src/libpri-* make make install |
Затем выполним установку библиотеки pjproject :
1 2 3 4 5 6 7 |
cd /usr/srс tar -xjvf pjproject-*.tar.bz2 cd pjproject-2.8 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 |
И наконец собираем и устанавливаем asterisk:
1 2 3 4 5 6 7 |
cd /usr/src tar xvfz asterisk-15-current.tar.gz cd asterisk-* contrib/scripts/install_prereq install ./configure --libdir=/usr/lib64 contrib/scripts/get_mp3_source.sh make menuselect |
После ввода make menuselect появится псевдографическое меню. В котором можно включить все необходимые модули.Добавим поддержку mp3 и app_mysql, cdr_mysql. А так же звуковые пакеты ru.
![Звуковой пакет ядра](http://xn--b1agj8ah.xn--p1ai/wp-content/uploads/2018/12/core-sounds-1024x712.png)
Нажимаем Save & Exit и продолжаем установку:
1 2 3 4 |
make make install ldconfig chkconfig asterisk off |
Затем, устанавливаем звуки в хорошем качестве. По умолчанию asterisk устанавливает звуки низкого качества, для успешной работы системы на любом оборудовании.
1 2 3 4 5 6 7 8 9 |
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 |
Далее выставляем права на файлы и папки:
1 2 3 4 5 |
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/ |
После всех манипуляций установка самого asterisk завершена. На данном этапе можно полноценно им пользоваться через консоль. Все компоненты собраны, установлены и готовы к работе.
Установка FreePBX.
Перед началом установки web панели для управления asterisk, выполним несколько настроек.
Увеличим максимальный размер файла, загружаемого через web до 120 мегабайт
1 |
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini |
Сделаем запуск демона httpd от пользователя asterisk:
1 |
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf |
Изменим директиву AllowOverride и перезапустим службу httpd:
1 2 |
sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf systemctl restart httpd |
Далее переходим к скачиванию и установке FreePBX:
1 2 3 4 5 6 |
cd /usr/src wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz tar xfz freepbx-14.0-latest.tgz cd freepbx ./start_asterisk start ./install -n |
На этом установка закончена.