По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Привет, друг! В марте 2017 года на сайте разработчика FreePBX Distro появился новый дистрибутив, который включает в себя FreePBX 14 версии, Linux 7.3 и само ядро обработки телефонных вызовов – Asterisk (11, 13 и 14 версии). Отметим, что на момент написания статьи релиз проходит полномасштабное тестирование и доступен в формате «релиз - кандидата», или просто RC (Release Candidate). В статье рассмотрим процесс установки дистрибутива RC 1 SNG7-FPBX-64bit-1703-1 и проведем беглый обзор новых «фишек». Установка Установку мы будем производить на виртуальной машине в среде виртуализации Hyper-V. После загрузки .iso дистрибутива с сайта разработчика, сравниваем его MD5 - сумму и подключаем его к виртуальному приводу и включаем виртуальную машину: Выбираем рекомендуемую опцию инсталляции и нажимаем Enter: Выбираем опцию вывод детализации информации об установке через VGA и нажимаем Enter: Оставляем селектор на стандартной установке и нажимаем Enter: Начинается процесс установки, который занимает примерно 10-20 минут. По окончанию установки мы увидим соответствующее сообщение. Нажимаем Reboot: Готово. Переходим к изучению нового интерфейса. Новый интерфейс FreePBX 14 Из нововведений сразу в глаза бросается виджет Live Network Usage, который показывает загрузку виду Tx/Rx (передача/прием) на сетевом интерфейсе: Пробежимся по вкладке Admin. Мы нашли дополнительный раздел Updates, в котором теперь можно планировать автоматическое обновление системы и модулей: Во вкладке Applications появился модуль Calendar, который позволяет производить интеграцию с календарями (Outlook, iCal, CalDAV и обычный локальный календарь): Важнейшей особенностью нового интерфейса является UCP (User Control Panel) 14 версии, в котором полностью переделана графическая компонента, визуализация информации, добавлена гибкая система настройки «дашбордов» и настройки виджетов: Мы продолжим следить за новым релизом и держать вас в курсе :)
img
Чтобы понять NoSQL, нужно разобраться, что такое SQL и почему мы говорим ему No. Итак, SQL (structured query language) расшифровывается как «язык структурированных запросов», и это язык запросов для управления данными в так называемых реляционных базах данных, или просто БД В реляционных базах мы храним данные в таблицах, которые логически связаны между собой - отсюда и название - реляционные от слова relation, связь. Это один из самых популярных типов баз. В этих таблицах есть строки и столбцы. В столбце таблицы хранится определенный тип данных, а в каждой ячейке – значение. Строка же получается как набор связанных значений, которые относятся к одному объекту - мы видим что у крыла типа чайка длина 25 метров. Ну и каждая строка в таблице может быть помечена каким то уникальным идентификатором, который называется первичным ключом (primary key). А затем при помощи него мы можем связать данные из нескольких таблиц, например в отдельной таблице, где он станет внешним ключом (foreign key). В общем, как таблица в экселе, только данные могут быть связаны. Что еще важно знать: реляционные БД требуют так называемую схему (schema) - описание структуры таблицы ее полей и ограничений. То есть если нам например нужно добавить или убрать столбец в таблице, то это изменение коснется всех данных внутри нее. Также БД этого типа соответствуют так называемым принципам ACID (Atomicity — Атомарность, Consistency — Согласованность, Isolation — Изолированность, Durability — Надёжность), что вкратце означает, что при работе с базой, целостность и согласованность данных гарантирована, даже если возникли проблемы с сетью или железом, что полезно при работе с финансами, например. В качестве примеров таких баз назовем: Microsoft SQL Server, Oracle Database, MySQL и PostgreSQL. Разобрались. Теперь вернемся к NoSQL. Это тип баз данных, которые хранят данные в отличном от реляционных таблиц формате. Они узкоспециализированны для конкретных задач и нужны для улучшения производительности, масштабируемости и удобства в работе. Базы данных "ключ-значение" (key-value) Суть в том, что мы храним данные в таком виде: у нас есть уникальный ключ, который указывает на какое-то значение. А сама база - это совокупность этих пар. Вот так просто! Причем эти данные могут быть чем угодно, числом, строкой или даже другой парой ключ-значение потому что в отличии от реляционных баз данных они не имеют предопределенной структуры данных. Многие БД такого типа хранят данные в памяти (RAM), в отличии от других баз, которые хранят данные на диске, что хоть и может ограничивать объем хранимых данных (хотя они требуют гораздо меньше памяти), но это обеспечивают просто невероятную скорость. Ну и раз это NoSQL то никаких сложных запросов, никаких связей друг с другом - мы просто записываем ключ и его значение, и получаем значение по ключу. Где их использовать? Они отлично подходят для хранения кэша или пользовательских сессий. А в качестве самого простого примера можно назвать корзину в интернет магазине - где мы храним идентификатор пользователя, и сколько товаров он положил в корзину. Самые популярные хранилки по типу “ключ - значение” это Redis, Memcached и DynamoDB. Wide-column (columnstore базы данных, БД с широкими столбцами или колоночные БД) Все также просто - берем key-value БД, и делаем так чтобы в значении мы могли хранить несколько столбцов сразу. Это позволяет удобно хранить связанную информацию. Похоже на реляционную БД, но только в отличии от нее, тут у нас нет схемы, поэтому мы можем хранить разные неструктурированные данные. Такой тип БД подойдет для хранения логов, данных с умных холодильников и чайников, а также различных аналитических приложений, где данные хранятся в большом объеме. Netflix, например, хранит в таких таблицах историю просмотров пользователя. В качестве примеров таких баз назовем Cassandra, Hbase и ClickHouse. Базы данных документов или документориентированные БД (Document DB) Подробнее про них можно прочитать в нашей отдельной статье. Если предыдущие типы NoSQL БД обычно используются для специфических задач, то эти базы уже более универсальны, и могут стать основным местом хранения информации. Здесь мы храним документы. Документ это набор нескольких пар ключ-значение, о которых мы говорили раньше, и раз это не SQL, то они неструктурированны и не требуют схему. Это значит, что мы можем легко добавлять и удалять поля в документе, в отличие от реляционных БД, где изменения затронули бы всю таблицу. Документы даже могут быть вложенными, и содержать в себе другие документы. Данные хранятся в стандартных форматах, таких как XML, YAML и JSON. Такая форма хранения идеально подходит к объектам, которые используются в приложениях. Мы буквально сразу получаем полный объект который нам нужен, а в SQL нужно сначала приложить усилия и даже сделать несколько запросов и все собрать в необходимый вид. Документы можно группировать друг с другом собирая их в коллекции, которые можно собирать в логическую иерархию, получая что-то по типу реляционных БД. Это как шкаф на работе - в один ящик мы можем положить трудовые договоры, в другой - договоры с партнерами, а в третий договоры аренды. Ничто нам не мешает сложить всё в одну кучу, но так удобнее. И вот эти ящики как раз и будут коллекциями в нашем случае. А отсутствие схемы позволяет нам положить в один ящик договоры, которые схожи логически, но имеют разную структуру внутри. Например, долгосрочный договор с сотрудником и договор с компанией. Коллекции есть не у всех БД такого типа, некоторые системы используют теги или древовидные иерархии. Они часто используются для мобильных приложений и игр, блогов, интернет магазинов и всяких штук где у нас имеется много контента. Самые популярные БД такого типа - MongoDB, Amazon DynamoDB, CouchDB. Графовые БД (Graph DB) Тут мы больше значения уделяем тому как данные связаны друг с другом, и эта БД лучше всего обрабатывает такие данные. Тут у нас есть узлы, которые представляют данные и ребра (или соединения), которые описывают связь между этими данными. Помните как в реляционных базах мы записывали связь в отдельной таблице? Тут мы можем обойтись без нее, просто показав связь. Такие базы просто необходимы для алгоритмов рекомендаций, социальных сетей, управления компьютерными сетями и маршрутизацией или даже обнаружения финансового мошенничества. Самые популярные графовые базы: Neo4j и DGraph Поисковые БД (Search-engine database) Они, как понятно из названия, нужны для поиска данных из большого количества источников. Работают они примерно также как и базы данных документов - мы добавляем документы с текстом внутри, а БД проанализирует весь текст в этих документах и создаст индексы для этого текста. По сути это работает как указатели, которые ты видел в конце книги, где указывается какой-то термин и страница на которой он встречается. И когда пользователь выполняет поиск, то сканируются только эти индексы, а не все документы в базе. Ну и очевидно что они используются в качестве полнотекстового поиска, а также для хранения и анализа логов. Примеры - Elasticsearch, Solr, Algolia Базы данных временных рядов (Time series database) Это базы данных, оптимизированные для данных с отметками времени. Такое используется, для мониторинга систем, где мы храним значение времени и данные в этот момент. Например, загрузка сервера или количество подключений. Примеры - InfluxDB и Prometheus Многомодульные БД (multi-model) Также существуют так называемые много-модульные БД (multi-model), которые поддерживают несколько моделей данных. Например тот же рredis умеет и в ключ-значение, и документы с графами и даже временные данные обработает.
img
OpenSIPS - это SIP-прокси-сервер с открытым исходным кодом операторского уровня, используемый для сигнализации SIP, и может обрабатывать все типы операций SIP. Он используется многими провайдерами телекоммуникационных услуг, телефонии и операторами связи из-за его надежности и производительности. Итак, если вы, ребята, хотите обрабатывать тысячи одновременных вызовов и SIP-сессий, тогда OpenSIPS - ваш выход. Существует множество различных сценариев, в которых openSIPS может хорошо играть в вашей инфраструктуре. Некоторые из них: OpenSIPS как SIP Edge Proxy OpenSIPS в качестве среднего регистратора или главного сервера регистрации OpenSIPS как входящий и исходящий шлюз OpenSIPS как балансировщик нагрузки И многое другое Примечание: OpenSIPS обрабатывает только SIP-сигнализацию, а не медиа. Для обработки мультимедиа вы можете использовать RTPPROXY или RTPENGINE. Как установить OpenSIPS 3 из исходного кода на Debian 9 Являясь модульным, мощным и гибким SIP-сервером, OpenSIPS можно установить на все основные дистрибутивы Linux. В этом уроке мы будем использовать Debian 9 в качестве базовой операционной системы. Итак, вот шаги, которым мы должны следовать, чтобы запустить наш первый экземпляр OpenSIPS и запустить его: Установите все необходимые зависимости Склонируйте последнюю версию репозитория OpenSIPS Скомпилируйте это Создайте файлы конфигурации Настройте сервис OpenSIPS Настройте OpenSIPS-CLI Создайте базу данных OpenSIPS Запустите сервер OpenSIPS 3 Поэтому, прежде чем мы начнем устанавливать зависимости, нам нужно сначала понять, как мы будем настраивать наш экземпляр OpenSIPS. Что ж, базовому серверу OpenSIPS не нужно много библиотек или зависимостей, но мы будем использовать панель управления OpenSIPS позже вместе с поддержкой MySQL, поэтому мы установим некоторые другие зависимости, чтобы мы могли легко скомпилировать некоторые дополнительные модули OpenSIPS. Шаг 1: Установка всех зависимостей Давайте обновим все списки пакетов, которые у нас есть. apt update Теперь давайте установим все зависимости вместе с сервером MySQL (MariaDB). apt install git gcc bison flex make openssl perl libdbi-perl libdbd-mysql-perl libdbd-pg-perl libfrontier-rpc-perl libterm-readline-gnu-perl libberkeleydb-perl mysql-server ssh libxml2 libxml2-dev libxmlrpc-core-c3-dev libpcre3 libpcre3-dev subversion libncurses5-dev git ngrep libssl-dev net-tools После того, как мы установили все эти пакеты, нам нужно установить пакеты devel для сервера MySQL. Для MariaDB: apt install libmariadbclient-dev-compat sudo Для сервера MySQL: apt install libmysqlclient-dev Теперь нам нужно установить зависимости для сервера micro httpd, который OpenSIPS будет использовать для прослушивания соединений JSON RPC. apt install libmicrohttpd-dev pkg-config libjsoncpp-dev libjson-c-dev ln -s /usr/include/jsoncpp/json/ /usr/include/json wget http://ftp.us.debian.org/debian/pool/main/j/json-c/libjson-c3_0.12.1-1.1_amd64.deb dpkg -i libjson* Все зависимости должны быть установлены сейчас, и теперь мы готовы клонировать исходный код openSIPS 3. Примечание: не забудьте установить имя пользователя и пароль root для msyql, используя - mysql_secure_installation Шаг 2: Клонирование репозитория OpenSIPS Мы будем клонировать последнюю версию репозитория OpenSIPS 3 в /usr/src cd /usr/src ; git clone https://github.com/OpenSIPS/opensips.git -b 3.0 opensips-3.0 Шаг 3: Скомпилируйте исходный код Чтобы сначала скомпилировать модули OpenSIPS или исходный код, перейдите в каталог opensips-3.0. cd /usr/src/opensips-3.0 Теперь наберите make menuconfig Откроется главное меню конфигурации OpenSIPS. Из этого меню мы можем скомпилировать OpenSIPS и сгенерировать наши конфигурационные скрипты. Поэтому, прежде чем мы скомпилируем, нам нужно включить дополнительный модуль, который нам нужен для поддержки MySQL и JSON. Теперь давайте выберем несколько дополнительных модулей, которые нам нужны. Итак, перейдите к Configure Compile Options -> Configure Excluded Module (Настройка параметров компиляции -> Настройка исключенного модуля). Мы должны выбрать 4 модуля - db_mysql, dialplan, json, httpd Примечание: если вы хотите выбрать или скомпилировать какой-либо другой модуль, обязательно установите его зависимости. Теперь вернитесь, используя клавишу со стрелкой влево и сохраните изменения. И как только мы выберем наши модули для компиляции, тогда просто выберите Compile and Install OpenSIPS Компиляция началась, и если вы правильно установили все зависимости, то ошибок быть не должно. После успешной компиляции вам будет предложено нажать любую клавишу, чтобы вернуться в главное меню. Шаг 4: Генерация скрипта конфигурации OpenSIPS. Скрипт конфигурации OpenSIPS - это мозг сервера OpenSIPS, он контролирует всю маршрутизацию, обработку SIP-трафика, регистрации и почти все операции SIP. Поэтому для нас очень важно создать его из меню конфигурации. После компиляции всех модулей, перейдите к Generate OpenSIPS Script. Мы можем сгенерировать 3 типа скриптов из меню конфигурации: Residential Script - обеспечивает регистрацию пользователя. Trunking Script - Подходит для предоставления услуги транкинга. Он не поддерживает регистрацию. Load-Balancer Script - используется для балансировки нагрузки входящих и исходящих вызовов. Примечание. Эти конфигурационные файлы будут иметь базовую конфигурацию. Вам всегда нужно редактировать эти файлы, чтобы они работали в соответствии с вашим сценарием. Для этой установки мы будем использовать Trunking Script. Теперь перейдите к настройке скрипта Configure Script Выберите функции, которые вы хотите добавить в свой скрипт. После выбора всех необходимых параметров сохраните сценарий и выберите Generate Trunking Script. Это все. Теперь вернитесь и сохраните все изменения - Exit & Save All Changes. Шаг 5: Настройка сервиса OpenSIPS Очень важно понять файловую структуру OpenSIPS и важные каталоги, прежде чем начать работу над ней. Вот некоторые основные каталоги, над которыми мы будем работать во всей этой установке. /usr/local/etc/opensips/ - Каталог файлов конфигурации OpenSIPS по умолчанию /usr/local/lib64/opensips/modules/ - Каталог модулей OpenSIPS /etc/init.d/ - Каталог файлов сервиса OpenSIPS /etc/default/opensips - Файл конфигурации службы OpenSIPS Мы можем найти файл opensips.init и opensips.default в каталоге /usr/src/opensips-3.0/packaging/debian/. Поэтому нам нужно скопировать эти файлы в каталог /etc/init.d/ и /etc/default/. cp /usr/src/opensips-3.0/packaging/debian/opensips.init /etc/init.d/opensips cp /usr/src/opensips-3.0/packaging/debian/opensips.default /etc/default/opensips chmod 755 /etc/init.d/opensips update-rc.d opensips defaults 99 mkdir -p /var/run/opensips Теперь у нас все настроено и готово запустить наш первый сервис OpenSIPS, но прежде чем мы это сделаем, нам нужно скопировать наш файл конфигурации в каталог /usr/local/etc/opensips/, который мы создали из меню конфигурации OpenSIPS. Этот файл конфигурации находится в /usr/src/opensips-3.0/etc/ ls /usr/src/opensips-3.0/etc/ Теперь мы скопируем этот конфигурационный файл транкинга в /usr/local/etc/opensips/ mv /usr/src/opensips-3.0/etc/opensips_trunking* /usr/local/etc/opensips/opensips_trunk.cfg Теперь вы можете видеть, что у нас есть opensips_trunk.cfg в каталоге /usr/local/etc/opensips, и мы будем использовать этот же файл для нашего сервера OpenSIPS, поэтому мы должны указать путь к нему в файле инициализации opensips. Примечание: мы также должны убедиться, что у нас есть правильный двоичный путь OpenSIPS в файле инициализации opensips. nano /etc/init.d/opensips Мы должны добавить путь к скрипту и демону в переменную DAEMON и CFGFILE. Шаг 6: Настройка OpenSIPS-CLI Начиная с OpenSIPS 3, мы будем использовать инструмент OpenSIPS-CLI для управления экземплярами OpenSIPS. Ранее мы использовали для работы со скриптом opensipsctl, но он был удален из OpenSIPS версии 3. Мы будем использовать это приложение для выполнения всех видов различных операций, таких как отправка команд MI, создание базы данных и многое другое. Давайте клонируем репозиторий opensips-cli в /usr/src/ cd /usr/src && git clone https://github.com/OpenSIPS/opensips-cli.git Теперь давайте установим все зависимости, которые нам нужны для этого удобного небольшого приложения. sudo apt install python3 python3-pip python3-dev gcc default-libmysqlclient-dev sudo pip3 install mysqlclient sqlalchemy sqlalchemy-utils pyOpenSSL Как только мы установим все зависимости, пришло время установить OpenSIPS-CLI. cd /usr/src/opensips-cli sudo python3 setup.py install clean После успешной установки мы сможем выполнить команду opensips-cli. Примечание. Когда opensips-cli запускается, она всегда ищет файл opensips-cli.cfg в каталоге /etc/. Если файл отсутствует, она запустится с настройками по умолчанию. Теперь мы создадим файл opensips-cli.cfg в каталоге /etc/. nano /etc/opensips-cli.cfg [opensips-1] log_level: WARNING prompt_name: opensips-cli prompt_intro: Welcome to OpenSIPS at SECUREVOIP prompt_emptyline_repeat_cmd: False history_file: ~/.opensips-cli.history history_file_size: 1000 output_type: pretty-print communication_type: fifo fifo_file: /tmp/opensips_fifo database_path: /usr/src/opensips-3.0/scripts/ database_url: mysql://root:password@localhost database_name: opensips Мы должны добавить вышеуказанный блок в файл opensips-cli.cfg. Вы можете настроить все параметры в файле конфигурации. Синтаксис и значение каждой переменной следующие: [opensips-1] - Имя экземпляра log_level - Уровень сообщений лога prompt_name - Имя оболочки prompt_intro - Приветственное сообщение оболочки history_file - Где хранить историю opensips-cli output_type - Параметры вывода, вы также можете использовать json communication_type - Тип связи - fifo, json database_path - Путь к сценариям базы данных database_url - URL вашей базы данных MySQL database_name - База данных, которая будет использоваться Теперь давайте запустим opensips-cli с нашим новым файлом конфигурации. opensips-cli -i [instance_name] -f [config file] Шаг 7: Создание базы данных OpenSIPS Наконец, пришло время создать базу данных OpenSIPS. Мы будем использовать бэкэнд MySQL, и если вы захотите использовать другой бэкэнд, такой как PostgreSQL, вам, возможно, придется установить некоторые зависимости. Сначала откройте файл opensips-cli и выполните следующие действия: Запустите OpenSIPS-CLI Выполните - database create Введите URL базы данных MySQL Теперь давайте проверим базу данных и таблицы opensips, войдя в MySQL. Примечание. Рекомендуется создать отдельного пользователя mysql для доступа к базе данных opensips. Шаг 8: Запуск сервера OpenSIPS 3 Теперь пришло время наконец запустить наш сервер OpenSIPS, но прежде чем мы это сделаем, нам нужно настроить некоторые параметры в файле opensips_trunk.cfg. nano /usr/local/etc/opensips/opensips_trunk.cfg Нам необходимо обновить URL-адрес MySQL всех модулей в скрипте, указав имя пользователя и пароль MySQL. Примечание. Если после запуска службы opensips вы получаете сообщение об ошибке отказа в доступе на стороне сервера MySQL, создайте нового пользователя MySQL только для базы данных opensips. Нам нужно убедиться, что у нас указан правильный путь к модулю в скрипте конфигурации. Обновите переменную PATH в файле /etc/init.d/opensips. PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin Как только мы это сделаем, последний шаг - установить для переменной RUN_OPENSIPS значение yes. nano /etc/default/opensips Примечание. Убедитесь, что в вашей ОС существует пользователь opensips, или вы можете добавить его с помощью - useradd -r opensips. После обновления конфигурации в файле default нам нужно выполнить systemctl daemon-reload. Итак, теперь мы готовы запустить наш сервис opensips. Во-первых, давайте удостоверимся, что в нашем конфигурационном файле OpenSIPS нет неправильной конфигурации. opensips -C -f /usr/local/etc/opensips/opensips_trunk.cfg Теперь давайте запустим сервис OpenSIPS systemctl start opensips systemctl enable opensips Если вы выполнили все шаги и установили все зависимости, вы увидите, что сервер opensips работает и прослушивает порт 5060. Примечание. По умолчанию OpenSIPS использует файл /var/log/syslog для ведения журнала. Поэтому, если вы получаете какие-либо ошибки при запуске службы opensips, обратитесь к этому файлу логов для устранения неполадок. Мы можем убедиться, что сервер OpenSIPS работает или нет по-разному. Проверяя файл opensips_fifo в каталоге /tmp. Выполняя команды MI через opensips-cli Поздравляем! Вы успешно установили свой первый сервер OpenSIPS, и мы желаем вам всего наилучшего в вашем путешествии по VoIP.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59