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

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

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

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в 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.

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:
  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .

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

Автор Zerox

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

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

  1. Аватар

    Добрый вечер. При попытки сборки астериска получаю вот что:
    checking for embedded pjproject (may have to download)… configuring
    [pjproject] Downloading https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/2.9/pjproject-2.9.tar.bz2 to /tmp/pjproject-2.9.tar.bz2
    [pjproject] Retrying download
    [pjproject] Downloading https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/2.9/pjproject-2.9.tar.bz2 to /tmp/pjproject-2.9.tar.bz2
    make: *** [Makefile:92: /tmp/pjproject-2.9.tar.bz2] Error 4
    make: *** Deleting file ‘/tmp/pjproject-2.9.tar.bz2’
    failed
    configure: Unable to configure third-party/pjproject
    configure: error: Re-run the ./configure command with ‘NOISY_BUILD=yes’ appended to see error details.
    По адресу 404, это понятно. Установил этот пакет в ручную, но результата это не дало. В чем причина? Как лечить?

    • Zerox

      Как я понял, просто установить пакет не достаточно. При сборке идет попытка его скачать и установить и она не проходит. Надо либо убрать как-то эту проверку, либо решить вопрос с доступом к github. У меня нормально открывается путь по ссылке на pjproject.

      • Аватар

        С офф сайта все качается отлично, оттуда я пакет ручками и установил, но вот с гитхаба 404. Собственно вопрос в том и заключается, как убрать эту проверку? И может ли помочь ручной перенос установленного пакета в директорию, в которую пытается скачаться требуемый пакет?

        • Zerox

          Так попробуйте. Никто другой, кроме вас, не полезет смотреть исходники, чтобы убрать эту проверку. Пробуйте все варианты сами. Это какая-то ваша локальная проблема.

          • Аватар

            Проблема локальная, я согласен. Но вот мне теперь интересно, ставлю астериск на девственно чистую центось, в каком месте что-то пошло не так?

  2. Аватар

    а зачем вам mariadb если вы не подключаете odbc в меню конфигурации?

    • Zerox

      Чаще всего она все же нужна. В том числе используется в моей статье про настройку астериск. Так что лучше сразу поставить.

  3. Аватар

    выскакивает asterisk.service: Supervising process 4384 which is not
    как исправить?

  4. Аватар
    Владислав

    Может кому будет полезно.
    При сборке астериска получил ошибку
    error: unknown type name ‘my_bool’; did you mean ‘bool’
    Я так понял, что в новом mysql переменная my_bool не может быть использована. Не знаю насколько правильно, но это решилось строчкой
    sed -i s/my_bool/bool/ ./addons/cdr_mysql.c
    По сути просто заменил переменную my_bool на bool в двух местах.

    • Zerox

      Припоминаю такую ошибку. Вроде тоже видел, но не стал разбираться, потому что прямая работа с mysql уже давно объявлена deprecated, а используется подключение через odbc.

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

    Добрый день!
    Спасибо за обзор. lame-3.98.4.tar.gz не пробовали ставить? Make install выводит Nothing to be done for ‘install-exec-am’.

  6. Аватар

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

  7. Аватар

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

  8. Аватар

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

  9. Аватар

    у меня при команде 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 $@

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

    • Zerox

      Проверьте, почему нет коннекта к http://svn.digium.com/svn/thirdparty/mp3/trunk
      Можно скачать, положить в другое место и изменить url, если с сервера никак не получается загрузить.

      • Аватар

        Почему нет конекта, я так и не понял. Причём сайт пингуется, и с другого компа на него зайти могу (ip на 1 цифру отличаются). Но проблему решил просто: на 7 центосе скачал и руками переложил на 8 :)

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

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

    • Zerox

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

  11. Аватар

    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. Это не знаю, не проверял. Вроде все работает.

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

Ваш адрес email не будет опубликован.

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