Шрифт:
Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432?
(psql: невозможно установить соединение с сервером: В соединении отказано
Сервер работает на хосте "127.0.0.1" и принимает TCP/IP-соедине- ния через порт 5432?)
Установка и конфигурация ODBC
ODBC-коннектор - это уровень обобщения баз данных, который делает возможным взаимодействие Asterisk с разнообразными СУБД без необходимости создания специального коннектора для каждой отдельно взятой базы данных, которую должна поддерживать Asterisk. Это устраняет необходимость в затратах усилий на разработку и обслуживание кода. Имеется некоторое негативное влияние на производительность, потому что между Asterisk и базой данных вводится дополнительный уровень приложений, однако его можно смягчить надлежащим проектированием, и это стоит выполнить, если необходимо обеспечить мощную и гибкую функциональность баз данных в системе Asterisk.
Прежде чем устанавливать коннектор в Asterisk, необходимо установить ODBC в самой Linux. Чтобы установить драйверы ODBC, просто выполним следующую команду:
# yum install -y unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel
В главе 3 можно найти таблицу с пакетами, которые должны быть установлены.
Необходимо установить пакет unixODBC-devel, потому что Asterisk использует его для создания модулей ODBC, которые будут применяться в данной главе.
Убедитесь в наличии сконфигурированного ODBC-драйвера PostgreSQL в файле /etc/odbcinst.ini. Он должен выглядеть примерно так:
[PostgreSQL]
Description = ODBC for PostgreSQL Driver = /usr/lib/libodbcpsql.so
Setup = /usr/lib/libodbcpsqlS.so
FileUsage = 1
Убедитесь, что система видит драйвер, выполнив приведенную ниже команду. Если все хорошо, она должна возвратить имя метки используемой СУБД PostgreSQL. # odbcinst -q -d
[PostgreSQL]
Далее сконфигурируем файл /etc/odbc.ini, используемый для создания коннектора, который Asterisk будет применять для ссылки на эту конфигурацию. Если когда-то в будущем понадобится изменить базу данных или что-то еще, просто надо будет внести изменения в этот файл, не меняя ссылок в Asterisk [112] .
112
Да, слишком много всего. На самом деле нужны только записи Driver,
Database и Servername. Даже Username и Password задаются в другом месте, как вы увидите позже.
[asterisk-connector][asterisk-connector] | |
Description = | PostgreSQL connection to 'asterisk' database |
Driver = | PostgreSQL |
Database = | asterisk |
Servername = | localhost |
UserName = | asterisk |
Password = | welcome |
Port = | 5432 |
Protocol = | 7.4 |
ReadOnly = | No |
RowVersioning = | No |
ShowSystemTables = | No |
ShowOidColumn = | No |
FakeOidIndex = | No |
ConnSettings = |
Убедимся, что мы можем соединяться с нашей базой данных, используя приложение isql. Приложение isql не будет осуществлять соединение как пользователь с правами администратора (root) и должно выполняться под учетной записью владельца базы данных. Поскольку владельцем базы данных asterisk в PostgreSQL является пользователь asterisk, необходимо создать учетную запись Linux с таким же именем. В главе 14 эта учетная запись будет использоваться для запуска Asterisk от лица пользователя, не имеющего прав администратора.
# su - asterisk
$ echo "select 1" | isql -v asterisk-connector
+ +
| Connected! |
| sql-statement
| help [tablename]
| quit |
+ +
SQL> + +
| 'column? + +
I 1
+ +
SQLRowCount returns 1 1 rows fetched $ exit
После установки, конфигурации и проверки unixODBC, необходимо повторно скомпилировать Asterisk, чтобы модули ODBC были созданы и установлены. Вернитесь в папку исходного кода Asterisk и запустите сценарий ./configure, чтобы система знала, что unixODBC установлен.
# cd /usr/src/asterisk-1.4
# make distclean
# ./configure
# make menuselect
# make install
Практически все, о чем говорится в данной главе, включено по умолчанию. Выполнив команду make menuselect, убедитесь, что модули, связанные с ODBC, активированы. Сюда относятся cdr_odbc, func_odbc, func_realtime, pbx_realtime, res_config_ odbc, res_odbc. Для хранения голосовой почты в базе данных, совместимой с ODBC, не забудьте выбрать пункт ODBC STORAGE (ХРАНИЛИЩЕ ODBC) в меню Voicemail Build Options (Опции сборки голосовой почты). Чтобы убедиться в существовании модулей, загляните в папку /usr/lib/asterisk/modules/.
Конфигурация res_odbc
для обеспечения доступа к базе данных
Конфигурация ODBC-коннекторов выполняется в файле res_odbc.conf, располагающемся в папке /etc/asterisk. Файл res_odbc.conf задает параметры, которые будут использоваться различными модулями Asterisk для соединения с базой данных [113] .
Внесем изменения в файл res_odbc.conf:
[asterisk]
enabled => yes
113
Опции pooling (создание пула) и limit (предел) довольно полезны для работы с базами данных MS SQL Server и Sybase. Они позволяют устанавливать с базой данных множество соединений (вплоть до limit), гарантируя при этом, что одновременно для каждого соединения выполняется только одно выражение (это обусловлено ограничением в протоколе, используемом этими серверами баз данных).