Установка FreePBX13 Asterisk13 на Centos7

Установка FreePBX и Asterisk 13

В этой статье Вы найдёте полностью работоспособную инструкцию для установки и запуска собственной АТС на базе современного сервера IP телефонии Asterisk 13, а также системы управления им через веб-интерфейс FreePBX 13.

Почему FreePBX?

Многие недолюбливают FreePBX ссылаясь на его дырявость, кривую русификацию и местами непонятный интерфейс. Хочу сразу сказать, что в последней версии продукта исправлены многие ошибки, улучшено визуальное оформление и удобство навигации, даже перевод интерфейса выполнен на значительно новом качественном уровне. Не стоит забывать, что FreePBX позволит поднять сервер телефонии за считанные часы практически любому специалисту в том числе и с начальным уровнем знаний. В конфигурации по умолчанию вы получите широчайшие возможности, этих возможностей из «коробки» хватит для решения задач даже для крупных компаний. Конечно если Вам по каким-либо причинам не хватает возможностей веб-интерфейса, и нужно реализовать какую-то уникальную (не стандартную) фишку, скорее всего Вы обнаружите ряд проблем, связанных с использованием FreePBX, это различные костыли и затрудненность дебага. В таком случае Вам стоит сразу начинать разбираться в чистом Asterisk, не пугайтесь консоли! Вы получите огромное количество знаний, а главное глубокое понимание принципов работы сервера.

Чем отличается данная статья от официального мануала, или множества других статей на просторах интернета:

  • В данной статье Вы найдете описание (кто и зачем) устанавливаемых пакетов и библиотек;
  • Рассмотрены многие аспекты безопасности и защиты Вашего сервера телефонии;
  • Установка FreePBX выполняется в соответствии высокому уровню безопасности;
  • Мои старания сделать материал доступным и интересным даже для новичка;
  • Полностью работоспособная инструкция по установке FreePBX 13.

Если Вас устраивают возможности, предложенные в последней версии FreePBX 13, то давайте приступим к установке и настройке Вашего сервера IP телефонии. Установка связки Asterisk 13 + FreePBX 13 будет происходить на подготовленный и настроенный сервер  на базе CentOS Linux 7. Для удобства восприятия и визуального структурирования статья будет разбита на несколько частей.

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

Выключение SELinux

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

Зависимости

yum install -y kernel-devel kernel-headers

yum install -y e2fsprogs-devel keyutils-libs-devel krb5-devel libogg \
libselinux-devel libsepol-devel libxml2-devel libtiff-devel gmp php-pear \
php php-gd php-mysql php-pdo php-mbstring ncurses-devel \
mysql-connector-odbc unixODBC unixODBC-devel \
audiofile-devel libogg-devel openssl-devel zlib-devel \
perl-DateManip sox git wget net-tools psmisc

yum install -y gcc gcc-c++ make gnutls-devel \
libxml2-devel ncurses-devel subversion doxygen \
texinfo curl-devel net-snmp-devel neon-devel \
uuid-devel libuuid-devel sqlite-devel sqlite \
speex-devel gsm-devel libtool libtool-ltdl libtool-ltdl-devel

Выполните полное обновление системы:

yum -y update

Перезагрузите компьютер:

reboot

После перезагрузки проверьте статус SELinux командой «sestatus», Вы должны увидеть следующий вывод:

SELinux status: disabled
Установим и настроим MariaDB

Выполните:

yum -y install mariadb-server mariadb mariadb-devel

Запустим и включим автозагрузку при старте системы:

systemctl start mariadb.service
systemctl enable mariadb.service

Приступим к конфигурированию MariaDB, в инструкции на официальном сайте предложено не задавать пароль для подключения пользователя root, это связано с выполнением скрипта установки FreePBX командой «./install –n», при этом подключение к базе происходит от имени пользователя root без пароля. Начинающий пользователь может пропустить в процессе настройки несколько очень важных параметров (не будет задан пароль для подключения пользователя root, останется разрешено удаленное подключение для пользователя root), что создаст серьезную уязвимость! Мы отступим от официальной инструкции и выполним установку и настройку с высоким уровнем безопасности.
Запустите интерактивный конфигуратор:

mysql_secure_installation

Рассмотрим подробно параметры настройки:

Enter current password for root (enter for none) оставляем поле пустым нажимаем Enter
Set root password Y
New password: Задаем пароль
Re-enter new password: Подтверждаем
Remove anonymous users Y
Disallow root login remotely Y
Remove test database and access to it Y
Reload privilege tables now? Y

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
Компиляция необходимых пакетов и библиотек для Asterisk

PearDB
(библиотека классов PHP с открытым исходным кодом)

pear uninstall db
pear install db-1.7.14

SRTP
(Безопасный протокол передачи данных в реальном времени (или SRTP) определяет профиль RTP (транспортный протокол в реальном времени) и предназначен для шифрования, установления подлинности сообщения, целостности, защиту от замены данных RTP в однонаправленных и multicast передачах медиа и приложениях)

cd /usr/src && wget http://srtp.sourceforge.net/historical/srtp-1.4.2.tgz

tar zxvf srtp-1.4.2.tgz &&
cd srtp && autoconf &&
./configure CFLAGS=-fPIC --prefix=/usr &&
make &&
make runtest &&
make install

Pjproject
(open source библиотека для разработки VoIP приложений на различных платформах)

cd /usr/src && git clone git://github.com/asterisk/pjproject pjproject

cd pjproject/ &&
./configure --libdir=/usr/lib64 --prefix=/usr --enable-shared --disable-sound --disable-resample &&
make dep &&
make &&
make install &&
ldconfig

libjansson
(библиотека на С для кодирования и декодирования JSON данных)

cd /usr/src && wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz

tar zvxf jansson-2.5.tar.gz &&
cd jansson-2.5 &&
./configure --prefix=/usr/ &&
make clean &&
make &&
make install &&
ldconfig

Lame
(свободное приложение для кодирования аудио в формат MP3)

cd /usr/src && wget http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz

tar zxvf lame-3.98.4.tar.gz &&
cd lame-3.98.4 &&
./configure &&
make &&
make install

DAHDI
(DAHDI — драйверы для плат производства Digium)

cd /usr/src && wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

tar xvfz dahdi-linux-complete-current.tar.gz &&
cd dahdi-linux-complete-* &&
make all &&
make install &&
make config

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

cd /usr/src && wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.6.0.tar.gz

tar xvfz libpri-1.6.0.tar.gz &&
cd /usr/src/libpri-1.6.0 &&
make &&
make install

SpanDSP
(открытая библиотека и набор программ для реализации функции передачи и приема факсов)

cd /usr/src && wget http://soft-switch.org/downloads/spandsp/spandsp-0.0.6.tar.gz

tar zxvf spandsp-0.0.6.tar.gz &&
cd spandsp-0.0.6 &&
./configure &&
make &&
make install &&
ln -s /usr/local/lib/libspandsp.so.2 /usr/lib64/libspandsp.so.2
Установка Asterisk 13
BUG
В некоторых версиях Asterisk может произойти сбой при отсутствии ari.conf
https://issues.asterisk.org/jira/browse/ASTERISK-27026
Выполните в терминале "mkdir -p /etc/asterisk && touch /etc/asterisk/ari.conf" после компиляции Asterisk

Выполните:

cd /usr/src && wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

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

make menuselect

После ввода команды make menuselect, вам будет предложено выбрать устанавливаемые модули. Большинство требуемых модулей выбираются автоматически. Для поддержки mp3 включите модуль 'format_mp3'. Из личных обращений посетителей было выявлено, что не у всех отрабатывает модуль confbridge (необходим для организации конференций), meetme является его более функциональным аналогом. Рекомендую Вам дополнительно и его включить.

---> Add-ons (See README-addons.txt)
--- extended ---
XXX chan_mobile
[*] chan_ooh323
[*] format_mp3
[*] res_config_mysql
--- deprecated ---
[*] app_mysql
[*] app_saycountpl
[*] cdr_mysql

---> Applications
--- Extended ---
[*] app_meetme

---> Core Sound Packages
[*] CORE-SOUNDS-RU-WAV
[*] CORE-SOUNDS-RU-ULAW
[*] CORE-SOUNDS-RU-ALAW
[*] CORE-SOUNDS-RU-GSM
[*] CORE-SOUNDS-RU-G729
[*] CORE-SOUNDS-RU-G722
[*] CORE-SOUNDS-RU-SLN16
[*] CORE-SOUNDS-RU-SIREN7
[*] CORE-SOUNDS-RU-SIREN14

--->  Extras Sound Packages
[*] EXTRA-SOUNDS-EN-WAV
[*] EXTRA-SOUNDS-EN-ULAW
[*] EXTRA-SOUNDS-EN-ALAW
[*] EXTRA-SOUNDS-EN-GSM

Press X to save and exit

Внимание! В некоторых версиях Asterisk может произойти сбой при отсутствии ari.conf

Выполните в терминале:

mkdir -p /etc/asterisk && touch /etc/asterisk/ari.conf

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

make && make install && make config && ldconfig asterisk off

sed -i 's/ASTARGS=""/ASTARGS="-U asterisk"/g'  /usr/sbin/safe_asterisk
Подготовка к установке FreePBX

Создайте пользователя Asterisk и задайте права пользователя.

adduser asterisk -M -c "Asterisk User"

Зададим права на каталоги:

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. Запишите или скопируйте этот пароль, он понадобится Вам позже в процессе установки:

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

Настроим PHP

cp /etc/php.ini /etc/php.ini_orig &&
sed -ie 's/\;date\.timezone\ \=/date\.timezone\ \=\ "Europe\/Moscow"/g' /etc/php.ini

Настроим Apache

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

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

mysql -u root -p
CREATE DATABASE `asterisk` CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `asteriskcdrdb` CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'PASS';
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asterisk@localhost IDENTIFIED BY 'PASS';
flush privileges;

* Где PASS сгенерированный сложный пароль.

Установка FreePBX 13

Выполните:

pear install Console_Getopt

cd /usr/src &&
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz &&
tar zxvf freepbx-13.0-latest.tgz &&
cd freepbx

Запустим Asterisk и установим FreePBX.

./start_asterisk start &&
./install

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

fwconsole reload &&
fwconsole ma refreshsignatures &&
fwconsole chown

ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3

fwconsole restart
Firewalld & IPTables

Firewalld

В Centos7 вместо IPTables используется Firewalld.

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

yum -y install firewalld

Запустите:

systemctl start firewalld

Включите автозагрузку:

systemctl enable firewalld

Проверим:

systemctl status firewalld

Посмотрим, что разрешено по умолчанию:

firewall-cmd --permanent --list-all

Вывод команды:

public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:

На постоянной основе разрешен ssh, а также клиент dhcp v6. Я не использую на сервере ip v6, поэтому уберу соответствующее правило:

firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client

Добавим необходимые правила для работы нашего АТС сервера:

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-port=4569/udp
firewall-cmd --permanent --zone=public --add-port=5038/tcp
firewall-cmd --permanent --zone=public --add-port=5060-5061/tcp
firewall-cmd --permanent --zone=public --add-port=5060-5061/udp
firewall-cmd --permanent --zone=public --add-port=10000-20000/udp

Перезагрузим правила:

firewall-cmd --reload

Проверим:

firewall-cmd --permanent --list-all

Вывод команды:

public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: http ssh
ports: 5060-5061/udp 4569/udp 10000-20000/udp 5060-5061/tcp 5038/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:

Все необходимые настройки выполнены.

IPTables

Для использования IPTables на Вашем сервере, выполните следующие шаги.

Выключим Firewalld службу:

systemctl mask firewalld

Остановим Firewalld Service:

systemctl stop firewalld

Установим iptables.

yum -y install iptables-services

Включим IPtables при загрузке системы:

systemctl enable iptables
iptables -P INPUT ACCEPT &&
iptables -F &&
service iptables save &&
iptables -A INPUT -i lo -j ACCEPT &&
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT &&
iptables -A INPUT -p tcp --dport 22 -j ACCEPT &&
iptables -A INPUT -p tcp --dport 80 -j ACCEPT &&
iptables -P INPUT DROP &&
iptables -P FORWARD DROP &&
iptables -P OUTPUT 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 10000:20000 -j ACCEPT &&
iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT &&
iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT &&
service iptables save

Проверим:

iptables -L

Вы должны получить следующий вывод:

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     udp  --  anywhere             anywhere             udp dpt:sip
ACCEPT     udp  --  anywhere             anywhere             udp dpt:sip-tls
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:sip
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:sip-tls
ACCEPT     udp  --  anywhere             anywhere             udp dpts:ndmp:dnp
ACCEPT     udp  --  anywhere             anywhere             udp dpt:iax
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5038

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Быстрый старт

Подключимся к FreePBX

http://IP-адрес/admin

Первым делом, вам будет предложено задать имя пользователя и пароль FreePBX.

Укажите необходимые данные и нажмите "Create Account":

Настройка FreePBX - создайте администратора

Войдите в систему. Для этого кликните "FreePBX Administration", ведите логин/пароль и нажмите "Continue":

Зайдите в систему

Обратите внимание на ошибку: "No Conference Room App". У меня установка всегда проходит гладко и данной пролемы я не встречал (скриншотом любезно поделился оди из посетителей сайта). Для решения данной проблемы необходимо сменить приложение для Conference Room с app_confbridge на app_meetme. Возможно данная проблема связана со спецификой используемого "железа".

Перейдите в раздел "Settings" -> "Advanced Settings"

Приступим к базовой настройке FreePBX

Установите русский язык для интерфеса FreePBX по умолчанию, для этого укажите ru_RU

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

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

Возможность смены языка интерфейса

Проверьте правильность параметра "Timezone" для PHP:

Установите корректную  временную зону PHP

Переключите приложение для "Conference Room" на app_meetm, нажмите "Submit"

Выберите приложение для "Конференций"

Нажмите по кнопке "Применить изменения"

Примените настройки

Перейдя в "Dashboard" мы видим отсутствие критических проблем, интерфейс на родном языке и кнопку выбора языка:

Установка FreePBX завершена

На этом базовая установка FreePBX успешно завершена. Подробная настройка системы будет рассмотрена в отдельной статье.

Повышение безопасности сервера

Подходя к вопросу безопасности, следует помнить, что большинство инструкций на просторах интернета предоставляют базовый (минимальный) набор инструкций и команд для запуска сервиса. Безопасность серверов обычно предполагает защиту от вторжений со стороны сети, но условия эксплуатации также играют огромную роль в безопасности системы. Телефонное оборудование должно быть «под замком», доступ к нему разрешается только обслуживающему персоналу. Администратор должен понимать, что кроме запуска сервиса ему необходимо предпринять определенные шаги по его защите. Требуется поддерживать в актуальном состоянии и регулярно обновлять программное обеспечение. Правильно настроить сетевой экран из расчета открыто только необходимое. Смена стандартных паролей и портов (по возможности), защита от подбора паролей и т.д. Только комплексный подход к организации информационной безопасности даст надлежащий результат.

SSH (актуально для облаков, VPS/VDS хостинга. SSH порт выставлен в интернет)

Настоятельно рекомендую ознакомиться со статьей: Установка и настройка SSH . Она написана для Ubuntu, но полностью подойдет и для CentOS. Важными этапами станут следующие шаги:

• Смена стандартного порта;

• Запрет авторизации root через SSH;

• Авторизация по ключу;

• Запрет авторизации по паролю;

• Разрешение доступа по SSH только определенным пользователям.

Сетевой экран и проброс портов

В случае необходимости подключения пользователей из внешней сети можно использовать несколько вариантов решения данной ситуации:

1. Удаленный филиал. Самым правильным решением станет организация IPSec (VPN) туннеля между офисами, создание необходимых правил и маршрутов. В таком случае Вы не подвергните Ваш сервер вторжениям из внешней сети, а связь между офисами будет надежно защищена;

2. Удаленный сотрудник. Единственным верным решением, я считаю, использование VPN. Все остальные варианты являются не надежными и требуют проброса портов из внешней сети (интернет) на Ваш сервер телефонии;

3. Без VPN. По личным, религиозным или другим не известным мне причинам VPN не используется и не будет использоваться. Рассмотрим варианты: «Условия А». Сотрудник имеет статичный IP, все становится немного радужнее. Можно организовать проброс портов только для определенных адресов (клиентов). Данный метод все равно требует дополнительной защиты и не является надежным. Вы просто ограничиваете источник угроз до определенного диапазона (разрешенные IP адреса). «Условия Б». На моей практике «условия А» встречаются редко (почти никогда). Обычно внешние пользователи - это целый «зоопарк» устройств и провайдеров. В данном случае (без использования VPN) придется выставлять сервер телефонии портами наружу (в интернет).

Итак, проброс портов:

1. Определитесь с набором необходимых портов. Например, если Вы не используете протокол IAX/IAX2 (протокол Asterisk), то и прокидывать порт не нужно. Опционально - можно ограничить диапазон портов RTP (по умолчанию 10000-20000) из расчета 4 порта на сессию. Исходите из необходимого минимума.

2. Настоятельно рекомендую Вам сменить стандартные порты. Например, 5060 на 8060. Это поможет избавиться от ботов, которые пытаются подобрать пароль на стандартном порту;

3. Уделите внимание настройке FreePBX: используйте SSL/TLS для SIP, а также SRTP для шифрования голоса, запретите входящие анонимные SIP звонки, запретите SIP вызовы без аутентификации, измените пароли по умолчанию, используйте сложные пароли на всех уровнях системы;

4. Используйте Fail2Ban для блокировки подозрительных соединений. Например, Fail2ban блокирует соединение по IP адресу при неправильном вводе пароля более 4 раз (все параметры и условия настраиваются без особых проблем).
Рекомендую Вам выполнить данные пункты даже если проброс портов выполнен для определенных клиентов, использующих статичные белые IP адреса (условия А).

Данный материал будет актуальным не только для защиты Вашего сервера с Asterisk, мне хотелось бы донести до Вас концепцию по обеспечению информационной безопасности в целом. В случае взлома сервера телефонии Вы не просто теряете данные, или компрометируете определенных пользователей, Вы можете понести реальные финансовые убытки в результате действий злоумышленников. Этот материал не является конечной инструкцией, это всего лишь попытка обратить внимание на проблемы безопасности вовремя, а также предложить несколько актуальных направлений для предотвращения вторжений.

 

Раздел: Unix сервера
Top
30 комментариев
  • Отличная инструкция, спасибо!

  • Огромное спасибо!
    На 26.12.2016 статья полностью АКТУАЛЬНА!
    Запустил сервер простым копированием команд в консоль.

  • Пожалуйста. Рад что моя статья Вам помогла.

  • Спасибо за Ваш труд.
    Установка прошла без проблем, все четко и ясно!

  • Спасибо Вам, ваш сайт просто СУПЕРР!! Написано "без воды" по делу, кратко, понятно и грамотно.

  • Спасибо! Очень приятно)

  • Добрый день!
    Отличная статья, спасибо Вам!

    Но ошибка: "No Conference Room App" так и присутствует.
    Да, развернуто в виртуальной среде.
    Буду благодарна за наводку.

  • Добрый день!

    Проверьте, у Вас установлен модуль "Conferences"?

    Еще рекомендую выполнить обновление ядра и модулей FreePBX через "Module Admin".

  • Добрый!
    Распространенная рекомендация с обновлением ядра и модулей, но в моём случае ошибка ушла после отката модуля "Conferences" на более раннюю. Та же участь постигла и "FollowMe".

  • Добрый!

    Ничего удивительного. Данная проблема висит в баг трекере, думаю разработчики пытаются бороться))) В любом случае это не просто распространненная рекомендация)) а единственное направление к решению вопроса. Вы молодец и сами докопались до истины, удачи!

     

  • На этапе запуска freepbx выдает ошибку Location of the Asterisk spool directory [/var/spool/asterisk]:
    Location of the Asterisk run directory [/var/run/asterisk]:
    Location of the Asterisk log files [/var/log/asterisk]:
    Location of the FreePBX command line scripts [/var/lib/asterisk/bin]:
    Location of the FreePBX (root) command line scripts [/usr/sbin]:
    Location of the Apache cgi-bin executables [/var/www/cgi-bin]:
    Directory for FreePBX html5 playback files [/var/lib/asterisk/playback]:
    Checking if SELinux is enabled...Its not (good)!
    Reading /etc/asterisk/asterisk.conf...Error!
    Unable to read /etc/asterisk/asterisk.conf or it was missing a directories section
    [root @ localhost freepbx]# echo 0 > /selinux/enforce
    -bash: /selinux/enforce: Нет такого файла или каталога
    [root @ localhost freepbx]# sestatus
    SELinux status: disabled

    хотя как видно selinux откключен

  • Добрый день!

    Сократил часть коментариев.

    В статью внесены необходимые изменения, на 08.06.2017. На данный момент установка и настройка FreePBX происходит без ошибок. Ваша проблема была связана с багом в Asterisk:

    https://issues.asterisk.org/jira/browse/ASTERISK-27026

  • Приветствую!
    Сделал все по статье, но после перезагрузки сервера в freepbx вижу сообщение Can not connect to Asterisk
    Запускаю вручную
    # fwconsole start
    Выполняется запуск FreePBX...
    Taking too long? Customize the chown command, See http://wiki.freepbx.org/display/FOP/FreePBX+Chown+Conf
    Установка прав...
    Setting base permissions...Завершено
    Setting specific permissions...
    556 [============================]
    Finished setting permissions
    Астериск запускается...
    [============================] 2 secs
    Asterisk Started
    Возвращаюсь в freepbx, но вижу все то же сообщение Can not connect to Asterisk
    Смотрю процессы
    root 8136 0.0 0.1 113328 1148 pts/1 S 11:05 0:00 /bin/sh /usr/sbin/safe_asterisk -U asterisk -G asterisk
    asterisk 10080 99.0 3.6 1501868 37540 pts/1 Rl 11:07 0:00 /usr/sbin/asterisk -f -U asterisk -G asterisk -U asterisk -vvvg -c
    замечаю, что процесс от имени asterisk периодически падает
    в логах вижу множество сообщений такого вида
    [ 1617.714409] asterisk[7127]: segfault at 48 ip 00007fdc54f6833e sp 00007ffd698569c0 error 4 in res_ari.so[7fdc54f63000+d000]
    [ 1623.018376] asterisk[7209]: segfault at 48 ip 00007f784611033e sp 00007fff04d7f330 error 4 in res_ari.so[7f784610b000+d000]
    [ 1628.541717] asterisk[7295]: segfault at 48 ip 00007f230b9c033e sp 00007ffe112a87d0 error 4 in res_ari.so[7f230b9bb000+d000]

    CentOS Linux release 7.3.1611 (Core)
    3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

    Прошу помощи в решении проблемы

  • Добрый день!

    В статью внесены необходимые изменения, на 08.06.2017. На данный момент установка и настройка FreePBX происходит без ошибок. Ваша проблема была связана с багом в Asterisk:

    https://issues.asterisk.org/jira/browse/ASTERISK-27026

     

  • Спасибо за ответ
    Я решил проблему по другому, собрал предыдущий релиз 14 asterisk'a 14.4.1 - все прошло без ошибок

  • Все верно! Не забудьте обновить систему через веб интерфейс.

  • Огромное спасибо за статью.Все очень доступно и понятно.

  • Пожалуйста, пользуйтесь. На 15.06.2017 статья полностью актуальна.

  • Тоже хотелось бы поблагодарить вас за труды.

  • Я не против, обратитесь через форму в разделе "Контакты".

  • Спасибо большое за ваш труд.

  • Пожайлуста, пользуйтесь.

  • Чувак, ты гений! Спасибо, все поставилось (и заработало!) сразу!

  • Добрый день!
    Статья очень хорошая!!!
    Только вот команда sed не вносит изменения в файлы.
    Например такая: sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/sysconfig/selinux
    Но не работают все команды sed, указанные в статье. Запускаю от имени sudo.
    Причём редактор gedit, как будто видит, что файл изменился и предлагает перезагрузить файл, но по факту внутри файла изменения не происходят. Приходится править вручную.
    Смотрел в других источниках, синтаксис такой же, везде одинаково.
    В чём может быть проблема?

  • Николай, прошу прощения за длительное молчание (отпуск).

    Мне не совсем понятно, в чем у Вас проблема? Выполняете команды и перезапускаете сервер.

    Скорее всего Вы что-то не внимательно делаете.

  • вот такая ошибка:

    ./start_asterisk start &&
    ./install

    STARTING ASTERISK
    Asterisk is already running
    Database engine [mysql]:
    Database name [asterisk]:
    CDR Database name [asteriskcdrdb]:
    Database username [root]: asterisk
    Database password: тут свой пароль 20 знаков
    File owner user [asterisk]:
    File owner group [asterisk]:
    Filesystem location from which FreePBX files will be served [/var/www/html]:
    Filesystem location from which Asterisk configuration files will be served [/etc/asterisk]:
    Filesystem location for Asterisk modules [/usr/lib64/asterisk/modules]:
    Filesystem location for Asterisk lib files [/var/lib/asterisk]:
    Filesystem location for Asterisk agi files [/var/lib/asterisk/agi-bin]:
    Location of the Asterisk spool directory [/var/spool/asterisk]:
    Location of the Asterisk run directory [/var/run/asterisk]:
    Location of the Asterisk log files [/var/log/asterisk]:
    Location of the FreePBX command line scripts [/var/lib/asterisk/bin]:
    Location of the FreePBX (root) command line scripts [/usr/sbin]:
    Location of the Apache cgi-bin executables [/var/www/cgi-bin]:
    Directory for FreePBX html5 playback files [/var/lib/asterisk/playback]:
    Checking if SELinux is enabled...Its not (good)!
    Reading /etc/asterisk/asterisk.conf...Done
    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 appears to be running as asterisk
    Try starting Asterisk with the './start_asterisk start' command in this directory
    [root@152757 freepbx]# ./start_asterisk start

    STARTING ASTERISK
    Asterisk is already running

  • cat /usr/sbin/safe_asterisk | grep ASTARGS
    ASTARGS="-U asterisk"
    ASTARGS="${ASTARGS} -vvvg"
    ASTARGS="${ASTARGS} -c"
    nice -n $PRIORITY "${ASTSBINDIR}/asterisk" -f ${CLIARGS} ${ASTARGS} >/dev/${TTY} 2>&1 </dev/${TTY}
    nice -n $PRIORITY "${ASTSBINDIR}/asterisk" -f ${CLIARGS} ${ASTARGS} >/dev/null 2>&1 </dev/null

  • перегрузил
    ps aux | grep asterisk
    root 804 0.0 0.0 115236 800 ? S 17:11 0:00 /bin/sh /usr/sbin/safe_asterisk
    asterisk 810 0.2 0.7 1095248 29424 ? Sl 17:11 0:00 /usr/sbin/asterisk -f -U asterisk -vvvg -c
    asterisk 1436 0.0 0.1 395656 7632 ? S 17:11 0:00 /usr/sbin/httpd -DFOREGROUND
    asterisk 1437 0.0 0.1 395656 7632 ? S 17:11 0:00 /usr/sbin/httpd -DFOREGROUND
    asterisk 1438 0.0 0.1 395656 7632 ? S 17:11 0:00 /usr/sbin/httpd -DFOREGROUND
    asterisk 1439 0.0 0.1 395656 7632 ? S 17:11 0:00 /usr/sbin/httpd -DFOREGROUND
    asterisk 1440 0.0 0.1 395656 7632 ? S 17:11 0:00 /usr/sbin/httpd -DFOREGROUND
    root 2076 0.0 0.0 112668 932 pts/0 S+ 17:14 0:00 grep --color=auto 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 appears to be running as asterisk
    Try starting Asterisk with the './start_asterisk start' command in this directory

  • Сократил безполезную портянку в комментариях думаю Вы не обидитесь)

  • Проблема связана с использованием модифицированного образа CentOS Вашим провайдером. Кем, как и для каких целей он модифицирован не понятно. Сервер поднялся, но я не советую Вам продолжать ползьзоваться услугами этого провайдера, возможно Вы столкнетесь с проблемами позже (более подробно ответил Вам в скайп).

Добавить комментарий