Шрифт:
Дополнительная информация
В данной главе были представлены Asterisk GUI и инфраструктура AJAM. Мы рассмотрели модель работы GUI и то, как его можно изменять. Дополнительную информацию по разработке графического интерфейса для Asterisk можно найти в руководстве для разработчиков GUI (GUI Developers Guide) по адресуhttp://asterisknow.org/developers/gui-guide.
По договору между издательством «Символ-Плюс» и Интернет-магазином «Books.Ru - Книги России» единственный легальный способ получения данного файла с книгой ISBN 978-5-93286-128-8, название «Asterisk™: будущее телефонии, 2-е издание» - покупка в Интернет-магазине «Books.Ru - Книги России». Если Вы получили данный файл каким-либо другим образом, Вы нарушили международное законодательство и законодательство Российской Федерации об охране авторского права. Вам необходимо удалить данный файл, а также сообщить издательству «Символ-Плюс» (piracy@symbol.ru), где именно Вы получили данный файл.12
Интеграция с реляционной базой данных
Ничто так не раздражает, как хороший пример.
– Марк Твен
Введение
В данной главе мы собираемся исследовать вопросы интеграции некоторых функций Asterisk и системы управления базами данных (СУБД). Для работы с Linux доступно несколько СУБД, но мы решили ограничить наше обсуждение PostgreSQL. Мы прекрасно понимаем, что MySQL - тоже чрезвычайно популярная СУБД, но надо было остановиться на какой-то одной, и наш опыт работы с PostgreSQL перевесил чашу весов в ее пользу. Фактически будет обсуждаться ODBC-коннек- тор, поэтому, если ваша база данных поддерживает работу через ODBC, содержание данной главы будет вам полезным.
Интеграция Asterisk с базами данных - один из основополагающих элементов, обеспечивающих возможность включения Asterisk в большую распределенную систему. Используя мощь базы данных, динамически меняющиеся данные могут переносить информацию по массиву систем Asterisk. Наш последний фаворит среди функций Asterisk - func_odbc, которая будет рассмотрена в данной главе позже. Не только развернутые системы Asterisk используют реляционные базы данных; понимание того, как работать с ними, открывает сундук с сокровищами, полный новых способов разработки решений для сетей связи.
Установка СУБД PostgreSQL
Первое, что надо сделать, - это установить сервер базы данных Post- greSQL [110] .
# yum install -y postgresql-server
Затем запускаем базу данных; первая инициализация займет несколько секунд:
# service postgresql start
Далее создаем пользователя asterisk, под учетной записью которого будут выполняться соединение и управление базой данных. Выполним следующие команды:
# su - postgres $ createuser -P
110
Для большой, сильно загруженной системы рекомендуется устанавливать его отдельно от системы Asterisk, на другом компьютере.
Enter name of user to add: asterisk Enter password for new user: Enter it again:
Shall the new role be a superuser? (y/n) n Shall the new user be allowed to create databases? (y/n) y Shall the new user be allowed to create more new users? (y/n) n CREATE USER
По умолчанию PostgreSQL не слушает TCP/IP-соединение, которое будет использовать Asterisk. Необходимо внести изменения в файл /var/ lib/pgsql/data/postgresql.conf, чтобы Asterisk могла устанавливать IP- соединения с базой данных. Для этого просто удалим символ комментария перед параметрами tcpip_socket и port. Не забудьте изменить значение tcpip_socket с false на true. tcpip_socket = true max_connections = 100
# примечание: увеличение max_connections стоит
# выделения примерно 500 байтов совместно
# используемой памяти на каждое соединение,
# кроме памяти, выделяемой под shared_buffers
# и max_locks_per_transaction. #superuser_reserved_connections = 2 port = 5432
Теперь редактируем файл /var/lib/pgsql/data/pg_hba.conf, чтобы обеспечить возможность только что созданному пользователю asterisk устанавливать соединения с сервером PostgreSQL через TCP/IP. В конце файла замените все под комментарием # Разместите здесь свою фактическую конфигурацию следующим [111] :
111
В данном примере серверу Asterisk разрешается устанавливать соединение с PostgreSQL и запрашивать пароль на доступ.
– Примеч. науч.ред.
host all asterisk 127.0.0.1 255.255.255.255 md5 local all asterisk trust
Теперь можно создать базу данных, которая будет использоваться в данной главе. Мы собираемся создать базу данных asterisk и задать в качестве владельца нашего пользователя asterisk. $ createdb --owner=asterisk asterisk CREATE DATABASE
Выйдя из учетной записи postgres и вернувшись в административную учетную запись, перезапустите сервер PostgreSQL: $ exit
# service postgresql restart
Наше соединение с сервером PostgreSQL через TCP/IP можно проверить следующим образом:
# psql -h 127.0.0.1 -U asterisk Password:
Welcome to psql 7.4.16, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit
asterisk=>
Повторно проверьте свою конфигурацию, как было показано ранее, если получена следующая ошибка, которая свидетельствует о том, что соединение через TCP/IP не разрешено:
psql: could not connect to server: Connection refused