Быстрая установка из репозитория Centos 7
У asterisk не существует официального репозитория пакетов, поэтому предпочтительным способом установки свежей версии является сборка из исходников. Но если вы хотите быстро установить и потестить систему, то можно использовать один из сторонних репозиториев asterisk. К примеру — Tuncy. Я не знаю, кто ведет этот репозиторий, как часто он обновляется и насколько там актуальные версии. На момент актуализации этой статьи (март 2020 года) в репозитории не было свежих пакетов для Centos 8, только для 7-й.
Добавляем репозиторий астериск в систему. Для этого создаем файл /etc/yum.repos.d/tuncy-asterisk-16.repo следующего содержания.
1 2 3 4 5 6 |
[asterisk-common] name=Asterisk Common Requirement Packages @ tucny.com baseurl=https://ast.tucny.com/repo/asterisk-common/el\$releasever/\$basearch/ enabled=1 gpgcheck=1 gpgkey=https://ast.tucny.com/repo/RPM-GPG-KEY-dtucny |
1 2 |
[asterisk-16] name=Asterisk 16 Packages @ tucny.com baseurl=https://ast.tucny.com/repo/asterisk-16/el\$releasever/\$basearch/ enabled=1 gpgcheck=1 gpgkey=https://ast.tucny.com/repo/RPM-GPG-KEY-dtucny |
Обновляем информацию о репозиториях и устанавливаем астериск.
1 |
yum install asterisk |
Установка из исходников Centos 8
Отключаем SELinux
1 |
nano /etc/sysconfig/selinux |
меняем значение
1 |
SELINUX=disabled |
Чтобы изменения вступили в силу, можно перезагрузиться:
1 |
reboot |
А если хотите без перезагрузки применить отключение SELinux, то выполните команду:
1 |
setenforce 0 |
Установим теперь пакеты, которые нам понадобятся для сборки. В первую очередь подключим репозиторий epel.
1 |
dnf install epel-release |
Дальше идет мета пакет Development Tools со всем необходимым для сборки из исходников.
1 |
dnf groupinstall "Development Tools" |
И еще некоторые зависимости, которые будут нужны.
1 |
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 |
Настройте mysql сервер, задав пароль для root.
1 2 3 |
systemctl start mariadb systemctl enable mariadb /usr/bin/mysql_secure_installation |
На этом подготовка закончена.
Устанавливаем Jansson и pjsip.
1 2 3 4 5 6 |
cd ~ git clone https://github.com/akheron/jansson.git cd jansson autoreconf -i ./configure --prefix=/usr/ make && make install |
1 2 3 4 5 6 |
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 |
Все готово к установке непосредственно Astersik.
Я буду устанавливать LTS версию Asterisk 16. Советую для долгосрочного использования всегда использовать LTS версии. Они в целом стабильнее и дольше срок поддержки.
1 2 3 4 5 6 |
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 |
Устанавливаем на centos 8 пакет libedit-devel.
1 2 |
dnf config-manager --set-enabled PowerTools dnf install libedit-devel |
Собираем asterisk.
1 2 |
./configure --libdir=/usr/lib64 make menuselect |
Выбирайте необходимые модули и звуки, в зависимости от того, что вам нужно. Я в общем случае указываю:
1 2 3 4 |
Add-ons: format_mp3, res_config_mysql. Core Sound Packages: русские звуки RU-WAV. Music On Hold File Packages: звук WAV. Extras Sound Packages: английский EN-WAV, русского к сожалению нет. |
Все остальные настройки оставляем по-умолчанию. Ставится много модулей. Все они не нужны, но мало ли, пригодится что-то в будущем. Неиспользуемые модули можно будет потом отключить в конфигурации.
Продолжаем установку:
1 2 |
make && make install && make samples && make config ldconfig |
По-умолчанию, asterisk установлен от root и будет запускаться от него же. Я предлагаю для этого создать отдельного пользователя и запускать астериск от него. Для этого создаем пользователя и добавляем его в некоторые группы.
1 2 3 4 |
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 параметры:
1 2 |
AST_USER="asterisk" AST_GROUP="asterisk" |
Теперь добавим примерно то же самое в сам конфиг астера /etc/asterisk/asterisk.conf.
1 2 |
runuser = asterisk rungroup = asterisk |
Пробуем запустить asterisk:
1 |
systemctl start asterisk |
Если нет сообщений об ошибке, скорее всего все в порядке. Проверяем статус службы.
1 |
systemctl status asterisk |
Asterisk запустился, но есть небольшие ошибки.
1 |
radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory |
Связаны с тем, что в конфигах неверно указан путь к radiusclient. Сейчас исправим это.
1 2 3 |
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 и убеждаемся, что ошибок нет. Проверим, все ли в порядке, зайдя в консоль:
1 |
asterisk -r |
Если получили такой же вывод команды, значит все в порядке, астериск 16 установлен. Добавим его теперь в автозагрузку.
1 |
systemctl enable asterisk |
Для тех, у кого что-то не получается или не понятно, как сделать, записал видео по приведенной инструкции. Видео подтверждает, что материал актуален и если делать по нему, то все получится.
Подключение абонентов и проверка внутренних звонков
Можно попробовать подключиться и протестировать работу АТС. Я для отладки использую бесплатную софтовую звонилку 3CXPhone 6-й версии. Не знаю, где ее сейчас найти в интернете. У самого производителя давно уже вышли более новые и платные версии, которые работают только с его АТС. А эта версия универсальная. В ней отличный функционал, удобные настройки, есть дебаг режим с подробным логированием. Пользоваться программой удобно и приятно.
Теперь нам нужно сделать некоторые общие настройки и добавить пользователей. Работать будем с файлом конфигурации /etc/asterisk/sip.conf. Файлы настроек астера хорошо закомментированы, но мне это мешает с ними работать. Они слишком большие и громоздкие, неудобно прокручивать вверх и вниз, поэтому я их полностью чищу и вношу только те настройки, которые мне нужны. Так удобнее и нагляднее получается. Сохраните на всякий случай куда-нибудь оригинальный файл sip.conf и начинайте новую настройку. Вот мой пример конфига для нашего случая:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[general] ;Внешний ip адрес externaddr=212.78.136.18:5060 ;Указываем использовать русскую озвучку language=ru context=default allowoverlap=no udpbindaddr=0.0.0.0 tcpenable=no tcpbindaddr=0.0.0.0 transport=udp srvlookup=yes allowguest=no limitonpeers=yes |