Home » Asterisk » Установка Asterisk 16 на Centos 8

Установка Asterisk 16 на Centos 8

Продолжаю обновление и актуализацию статей после выхода новой версии популярной серверной системы. Сегодня расскажу как собрать из исходников и установить сервер телефонии Asterisk 16 на Centos 8. Установка будет из исходных текстов, так как репозиториев с готовыми пакетами под новую систему я не смог найти.

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Цели статьи

  1. Подготовить из исходников все зависимости.
  2. Установить asterisk 16 из исходников.
  3. Запустить asterisk и убедиться в его работоспособности.

Данная статья является частью единого цикла статьей про сервер Centos.

Введение

Устанавливать Asterisk 16 на Centos 8 будем из исходников. Это не для того, чтобы показать олдскул и крутость самостоятельной сборки софта. Это вынужденная мера. Всегда, когда есть возможность установить из пакетов, лучше ей воспользоваться. Либо можно собрать свой пакет и ставить уже из него. Сборка софта из исходников крайняя мера, когда готового пакета просто не существует.

Я устанавливаю версию 16, хотя есть уже 17-я. Именно 16-я версия имеет статус LTS, то есть длительная поддержка. Если вам не нужны новые фичи промежуточных версий, рекомендую всегда ставить lts версии.

Для установки Asterisk 16 на свежую Centos 8 я не нашел репозитория, где бы были собраны все пакеты с зависимостями для быстрой и безпроблемной установки. Так что будем по старинке собирать все руками. Ничего сложного тут нет. Все примерно так же, как и в прошлых версиях. Каких-то новых сложностей или нюансов я не заметил.

Если у вас еще нет готового сервера, то рекомендую мои статьи по установке и настройке Centos.

Подготовка сервера

Первым делом надо отключить SELinux. Открываем файл /etc/sysconfig/selinux и меняем параметр.

# mcedit /etc/sysconfig/selinux
SELINUX=disabled

Для применения настройки нужно перезагрузиться, либо временно приостановить selinux.

# setenforce 0

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

# dnf install epel-release

Дальше идет мета пакет Development Tools со всем необходимым для сборки из исходников.

# dnf groupinstall "Development Tools"

Установка Development tools

И еще некоторые зависимости, которые будут нужны.

# dnf install git wget net-tools sqlite-devel psmisc ncurses-devel libtermcap-devel newt-devel libxml2-devel libtiff-devel gtk2-devel libtool libuuid-devel subversion kernel-devel kernel-devel-$(uname -r) crontabs cronie-anacron mariadb mariadb-server

Установка зависимостей asterisk 16

Настройте mysql сервер, задав пароль для root.

# systemctl start mariadb
# systemctl enable mariadb
# /usr/bin/mysql_secure_installation

На этом подготовка закончена.

Устанавливаем Jansson и pjsip

# cd ~
# git clone https://github.com/akheron/jansson.git
# cd jansson
# autoreconf -i
# ./configure --prefix=/usr/
# make && make install

Установка Jansson

# cd ~
# 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

Установка pjsip

Все готово к установке непосредственно Astersik

Установка Asterisk 16

Я буду устанавливать LTS версию Asterisk 16. Советую для долгосрочного использования всегда использовать LTS версии. Они в целом стабильнее и дольше срок поддержки. Идем на страницу https://www.asterisk.org/downloads/asterisk/all-asterisk-versions и копируем ссылку на нужную версию. Загружаем ее на сервер.

# cd ~
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
# tar xfz asterisk-16-current.tar.gz
# cd asterisk-16*/
# contrib/scripts/install_prereq install
# contrib/scripts/get_mp3_source.sh

Устанавливаем свежие версии libedit и libedit-devel.

# dnf install https://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libedit-3.1-24.20170329cvs.fc29.x86_64.rpm
# dnf install https://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libedit-devel-3.1-24.20170329cvs.fc29.x86_64.rpm

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

Установка libedit

Собираем asterisk.

# ./configure --libdir=/usr/lib64
# make menuselect

Установка Asterisk 16 на Centos 8

Выбирайте необходимые модули и звуки, в зависимости от того, что вам нужно. Я в общем случае указываю:

  • Add-ons: format_mp3, res_config_mysql.
  • Core Sound Packages: русские звуки RU-WAV.
  • Music On Hold File Packages: звук WAV.
  • Extras Sound Packages: английский EN-WAV, русского к сожалению нет.

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

Продолжаем установку:

# make && make install && make samples && make config
# ldconfig

Создание пользователя asterisk и запуск

По-умолчанию, asterisk установлен от root и будет запускаться от него же. Я предлагаю для этого создать отдельного пользователя и запускать астериск от него. Для этого создаем пользователя и добавляем его в некоторые группы.

# groupadd asterisk
# useradd -r -d /var/lib/asterisk -g asterisk asterisk
# usermod -aG audio,dialout asterisk
# chown -R asterisk.asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib64/asterisk

Настраиваем Asterisk на запуск под этим пользователем. Для этого добавляем в конфиг /etc/sysconfig/asterisk параметры:

AST_USER="asterisk"
AST_GROUP="asterisk"

Теперь добавим примерно то же самое в сам конфиг астера /etc/asterisk/asterisk.conf.

runuser = asterisk
rungroup = asterisk

Пробуем запустить asterisk:

# systemctl start asterisk

Если нет сообщений об ошибке, скорее всего все в порядке. Проверяем статус службы.

# systemctl status asterisk

Запуск asterisk

Asterisk запустился, но есть небольшие ошибки.

radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory

Связаны с тем, что в конфигах неверно указан путь к radiusclient. Сейчас исправим это.

# sed -i 's";\[radius\]"\[radius\]"g' /etc/asterisk/cdr.conf
# sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cdr.conf
# sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cel.conf

Перезапускаем asterisk и убеждаемся, что ошибок нет. Проверим, все ли в порядке, зайдя в консоль:

# asterisk -r

Проверка работы

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

# systemctl enable asterisk

Видео

Для тех, у кого что-то не получается или не понятно, как сделать, записал видео по приведенной инструкции. Видео подтверждает, что материал актуален и если делать по нему, то все получится.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

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

Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Помогла статья? Есть возможность отблагодарить автора

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

14 комментариев

  1. Аватар

    Как насчет утилиты DAHDI? Я не увидел её в процессе установки.

  2. Аватар

    еще бы добавить связку Centos 8 + Asterisk + Freepbx было бы вообще отлично!

  3. Аватар

    Попробовал установить астера 16.6.1 на 7-ой центос, на этапе запуска systemctl start asterisk долго пытается запуститься, но потом таймаут и ошибка. Посмотрите выхлоп на пастедбин, подскажите что-нибудь -> https://pastebin.com/S93Dy5z2

  4. Аватар

    у меня при команде contrib/scripts/get_mp3_source.sh выдаётся ошибка

    [root@caller asterisk-16.6.1]# contrib/scripts/get_mp3_source.sh
    svn: E170013: Unable to connect to a repository at URL ‘http://svn.digium.com/svn/thirdparty/mp3/trunk’
    svn: E175002: Unexpected HTTP status 400 ‘Bad Request’ on ‘/svn/thirdparty/mp3/trunk’

    при открытие файла видим строчку

    svn export http://svn.digium.com/svn/thirdparty/mp3/trunk addons/mp3 $@

    что с этим делать? ) есть идеи?

  5. Аватар
    Александр

    А начерта если есть пакеты rpm собраные под 7 центос.?
    Чем отличается установка из исходников на версию 7 центос?
    8 версию ещё рано в продакшен ставить

    • Zerox

      Почему рано? Я лично все новые установки буду делать на Centos 8, поэтому и обновляю всю информацию.

  6. Аватар

    1. Т.к. часть пакетов ставится командой dnf groupinstall «Development Tools», то следующую команду лучше сократить: dnf install wget net-tools sqlite-devel psmisc ncurses-devel libtermcap-devel newt-devel libxml2-devel libtiff-devel gtk2-devel libuuid-devel subversion -y. Иначе вываливается ошибка на версию ядра.

    2. Базы данных (mariadb mariadb-server) ставите с расчетом на следующую статью про FreePBX? Буду рад продолжению цикла статей про Asterisk на CentOS 8.

    3. После установки PJSIP рекомендуется ldconfig -p | grep pj (Verify that pjproject has been installed in the target location by looking for, and finding the various pjproject modules).

    4. У меня после команды make basic-pbx исчезает проблема с radiusclient.

    5. При установке Asterisk в CentOS 7/8 всегда (!) получаю такую ошибку:
    asterisk.service: Can’t open PID file /var/run/asterisk/asterisk.pid (yet?) after start: No such file or directory
    asterisk.service: Supervising process 4903 which is not our child. We’ll most likely not notice when it exits.
    Критично ли появление этого сообщения?
    Кроме этого запускается /usr/sbin/safe_asterisk помимо стандартного /usr/sbin/asterisk как в Debian.
    Еще в Вашем старом гайде имеется правка файла safe_asterisk: sed -i ‘s/ASTARGS=»»/ASTARGS=»-U asterisk»/g’ /usr/sbin/safe_asterisk

    6. На asterisk_wiki пишут, что модули pjsip и jannson лучше подключать в asterisk на момент кофигурации через аргументы (—with-pjproject-bundled —with-jansson-bundled), но тогда у меня не работают команды в самом asterisk_CLI (sip show peers и другие). На форумах пишут, что не был подключен chan_sip, хотя он там был. Одним словом, компиляцию из исходников считаю самым надежным способом.

    Спасибо за статью. На текущий момент это лучшая в рунете по установке Asterisk на CentOS 8.

    • Zerox

      1. Ошибок не будет. Пакеты, которые уже есть, просто будут пропущены. Убедиться в этом можно в видео.
      2. Чаще всего база используется для хранения информации о звонках (cdr), поэтому я ее ставлю.
      5. Это не знаю, не проверял. Вроде все работает.

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

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.