Thank you for reading this post, don't forget to subscribe!
Установка будет из исходных текстов, так как репозиториев с готовыми пакетами под новую систему я не смог найти.
Я устанавливаю версию 16, хотя есть уже 17-я. Именно 16-я версия имеет статус LTS, то есть длительная поддержка. Если вам не нужны новые фичи промежуточных версий, рекомендую всегда ставить lts версии.
Для установки Asterisk 16 на свежую Centos 8 я не нашел репозитория, где бы были собраны все пакеты с зависимостями для быстрой и безпроблемной установки.
Первым делом надо отключить SELinux. Открываем файл /etc/sysconfig/selinux и меняем параметр.
1 |
# mcedit /etc/sysconfig/selinux |
1 |
SELINUX=disabled |
Для применения настройки нужно перезагрузиться, либо временно приостановить 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
Установка Asterisk 16
Я буду устанавливать LTS версию Asterisk 16. Советую для долгосрочного использования всегда использовать LTS версии. Они в целом стабильнее и дольше срок поддержки. Идем на страницу https://www.asterisk.org/downloads/asterisk/all-asterisk-versions и копируем ссылку на нужную версию. Загружаем ее на сервер.
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 |
Выбирайте необходимые модули и звуки, в зависимости от того, что вам нужно. Я в общем случае указываю:
- 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 и запуск
По-умолчанию, 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 2 |
# 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 |
добавим в автозагрузку:
1 |
# systemctl enable asterisk |