Цель: Установка и настройка CentOS-8 для установки и работы АТС Asterisk 16 Инструкция написана 06/09/2024 Установка CentOS-8 описана в статье https://serveradmin.ru/ustanovka-centos-8/ Выбрана CentOS-8-x86_64-1905 https://mirror.yandex.ru/centos/8.0.1905/isos/x86_64/CentOS-8-x86_64-1905-dvd1.iso 6,64 ГБ В качестве альтернативных зеркал для загрузки centos 8 можно использовать следующие: http://mirror.corbina.net/pub/Linux/centos/ http://mirror.docker.ru/centos/ http://mirror.logol.ru/centos/ После установки CentOS-8 1. Меняем настройки репозитория. cd /etc/yum.repos.d/ sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* dnf update -y dnf repolist 2. Обновляем систему (~ 500MB ) dnf update 3. Для удобства администрирования я всегда устанавливаю Midnight Commander, и текстовый редактор nano (поддеживает вставку из буфера обмена Windows нажатием правой кнопкой мыши, а это удобно): Текстовый редактор nano, команды: https://wirenboard.com/wiki/Nano yum install mc yum install nano yum install traceroute И сразу же для Midnight Commander включаю подсветку синтаксиса всех файлов, которые не обозначены явно в файле /usr/share/mc/syntax/Syntax синтаксисом для sh и bash скриптов. Этот универсальный синтаксис нормально подходит для конфигурационных файлов, с которыми чаще всего приходится работать на сервере. Перезаписываем файл unknown.syntax. Именно этот шаблон будет применяться к .conf и .cf файлам, так как к ним явно не привязано никакого синтаксиса. cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax 4. Создание нового пользователя После входа в систему с привилегиями root вы можете создать новую учетную запись, которую мы будем использовать далее для входа в систему. Этот пример создает нового пользователя с именем uip88, но вы должны заменить это имя на любое предпочитаемое вами имя: adduser uip88 Далее мы установим надежный пароль для пользователя uip88: passwd uip88 будет предложено ввести пароль дважды. После этого ваш пользователь будет готов к работе, но сначала мы предоставим этому пользователю дополнительные права на использование команды sudo. Это позволит нам запускать команды с правами root при необходимости. usermod -aG wheel uip88 5. Отключить SELinux (Фаервол, брендмауер, защитник сетевого трафика) Отключаем SELinux. Его использование и настройка отдельный разговор. Сейчас я не буду этим заниматься. Так что отключаем: mcedit /etc/sysconfig/selinux меняем значение (ВАЖНО! это не последняя запись, не прояби!) SELINUX=disabled Чтобы изменения вступили в силу, можно перезагрузиться: reboot А если хотите без перезагрузки применить отключение SELinux, то выполните команду: setenforce 0 У меня пока я не перезапустил ОС нифига правильно не работало!!!!!!!!!!!!!!!!!! 6. Установим теперь пакеты, которые нам понадобятся для сборки. В первую очередь подключим репозиторий epel. dnf install epel-release Дальше идет мета пакет Development Tools со всем необходимым для сборки из исходников. dnf groupinstall "Development Tools" 7. Установка и настройка mysql сервер, задав пароль для root. dnf install mariadb mariadb-server dnf install sqlite-devel systemctl start mariadb systemctl enable mariadb /usr/bin/mysql_secure_installation ===========================????????????????????????????????????? Это настройка MySQL и я пока не настраивал. 8. Устанавливаем Jansson и pjsip cd /usr/src git clone https://github.com/akheron/jansson.git cd jansson autoreconf -i ./configure --prefix=/usr/ cd /usr/src 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 ldconfig 9. Установка Asterisk 16 cd /usr/src wget https://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-16.30.1.tar.gz tar xfz asterisk-16.30.1.tar.gz contrib/scripts/install_prereq install contrib/scripts/get_mp3_source.sh 10. Устанавливаем на centos 8 пакет libedit-devel. dnf config-manager --set-enabled powertools dnf install libedit-devel 11. Собираем asterisk ./configure --libdir=/usr/lib64 make menuselect 12. Выбирайте необходимые модули и звуки, в зависимости от того, что вам нужно. Я в общем случае указываю: 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 13. Создание пользователя asterisk и запуск По-умолчанию, asterisk установлен от root и будет запускаться от него же, но у меня CentOS-8 отказывалась запускать asterisk из под root-а Создаем отдельного пользователя и запускать астериск от него. Для этого создаем пользователя и добавляем его в некоторые группы. У меня получилось создать юзера только из консоли VMWare, из SSH соединения putty не давало. 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 запустился, но есть небольшие ошибки: # 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 systemctl restart asterisk Проверяем systemctl status asterisk Заходим в консоль asterisk-а asterisk -r Если получили такой же вывод команды Asterisk 16.30.1, Copyright (C) 1999 - 2021, Sangoma Technologies Corporation and others. Created by Mark Spencer Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Running as user 'asterisk' Running under group 'asterisk' Connected to Asterisk 16.30.1 currently running on asterisk (pid = 6252) asterisk*CLI> значит все в порядке, астериск 16 установлен. Добавим его теперь в автозагрузку. systemctl enable asterisk На этом установка Asterisk 16 на Centos 8 закончена. Можете приступать к настройке. https://serveradmin.ru/nastroyka-servera-telefonii-asterisk-s-nulya/ Делае тестовую настройку asterisk, совсем отключаем и удаляем firewalld: ( В рабочей версии обязятельно займёмся БЕЗОПАСТНОСТЬЮ! вот тут https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-8-ru) systemctl stop firewalld systemctl disable firewalld dnf remove firewalld 14. А пока адресная книга из web интерфейса (проба пера https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-centos-8-ru) Установка: sudo dnf install httpd Запуск: systemctl start httpd Проверяем в браузере. http://адрес_сервера Остановка: systemctl stop httpd Рестарт systemctl restart httpd Apache будет запускаться автоматически при загрузке сервера. systemctl enable httpd chown -R www.www /var/www/root