Статья рассчитана для новичков в установке астериск из исходников. В этом нет ничего трудного, как может показаться.
Итак, имеем установленную Ubuntu 18 LTS Server и цель установить Asterisk 16.X.X Communications Framework:
Если вам нужны базовые конфиги после установки, то выполняем:
При необходимости добавляем астер в автозапуск и стартуем службу:
Для сохранения минимально необходимого функционала я использую следующий набор модулей для Asterisk 16. По названию чаще всего можно понять, зачем нужен модуль. Все файлы модулей должны присутствовать в папке /usr/lib/asterisk/modules/.
nano /etc/asterisk/modules.conf
acl.conf, asterisk.conf, calendar.conf, ccss.conf, cdr.conf, cdr_mysql.conf, cel.conf, chan_dahdi.conf, cli.conf, codecs.conf, confbridge.conf, extensions.ael, extensions.conf, extensions.lua, features.conf, festival.conf, followme.conf, iax.conf, indications.conf, logger.conf, manager.conf, mgcp.conf, modules.conf, musiconhold.conf, muted.conf, ooh323.conf, pjproject.conf, queuerules.conf, queues.conf, res_parking.conf, res_snmp.conf, rtp.conf, sip.conf, stasis.conf, udptl.conf, voicemail.conf.
На этом все, проверяем работу и смотрим на возможные ошибки в консоли:
Итак, имеем установленную Ubuntu 18 LTS Server и цель установить Asterisk 16.X.X Communications Framework:
cd /usr/src/
sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
sudo tar zxvf asterisk-16-current.tar.gz
cd asterisk-16*/
Устанавливаем зависимости:sudo apt-get install build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git subversion
Поддержку mp3sudo contrib/scripts/get_mp3_source.sh
Доустанавливаем зависимости:sudo contrib/scripts/install_prereq install
Компилим и ставим астериск:sudo ./configure && make menuselect && make && make install
В процессе установки вам нужно будет отметить нужные компоненты, если ставите в первый раз - оставляйте все как есть. Я обычно включаю поддержку MySQL/Postgres (либо ODBC) и русские звуковые файлы. В данном случае, помимо стандартного набора по умолчанию, я добавил chan_ooh323, res_config_mysql, app_macro и codec_g729.Если вам нужны базовые конфиги после установки, то выполняем:
sudo make samples
Устанавливаем скрипты для ротации логов:make install-logrotate
Устанавливаем скрипт инициализации (для автозапуска):make config
Если вы хотите повысить безопасность заставив asterisk работать от одноименного пользователя, выполняем следующее:sudo groupadd asterisk
sudo useradd -d /var/lib/asterisk -g asterisk asterisk
sudo sed -i 's/#AST_USER="asterisk"/AST_USER="asterisk"/g' /etc/default/asterisk
sudo sed -i 's/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/g' /etc/default/asterisk
sudo sed -i 's/;runuser = asterisk/runuser = asterisk/g' /etc/asterisk/asterisk.conf
sudo sed -i 's/;rungroup = asterisk/rungroup = asterisk/g' /etc/asterisk/asterisk.conf
sudo chown -R asterisk:asterisk /var/spool/asterisk /var/run/asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib/asterisk
Перенастроим logrotate, чтобы он создавал новые файлы лога с правильными правами:nano /etc/logrotate.d/asterisk
Находим строчку:create 640 root root
и меняем на create 640 asterisk asterisk
Иначе на следующий день вы получите в консоли астериска ошибку: Unable to open log file '/var/log/asterisk/messages': Permission denied' и Unable to create queue log: Permission denied. При необходимости добавляем астер в автозапуск и стартуем службу:
sudo /etc/init.d/asterisk start
sudo systemctl enable asterisk
Если вам нужно перекомпилировать астериск и запустить заново, все просто:cd /usr/src/asterisk-16*/
./configure
make menuselect
make install
/etc/init.d/asterisk restart
Добавим дополнительные русские звуковые файлы для Asterisk, которых не было в исходниках:wget --no-check-certificate https://github.com/pbxware/asterisk-sounds-additional/tarball/master -Oadditional-sounds.tar.gz
Звуковые файлы из полученного архива нужно извлечь в папку /var/lib/asterisk/sounds/ru/ и на всякий случай обновить права: sudo chown -R asterisk:asterisk /var/lib/asterisk
Посмотреть, что озвучено можете по этой ссылке.Для сохранения минимально необходимого функционала я использую следующий набор модулей для Asterisk 16. По названию чаще всего можно понять, зачем нужен модуль. Все файлы модулей должны присутствовать в папке /usr/lib/asterisk/modules/.
nano /etc/asterisk/modules.conf
[modules]
autoload=no ; отменяем загрузку всех модулей, будем подключать только необходимые
;для работы SIP VoIP
load => chan_sip.so ; SIP протокол, требует res_features.so
load => res_sorcery_config.so
load => res_pjproject.so ; без него не загружается следующий
load => res_rtp_asterisk.so
load => app_dial.so ; приложение для звонка, требует res_features.so, res_musiconhold.so
load => app_echo.so
load => bridge_simple.so ; для соединения каналов
load => app_bridgewait.so
load => app_transfer.so ; для перевода звонка
load => app_verbose.so ; для детальной статистики в консоли
load => app_voicemail.so ; голосовая почта, требует res_adsi.so
load => app_playback.so ; проиграть сообщений в линию
load => app_stack.so
load => app_confbridge.so ;конференции
load => app_directory.so
load => res_adsi.so
load => app_system.so ;для запуска внешний приложений
load => app_queue.so ;для работы очередей
;для получения статусов линий
load => func_devstate.so
load => app_chanisavail.so; для работы ChanIsAvail
load => func_cut.so; для использования функции cut
;для работы музыки на удержании вызова
load => res_musiconhold.so
load => pbx_config.so
; кодеки
load => codec_a_mu.so
load => codec_adpcm.so
load => codec_alaw.so
load => codec_ulaw.so
load => codec_gsm.so
load => codec_ilbc.so
load => codec_lpc10.so
;load => codec_g729.so; этот скачивал с сайта asterisk.hosting.lv, оптимальный для медленных подключений
load => codec_g726.so
load => codec_g722.so
;и форматы
load => format_gsm.so ; Raw GSM data - Requires N/A
load => format_h263.so ; Raw h263 data - Requires N/A
load => format_pcm.so ; Raw uLaw 8khz Audio support (PCM) - Requires N/A
load => format_wav_gsm.so ; Microsoft WAV format (Proprietary GSM) - Requires N/A
load => format_wav.so ; Microsoft WAV format (8000hz Signed Linear) - Requires N/A
load => format_mp3.so ; mp3
; парковка вызовов
load => res_parking.so
; для IAX2-транков:
load => res_crypto.so
load => chan_iax2.so ;Inter Asterisk eXchange (Ver 2), требует res_crypto.so, res_features.so
load => res_timing_timerfd.so ;Timerfd Timing Interface
; модули которые понадобятся при настройке записи разговоров
; требуется если используется res_monitor.so
load => func_periodic_hook.so
;её зависимости
load => app_chanspy.so
load => func_groupcount.so
load => func_uri.so
; требуется если используется res_monitor.so, функция STRFTIME
load => func_strings.so
; требуется если используется res_monitor.so для определения номера, функция CALLERID
load => func_callerid.so
load => func_volume.so
; для записи разговоров
load => res_monitor.so
load => app_macro.so ; для выполнение макросов, но лучше перейти на GoSub
load => app_mixmonitor.so
load => func_channel.so
; для записи статистики звонков в MySQL базу напрямую, минуя ODBC
load => cdr_mysql.so
load => res_config_mysql.so ;MySQL RealTime Configuration Driver
;для записи статистики звонков в MySQL базу через ODBC
;я отключаю т.к. удобнее настроить mysql соединение напрямую средствами Asterisk
;load => res_odbc.so
;load => res_config_odbc.so
;load => cdr_odbc.so ;
;для запросов в БД астериска AstDB
load => func_db.so
load => app_db.so
; для включения функционала SNMP, например чтобы собирать статистику различными системами мониторинга
load => res_snmp.so
; для совершения вызовов из контекста помещаемых файлов в директорию /var/spool/asterisk/outgoing/
load => pbx_spool.so
; для 323-транков:
load => chan_ooh323.so
; еще несколько необходимых
load => app_exec.so; для работы exec и execif
load => app_while.so ; для циклов в диалплане
load => res_sorcery_astdb.so
load => res_sorcery_realtime.so
load => app_read.so
load => app_stack.so
load => cdr_csv.so ; выгрузка логов в /var/log/asterisk/cdr-csv/Master.csv
load => func_cdr.so
load => func_logic.so
load => func_timeout.so
load => func_shell.so
load => pbx_ael.so
load => res_ael_share.so
load => res_agi.so
load => res_speech.so ; нужен для res_agi.so
;
А вот список конфигурационных файлов по умолчанию в папке /etc/asterisk:acl.conf, asterisk.conf, calendar.conf, ccss.conf, cdr.conf, cdr_mysql.conf, cel.conf, chan_dahdi.conf, cli.conf, codecs.conf, confbridge.conf, extensions.ael, extensions.conf, extensions.lua, features.conf, festival.conf, followme.conf, iax.conf, indications.conf, logger.conf, manager.conf, mgcp.conf, modules.conf, musiconhold.conf, muted.conf, ooh323.conf, pjproject.conf, queuerules.conf, queues.conf, res_parking.conf, res_snmp.conf, rtp.conf, sip.conf, stasis.conf, udptl.conf, voicemail.conf.
На этом все, проверяем работу и смотрим на возможные ошибки в консоли:
sudo asterisk -c
Если выводятся только предупреждения, переходим к дальнейшей настройке. Например, по этой статье.
как бы теперь удалить этот Asterisk ?
ОтветитьУдалитьУдалить Asterisk установленный из исходников можно так:
Удалитьcd /usr/src/asterisk-16*
make uninstall-all
Или руками:
/etc/init.d/asterisk stop
killall -9 safe_asterisk
killall -9 asterisk
systemctl disable asterisk
rm -rf /etc/asterisk
rm -rf /var/log/asterisk
rm -rf /var/lib/asterisk
rm -rf /var/lib64/asterisk
rm -rf /var/spool/asterisk
rm -rf /usr/lib/asterisk
rm -rf /usr/lib64/asterisk
спасибо. к сожалению, дюже много места занимает на vps'ке (
Удалитьи от себя добавлю, удалить исходники
rm -rf /usr/src/asterisk-16.10.0
как "настроить mysql соединение напрямую средствами Asterisk" ?
ОтветитьУдалитьИспользовать для настройки не драйвер odbc, а модули выше и конфиг /etc/asterisk/cdr_mysql.conf
УдалитьВ конфиге указываем настройки для подключения к БД. Например:
hostname=127.0.0.1
dbname=asteriskcdr
table=cdr
user=asterisk
password=password