Установка 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-onschan_ooh323, format_mp3, res_config_mysql
  • Codec Translators – отмечаем все кодеки
  • Core Sound Packages – выделяем все звуковые пакеты с русским языком CORE-SOUNDS-RU
  • Music On Hold File Packages – выделяем все пункты в данном меню
Add-ons
Codec Translators
Core Sound Packages
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/sysconfig/asterisk

Откроем на редактирование файл /etc/asterisk/asterisk.conf

nano /etc/asterisk/asterisk.conf

Раскомментируем две строки

runuser = asterisk ; The user to run as.
rungroup = asterisk ; The group to run as.
/etc/asterisk/asterisk.conf

Перезагрузим Asterisk для применения внесенных нами изменений

systemctl restart asterisk

Добавим Asterisk в автозагрузку при старте системы

systemctl enable asterisk
Проверяем работу Asterisk

Давайте проверим статус процесса asterisk. Запущен он или нет и есть ли какие-то ошибки

systemctl status asterisk
systemctl status asterisk

По статусу видно что служба запущена (active). Внизу можно увидеть краткий лог работы программы.

Зайдем в консоль Asterisk и проверим что программа отвечает. Также выполним несколько команд. Зайти в консоль можно командой asterisk -r я обычно использую asterisk -rvvvvvv для полной детализации лога в консоли.

asterisk -rvvvvvv
asterisk -rvvvvvv

После успешного входа в консоль можно увидеть версию Asterisk. Попробуем ввести парочку команд для проверки работы.

core show channels

Команда отработала успешно, проверим список всех SIP peers

sip show peers

Эта команда не сработает. В предыдущих версиях Asterisk данная команда сработала бы без вопросов. Дело в том что начиная с 17 версии Asterisk модуль chan_sip отвечающий за работу модуля SIP считается устаревшим и по умолчанию отключен. Попытаемся его загрузить из консоли.

module load chan_sip.so
module load chan_sip.so

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

sip show peers
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 я записал на видео.

Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.

Поделиться:

19 thoughts on “Установка Asterisk 18 на Centos 8

  • 26 февраля, 2021 в 10:39
    Permalink

    Было очень полезно, спасибо! Ждём следующую статью по настройке))
    Когда планируете выпустить ?

    Ответ
    • 26 февраля, 2021 в 10:44
      Permalink

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

      Ответ
  • 10 марта, 2021 в 14:06
    Permalink

    Ждём следующую статью по настройке.

    Ответ
    • 10 марта, 2021 в 14:25
      Permalink

      Она в процессе, больше половины уже готово

      Ответ
  • 28 марта, 2021 в 18:10
    Permalink

    Великолепная, актуальная статья. Все, четко, понятно, красиво! Конечно, тоже, будем рады статье по первоначальной настройке всего этого добра ))

    Ответ
    • 28 марта, 2021 в 19:00
      Permalink

      Спасибо за комент. Статья уже есть посмотрите в разделе asterisk

      Ответ
  • 7 июля, 2021 в 12:20
    Permalink

    Хотелось услышать Ваше мнение по поводу стоит ли устанавливать CentOS, ведь от неё отказались

    Ответ
    • 7 июля, 2021 в 12:35
      Permalink

      Отказалась IBM но не исключено что ее подхватит другая компания. Большие сомнения что такой дистр просто “выкинут”. Ну как вариант либо CentOS Stream либо другой RHEL дистриб.

      Ответ
      • 7 июля, 2021 в 14:17
        Permalink

        Спасибо за ответ! А как Вы относитесь к Ubuntu Serv

        Ответ
        • 7 июля, 2021 в 14:23
          Permalink

          Вполне нормальный сервер, скажу больше почтовые сервера у меня на нем. Можно как вариант брать его для продакшена, только лучше версию LTS

          Ответ
          • 8 июля, 2021 в 07:20
            Permalink

            Для Asterisk он пойдет? (Ubuntu)

          • 8 июля, 2021 в 11:50
            Permalink

            Конечно подойдет. Asterisk есть в RPM и DEB пакетах. А если очень захочется то можно собрать из исходников

  • 9 августа, 2021 в 20:29
    Permalink

    Running as user ‘asterisk’
    Running under group ‘asterisk’
    Connected to Asterisk 18.5.0 currently running on localhost (pid = 89076)
    localhost*CLI> core reload
    [Aug 9 20:28:42] NOTICE[89280]: res_config_ldap.c:1830 parse_config: No directory user found, anonymous binding as default.
    [Aug 9 20:28:42] ERROR[89280]: res_config_ldap.c:1856 parse_config: No directory URL or host found.
    [Aug 9 20:28:42] NOTICE[89280]: res_config_ldap.c:1774 reload: Cannot reload LDAP RealTime driver.
    [Aug 9 20:28:42] WARNING[89280]: res_config_pgsql.c:1443 parse_config: PostgreSQL RealTime: Not connected
    [Aug 9 20:28:42] NOTICE[89280]: cdr.c:4504 cdr_toggle_runtime_options: CDR simple logging enabled.
    [Aug 9 20:28:42] NOTICE[89281]: sorcery.c:1348 sorcery_object_load: Type ‘system’ is not reloadable, maintaining previous values
    [Aug 9 20:28:42] WARNING[89280]: res_phoneprov.c:1232 get_defaults: Unable to find a valid server address or name.
    [Aug 9 20:28:42] NOTICE[89280]: chan_skinny.c:8451 config_load: Configuring skinny from skinny.conf
    [Aug 9 20:28:42] ERROR[89280]: ari/config.c:312 process_config: No configured users for ARI
    [Aug 9 20:28:42] NOTICE[89280]: cel_custom.c:95 load_config: No mappings found in cel_custom.conf. Not logging CEL to custom CSVs.
    == == Host-ID: 77:a2:19:76:ca:9a:8b:f0:50:e4:84:20:69:0e:05:00:ea:58:46:fe
    [Aug 9 20:28:42] WARNING[89280]: codec_g729a.c:463 process_licenses: Failed to initialize G.729 copy protection!
    [Aug 9 20:28:42] NOTICE[89280]: app_queue.c:9155 reload_queue_rules: queuerules.conf has not changed since it was last loaded. Not taking any action.
    localhost*CLI> core show channels

    Ответ
  • 7 сентября, 2021 в 19:02
    Permalink

    после команды systemctl enable asterisk

    получил сообщение:
    asterisk.service is not a native service, redirecting to systemd-sysv-install.
    Executing: /usr/lib/systemd/systemd-sysv-install enable asterisk

    сервис не нативный, в итоге не ясно сработало или нет?

    так же когда проверяю запущен ли процесс, он таки да, запущен но ниже такие вот сообщения:
    Sep 07 18:40:34 asterisk[118962]: Starting asterisk:
    Sep 07 18:40:34 systemd[1]: asterisk.service: Can’t open PID file /var/run/asterisk/asterisk.pid (yet?) after start: No such file or directory
    Sep 07 18:40:34 systemd[1]: asterisk.service: Supervising process 118993 which is not our child. We’ll most likely not notice when it exits.
    Sep 07 18:40:34 systemd[1]: Started LSB: Asterisk PBX.
    Sep 07 18:40:36 asterisk[118993]: radcli: rc_read_config: rc_read_config: can’t open /etc/radiusclient-ng/radiusclient.conf: No such file or directory
    Sep 07 18:40:36 asterisk[118993]: radcli: rc_read_config: rc_read_config: can’t open /etc/radiusclient-ng/radiusclient.conf: No such file or directory
    Sep 07 18:40:44 systemd[1]: asterisk.service: Supervising process 118993 which is not our child. We’ll most likely not notice when it exits.
    Sep 07 18:40:44 systemd[1]: asterisk.service: Supervising process 118993 which is not our child. We’ll most likely not notice when it exits.
    Sep 07 18:41:36 systemd[1]: asterisk.service: Supervising process 118993 which is not our child. We’ll most likely not notice when it exits.
    Sep 07 18:41:36 systemd[1]: asterisk.service: Supervising process 118993 which is not our child. We’ll most likely not notice when it exits.

    Ответ
    • 8 сентября, 2021 в 10:11
      Permalink

      Команда systemctl enable asterisk добавляет asterisk в автозагрузку. Проверить отработала она или нет можно очень просто. Перезагрузите систему и зайдите к консоль asterisk, либо проверьте статус сервиса systemctl status asterisk

      Ответ
      • 8 сентября, 2021 в 14:07
        Permalink

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

        Ответ
        • 9 сентября, 2021 в 11:05
          Permalink

          Он может не находить какие-то модули, которые скорее всего никогда не будут использоваться. Если же они потребуются их можно будет подключить позже. Пользователь asterisk должен быть без пароля, под ним запускается сервис. Сам астериск паролем не защищается

          Ответ
          • 9 сентября, 2021 в 13:13
            Permalink

            Большое спасибо, крепкого Вам здоровья и удачи в начинаниях.

          • 9 сентября, 2021 в 13:33
            Permalink

            Спасибо, взаимно.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *