Установка Asterisk 18 на Centos 8
Для начала определимся что такое Asterisk – это бесплатное решение компьютерной телефонии, проще говоря IP АТС. Первая версия ПО была выпущена 23 сентября 2004. Asterisk активно развивается и по сей день. Большое сообщество поклонников не зря выбирают данную АТС. Благодаря не очень сложной настройке, стабильности и большому количеству расширений. Давайте рассмотрим
как проходит установка Asterisk 18 на Centos 8.
Настройка системы
Все действия по настройке и установке я произвожу с правами суперпользователя (root). Если у вас возникает ошибка с доступом используйте root или sudo.
Установка времени
Если при установки операционной системы вы выставили правильное время, можете смело пропускать данный пункт. Проверить текущий часовой пояс и время можно командой
timedatectl status
В моём случае стоит временная зона America/New_York необходимо заменить ее на Europe/Moscow.
timedatectl set-timezone Europe/Moscow
Перевод SELINUX в режим Permissive
Режим Permissive означает что SELINUX не будет ничего блокировать. Все действия попадающие под блокировку будут просто записываться в журнал.
setenforce 0 sed -i 's/\(^SELINUX=\).*/\SELINUX=permissive/' /etc/selinux/config
Проверить текущий статус SELINUX можно командой
sestatus
Откроем необходимые порты
Откроем порты в firewalld для подключения клиентов
firewall-cmd --permanent --add-port=5060/{tcp,udp} firewall-cmd --permanent --add-port=5061/{tcp,udp}
- 5060 – порт для подключения SIP
- 5061 – порт для подключения SIP с использованием шифрования TLS
Перечитаем измененный конфиг для применения новых параметров firewalld
firewall-cmd --reload
Подключение репозитория EPEL
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
EPEL репозиторий содержит большое количество дополнительных пакетов, которых нет в стандартном репозитории. Некоторые из пакетов необходимых для работы Asterisk будут устанавливаться отсюда.
Установка связанного ПО
Перед установкой самого Asterisk необходимо скачать и установить дополнительные пакеты. Если вы планируете использовать в своем сервере платы T1/E1/J1/BRI и прочее оборудование, необходимо установить DAHDI и LibPRI. Я данное железо использовать не собираюсь, поэтому установку этих пакетов не описываю.
Установим набор пакетов Development Tools
dnf groupinstall "Development tools"
Установка пакета jansson
dnf install jansson-devel
Установим пакет libedit
dnf install https://rpmfind.net/linux/fedora/linux/releases/33/Everything/x86_64/os/Packages/l/libedit-3.1-33.20191231cvs.fc33.x86_64.rpm dnf install https://rpmfind.net/linux/fedora/linux/releases/33/Everything/x86_64/os/Packages/l/libedit-devel-3.1-33.20191231cvs.fc33.x86_64.rpm
Загрузим и установим PJSIP
PJSIP – это новая мультимедийная библиотека для работы с протоколами SIP, RTP, STUN, SDP и т.д. Впоследствии Asterisk откажется от старой библиотеки SIP в пользу PJSIP.
cd /opt/ 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
Скачаем последнюю версию Asterisk с сайта разработчика и распакуем архив
cd /opt wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz tar -xvf asterisk-*.tar.gz cd asterisk-*/
Запустим установку зависимостей Asterisk
./contrib/scripts/install_prereq install
После успешной установки появится соответствующее сообщение.
Очистка временных файлов созданных в процессе установки
make distclean
Добавляем возможность работы с форматом mp3
./contrib/scripts/get_mp3_source.sh
Конфигурируем исходник Asterisk
./configure --libdir=/usr/lib64
После успешного выполнения команды появиться примерно такая надпись, как на картинке ниже
Запустим меню выбора дополнительных параметров установки Asterisk
make menuselect
Передвигаемся по меню стрелочками, выбрать или отменить выбор компонента можно клавишей Enter. Разберем какие компоненты помимо стандартных должны быть отмечены.
- Add-ons – chan_ooh323, format_mp3, res_config_mysql
- Codec Translators – отмечаем все кодеки
- Core Sound Packages – выделяем все звуковые пакеты с русским языком CORE-SOUNDS-RU
- Music On Hold File Packages – выделяем все пункты в данном меню
После завершения выбора компонентов нажимаем кнопку Save & Exit
Переходим к установке Asterisk
make
Результатом успешного выполнения команды make будет текст такого содержания
Далее выполним make install
make install
После успешной установки будет сообщение
На данном этапе установка Asterisk завершена, перейдём к настройке. Соберем конфигурационные файлы с комментариями и примерами. Данная процедура не обязательна, делаете по необходимости.
make samples
Добавим скрипты инициализации в автозагрузку
make config ldconfig
Учитывая тот факт что Asterisk генерирует достаточно большое количество журналов, советую использовать ротацию. Это не обязательно, но в случае высокой нагрузки крайне желательно. Итак, включить ротацию логов можно так
make install-logrotate
Создание пользователя asterisk
Необходимо создать пользователя под которым Asterisk будет запускаться.
groupadd asterisk useradd -r -d /var/lib/asterisk -g asterisk asterisk usermod -aG audio,dialout asterisk
Изменим владельца соответствующих каталогов
chown -R asterisk.asterisk /etc/asterisk chown -R asterisk.asterisk /var/lib/asterisk chown -R asterisk.asterisk /var/log/asterisk chown -R asterisk.asterisk /var/spool/asterisk chown -R asterisk.asterisk /usr/lib64/asterisk
Укажем пользователя от которого будет запускаться Asterisk
Редактируем файл /etc/sysconfig/asterisk
nano /etc/sysconfig/asterisk
Проверяем указанные строки, если они есть раскомментируем, если нет, добавим в файл.
AST_USER="asterisk" AST_GROUP="asterisk"
Откроем на редактирование файл /etc/asterisk/asterisk.conf
nano /etc/asterisk/asterisk.conf
Раскомментируем две строки
runuser = asterisk ; The user to run as. rungroup = asterisk ; The group to run as.
Перезагрузим Asterisk для применения внесенных нами изменений
systemctl restart asterisk
Добавим Asterisk в автозагрузку при старте системы
systemctl enable asterisk
Проверяем работу Asterisk
Давайте проверим статус процесса asterisk. Запущен он или нет и есть ли какие-то ошибки
systemctl status asterisk
По статусу видно что служба запущена (active). Внизу можно увидеть краткий лог работы программы.
Зайдем в консоль Asterisk и проверим что программа отвечает. Также выполним несколько команд. Зайти в консоль можно командой asterisk -r я обычно использую asterisk -rvvvvvv для полной детализации лога в консоли.
asterisk -rvvvvvv
После успешного входа в консоль можно увидеть версию Asterisk. Попробуем ввести парочку команд для проверки работы.
core show channels
Команда отработала успешно, проверим список всех SIP peers
sip show peers
Эта команда не сработает. В предыдущих версиях Asterisk данная команда сработала бы без вопросов. Дело в том что начиная с 17 версии Asterisk модуль chan_sip отвечающий за работу модуля SIP считается устаревшим и по умолчанию отключен. Попытаемся его загрузить из консоли.
module load chan_sip.so
Видим что модуль загрузился но с предупреждениями. WARNING как раз повествует о том, что модуль устарел и скоро его не станет, используйте PJSIP. Попробуем выполнить
sip show peers
Команда отработала успешно. Но, чтобы модуль загружался и после выхода из консоли при старте сервера, необходимо отредактировать файл /etc/asterisk/modules.conf
nano /etc/asterisk/modules.conf
Находим в файле запись noload => chan_sip.so и комментируем её поставив перед ней точку с запятой
;noload => chan_sip.so
Сохраняемся и можно перезагружаться для проверки что все работает.
Я сам постепенно перехожу и всем советую использовать новую библиотеку res_pjsip
В данной статье я рассмотрел как проходит установка Asterisk 18 на Centos 8. В следующей статье планирую рассмотреть процесс первоначальной настройки: подключение пользователей, транков и т.п. Список консольных команд Asterisk также есть на нашем сайте.
Весь процесс установки Asterisk 18 на Centos 8 я записал на видео.
Было очень полезно, спасибо! Ждём следующую статью по настройке))
Когда планируете выпустить ?
В ближайшее время как раз будет статья по начальной настройке