Иван Башлаков
23.04.2020
8247

Установка Asterisk на OS X

Asterisk является известным и очень гибким решением для того, чтобы реализовать ваши потребности в телефонии. Если вам необходима цифровая АТС для офиса или предприятия, то сложно придумать что-то лучше. Как правило, многие системные администраторы используют для разворачивания Asterisk ОС Linux (например, CentOS или Debian), но в данной статье мы рассмотрим как установить эту PBX на […]

Установка Asterisk на OS X

Asterisk является известным и очень гибким решением для того, чтобы реализовать ваши потребности в телефонии. Если вам необходима цифровая АТС для офиса или предприятия, то сложно придумать что-то лучше. Как правило, многие системные администраторы используют для разворачивания Asterisk ОС Linux (например, CentOS или Debian), но в данной статье мы рассмотрим как установить эту PBX на OS X. Для чего это может понадобиться?

            Например, если вы используете OS X Server в своем серверном парке, или у вас есть старенький Mac Mini, который выполняет роль сервера приложений (и на нем еще достаточно оперативной памяти чтобы использовать его возможности для телефонии), или же вся инфраструктура вашей компании построена на использовании продуктов OS X и вы не хотите внедрять что-то стороннее. И, последний, наиболее реалистичный вариант, если вы разработчик и вам необходим Asterisk для тестирования своих приложений в среде OS X.

Возможные варианты установки

Для OS X существует несколько путей установки Asterisk:

  1. Самостоятельная сборка из исходных кодов
  2. Сборка из исходных кодов с использованием сценариев
  3. Использование заранее скомпилированных пакетов

Рассмотрим подробнее каждый из методов:

            Самостоятельная сборка из исходных кодов похожа на то, каким образом аналогичные действия вы могли выполнять на Linux, с тем отличием, что вам понадобится установить инструменты разработчика OS X и настроить их, указав патчи ко всем необходимым для сборки библиотекам.

            Сборка с использованием готовых сценариев похожа на первый вариант установки в несколько облегченном виде: мы будем использовать сторонний менеджер пакетов для OS X — Homebrew, который позволяет устанавливать многие программные утилиты, знакомые для пользователей Linux. Данный пакетный менеджер поддерживает сценарии установки, чем мы и воспользуемся.

            Установка с помощью заранее скомпилированных пакетов это наиболее простой путь, если вы хотите использовать Asterisk на своем Mac. Скомпилированные пакеты с описанием вы можете найти по ссылке https://www.voip-info.org/asterisk-getting-started-on-macosx/

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

Сборка Asterisk из исходных кодов

В качестве тестовой среды мы будем использовать компьютер iMac c установленной OS X Yosemite 10.10 Актуальная версия Asterisk на момент написания статьи 13.21.

Прежде всего нам потребуется установить менеджер пакетов Homebrew для OS X. Мы будем использовать этот инструмент для того, чтобы подготовить окружение, в котором будем производить сборку Asterisk.

Устанавливаем Homebrew:

 Установка пакетного менеджера Homebrew и зависимостей
Установка пакетного менеджера Homebrew и зависимостей

Устанавливаем компилятор GCC и библиотеку Jansson (необходима для сборки Asterisk):

brew install gcc jansson

 Установка компилятора gcc и библиотеки jansson
Установка компилятора gcc и библиотеки jansson

Устанавливаем wget:

brew install wget

Переходим в каталог /usr/local, в котором будем производить сборку:

cd /usr/local

Скачиваем исходные коды Asterisk,распаковываем их и переходим в каталог с ними:

wget http://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-13.21-current.tar.gz

tar -xvf asterisk-certified-13.21-current.tar.gz

cd asterisk-certified-13.21-cert6

Далее мы можем приступить к конфигурированию исходных кодов для дальнейшей сборки. Нам потребуется указать патчи для каталога, куда будет установлен Asterisk и для библиотеки Jansson, которую мы установили несколькими этапами ранее:

sudo./configure —prefix=/usr/local —with-jansson=/usr/local

 Конфигурирование исходных кодов Asterisk
Конфигурирование исходных кодов Asterisk

По окончании конфигурации мы увидим знакомый логотип Asterisk — это свидетельствует о том, что конфигурирование прошло успешно. Затем, прежде, чем перейти к сборке, нам необходимо указать патчи к заголовочным файлам для компилятора, т.к. по-умолчанию gcc будет искать там, где это указано в файле Makefile и Makefile.rules, нам необходимо внести в последний следующий код:

patch -p1 <<EOF

diff —git a/Makefile b/Makefile

index 66a8411..0c7606c 100644

— a/Makefile

+++ b/Makefile

@@ -255,7 +255,7 @@ MOD_SUBDIRS_MENUSELECT_TREE:=$(MOD_SUBDIRS:%=%-menuselect-tree)

ifneq ($(findstring darwin,$(OSARCH)),)

ASTCFLAGS+=-D__Darwin_ -mmacosx-version-min=10.6

_SOLINK=-mmacosx-version-min=10.6 -Xlinker -undefined -Xlinker dynamic_lookup

_SOLINK+=/usr/lib/bundle1.o

+# _SOLINK+=/usr/lib/bundle1.o

SOLINK=-bundle $(_SOLINK)

DYLINK=-Xlinker -dylib $(_SOLINK)

_ASTLDFLAGS+=-L/usr/local/lib

diff —git a/include/asterisk/autoconfig.h b/include/asterisk/autoconfig.h

index b4d56af..e2efed6 100644

— a/include/asterisk/autoconfig.h

+++ b/include/asterisk/autoconfig.h

@@ -326,7 +326,7 @@

/* #undef HAVE_HOARD */

/* Define to 1 if you have the `htonll’ function. / -/ #undef HAVE_HTONLL */

+#define HAVE_HTONLL 1

/* Define to 1 if you have the iCal library. / / #undef HAVE_ICAL / @@ -526,7 +526,7 @@ / #undef HAVE_NEWT */

/* Define to 1 if you have the `ntohll’ function. / -/ #undef HAVE_NTOHLL */

+#define HAVE_NTOHLL 1

/* Define to 1 if your C library can safely print NULL to string formats. */

define HAVE_NULLSAFE_PRINTF 1

@@ -1354,5 +1354,45 @@

code using `volatile’ can become incorrect without. Disable with care. / / #undef volatile */

+#ifndef attribute_malloc

+#define attribute_malloc attribute ((malloc))

+#endif

+#ifndef attribute_pure

+#define attribute_pure attribute ((pure))

+#endif

+

+#ifndef attribute_used

+#define attribute_used attribute ((used))

+#endif

+

+#ifndef attribute_noinline

+#define attribute_noinline attribute ((noinline))

+#endif

+

+#ifndef attribute_deprecated

+#define attribute_deprecated attribute ((deprecated))

+#endif

+

+#ifndef attribute_format_arg

+#define attribute_format_arg(x) attribute ((format_arg (x)))

+#endif

+

+#ifndef attribute_format_strfmon

+#define attribute_format_strfmon(a,b) attribute ((format (strfmon, a, b)))

+#endif

+

+#ifndef nonnull +#define __nonnull(params) __attribute ((nonnull params))

+#endif

+

+#ifndef restrict_arr +#define __restrict_arr __restrict +#endif + +#ifndef __attribute_warn_unused_result

+#define attribute_warn_unused_result attribute ((warn_unused_result))

+#endif

+

#endif

diff —git a/main/Makefile b/main/Makefile

index 0fa2192..d4659bd 100644

— a/main/Makefile

+++ b/main/Makefile

@@ -60,7 +60,7 @@ endif

ifneq ($(findstring darwin,$(OSARCH)),)

AST_LIBS+=-lresolv

ASTLINK=-mmacosx-version-min=10.6 -Xlinker -undefined -Xlinker dynamic_lookup -force_flat_namespace

ASTLINK+=/usr/lib/bundle1.o

+# ASTLINK+=/usr/lib/bundle1.o

else

# These are used for all but Darwin

ifneq ($(findstring LOADABLE_MODULES,$(MENUSELECT_CFLAGS)),)

diff —git a/res/snmp/agent.c b/res/snmp/agent.c

index b607ecf..5af346b 100644

— a/res/snmp/agent.c

+++ b/res/snmp/agent.c

@@ -63,6 +63,10 @@ ASTERISK_FILE_VERSION(FILE, «$Revision: 419592 $»)

#include

#include

+#if !defined(RONLY) && defined(NETSNMP_OLDAPI_RONLY)

+#define RONLY NETSNMP_OLDAPI_RONLY

+#endif

#include «asterisk/paths.h» /* need ast_config_AST_SOCKET */

#include «asterisk/channel.h»

#include «asterisk/logger.h»

EOF

Данный патч был найден нами по следующей ссылке и его авторство принадлежит автору указанного блога. Патч актуален для сборки на OS X, начиная с версии 10.10 Yosemite.

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

Выбор модулей с помощью menuselect
Выбор модулей с помощью menuselect

Дальнейшую компиляцию производим точно так же, как бы мы это делали в LInux:

sudo make

sudo make install

sudo make samples

Сборка Asterisk с помощью сценариев Homebrew

Homebrew это инструмент, который может сильно облегчить вашу участь, если вы разработчик или системный администратор, использующий OS X. Устанавливаем Homebrew:

Затем устанавливаем пакет инструментов разработчика (XCode):

xcode-select —install

После этого укажем Homebrew, какой сценарий использовать:

brew tap leedm777/homebrew-asterisk

И приступим к установке:

brew install asterisk

Возможны следующие опции при установке:

—with-dev-mode (сборка в режиме разработчика, игнорирование предупреждений и ошибок)

—devel (сборка последний версии исходных кодов 13 ветки)

—HEAD (сборка последний доступной версии исходных кодов)

Запуск Asterisk:

brew services start leedm777/asterisk/asterisk

$ /usr/local/sbin/asterisk -rvvv

 Запуск Asterisk в OS X
Запуск Asterisk в OS X
Книга 101 функция Asterisk
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
Скачать книгу
Подписаться
Уведомить о
guest
2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Дмитрий
Дмитрий
03.12.2020 11:40

Не работает для Asterisk 18.1 на macos Catalina.
Подскажите как правильно установить.

Александр
Александр
04.12.2020 14:59
Ответить на  Дмитрий

В статье все тестировалось на Asterisk 13, на 18й версии не тестировалось.

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.