Настройка подключения Asterisk 16 через ODBC к MariaDB в Debian 10

Настройка подключения Asterisk 16 через ODBC к MariaDB в Debian 10

В данном руководстве мы расскажем как подключить Asterisk 16 ODBC MariaDB на операционной системе Debian 10 (buster) через ODBC-коннектор.

Драйвер unixODBC в данный момент (дата статьи: 2019-10-12) недоступен в репозитории пакетов Debian, но вы можете установить и настроить его самостоятельно. Мы рассмотрим только подключение к MariaDB, а это значит, что Asterisk 16 и MariaDB у нас уже установлены. Если вы пропустили установку, воспользуйтесь статьей по установке Asterisk 16 на Debian 10.

Исходные данные:

  • Debian 10 (buster);
  • Asterisk 16 LTS;
  • MariaDB 10.3

Asterisk 16 ODBC MariaDB

Установка необходимых пакетов ODBC и утилит

apt-get install -y unixodbc unixodbc-dev libcppdb-odbc0 odbcinst git checkinstall cmake build-essential libssl1.0-dev

Установка клиенткой библиотеки MariaDB

Этот пакет необходим для сборки драйвера unixODBC. Он накладывается на libmariadb-dev, но предоставляет дополнительные заголовочные файлы, которые отсутствуют в Debian 10.

cd /usr/src/
git clone https://github.com/MariaDB/mariadb-connector-odbc.git
mkdir build && cd build
cmake ../mariadb-connector-odbc/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCONC_WITH_UNIT_TESTS=Off -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_SSL=OPENSSL
cmake --build . --config RelWithDebInfo
make install

Настройка подключения к Asterisk 16

Конфигурация файла /etc/odbcinst.ini

# Driver from the MariaDB-connector-odbc package
# Setup from the unixODBC package
[Default]
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so

[MariaDB]
Description = ODBC for MariaDB
Driver = /usr/local/lib64/libmaodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
UsageCount = 1

Мы настраиваем пул для подключения так, как это, вероятно, требуется большинству пользователей. Обратитесь к документации unixODBC, чтобы узнать больше о функции соединений ODBC.

Также может быть использована конфигурация для PostgreSQL, которую вы можете закомментировать, если вы не планируете настраивать PostgreSQL. Комментарии начинаются с символа хеш (#).

Вы также можете проверить odbcinst, чтобы убедиться, что конфигурация найдена.

odbcinst -q -d

Вывод должен быть примерно следующий:

[MariaDB]

Конфигурация файла /etc/odbc.ini

[MariaDB-asteriskcdrdb]
Description=MySQL connection to Asterisk
Trace = Yes
TraceFile = /tmp/odbc.log
Driver=MariaDB
Server=localhost
User=your_asterisk_user
Password=your_asterisk_user_password
Database=asteriskcdrdb
Port=3306
Socket=/var/run/mysqld/mysqld.sock
Option=3
Charset=utf8

Не забудьте изменить значения:

  • Server=localhost
  • User=your_asterisk_user
  • Password=your_asterisk_user_password
  • Database=asteriskcdrdb

на свои.

Конфигурация файла /etc/asterisk/cdr_adaptive_odbc.conf

[asteriskcdrdb]
connection=asteriskcdrdb
table=cdr
loguniqueid=yes
usegmtime=no
alias start => calldate
alias realdst => realdst
alias remoteip => remoteip
alias start => calldate
alias hangupcause => hangupcause
alias peerip => peerip
alias recvip => recvip
alias fromuri => fromuri
alias useragent => useragent
alias filename => filename

Конфигурация файла /etc/asterisk/res_odbc.conf

[ENV]

[asteriskcdrdb]
enabled=>yes
dsn=>MariaDB-asteriskcdrdb
;pooling=>no
;limit=>1
pre-connect=>yes
username=>your_asterisk_user
password=>your_asterisk_user_password

Не забудьте изменить значения:

  • username=your_asterisk_user
  • password=your_asterisk_user_password

на свои.

Конфигурация файла /etc/asterisk/cel_odbc.conf

[cel]
connection=asteriskcdrdb
loguniqueid=yes
table=cel

Конфигурация файла /etc/asterisk/cdr_odbc.conf

[global]
dsn=asteriskcdrdb
loguniqueid=yes
dispositionstring=yes
table=cdr
usegmtime=no
hrtime=yes
newcdrcolumns=yes

Подводя итог, установка и настройка Asterisk 16 ODBC MariaDB окончена! Подключение настроено и теперь ваши CDR данные должны успешно записываться в БД.