Установка Kamailio v.5.2.x на Debian 8

Установка Kamailio v.5.2.x на Debian 8

В прошлой статье мы делали краткий обзор об уникальном SIP-сервер Kamailio. В этой статье мы разберем процесс установки Kamailio SIP-server на ОС Debian 8.

Установку будем разбирать в нескольких вариантах:

  • Установка из GIT
  • Установка из пакетов Debian

Установка производится от имени пользователя root. Итак, начинаем!

1. Подготовка

1.1. Обновление системы

apt-get update && apt-get upgrade && apt-get dist-upgrade

1.2. Установка необходимых пакетов

apt-get install git-core gcc g ++ flex bison libmysqlclient-dev make libssl-dev libcurl4-openssl-dev libxml2-dev libpcre3-dev vim
Важное примечание. Начиная с версии 4.3.0, Kamailio использует каталог /var/run/kamailio/ для создания файлов управления FIFO и UnixSocket. Возможно, вам придется заполнить раздел, связанный с установкой init.d скрипта для создания /var/run/kamailio даже если вы планируете вручную запустить Kamailio из командной строки. Альтернативой является установка разных путей через параметры модулей jsonrpcs и ctl.
Примечание. Компилятор g++ необходим для нескольких модулей, которые ссылаются на библиотеки C++, такие как app_sqlang, phonenum или ndb_cassandra.

2. Установка Kamailio из Git

2.1. Получение источников из GIT

Прежде всего, вам нужно создать каталог в файловой системе, где будут храниться источники.
mkdir -p /usr/local/src/kamailio-devel
cd /usr/local/src/kamailio-devel
Загрузите источники из GIT, используя следующие команды:
git clone --depth 1 --no-single-branch https://github.com/kamailio/kamailio kamailio
cd kamailio
Примечание. Если ваша версия клиента git не поддерживает параметр -no-single-branch командной строки, просто удалите его.

2.2. Настройка Makefile

Первым шагом является создание файлов конфигурации сборки.
make cfg
Следующий шаг – включить модуль MySQL. Изменить файл modules.lst:
vim src/modules.lst
Добавьте db_mysql в переменную include_modules.
include_modules= db_mysql
ПРИМЕЧАНИЕ. Это один из механизмов включения модулей, которые по умолчанию не скомпилированы, например lcr, dialplan, presence – добавьте модули в переменную include_modules внутри файла modules.lst, например:
include_modules= db_mysql dialplan
Альтернативой является установка include_modules переменной со списком дополнительных модулей, которые должны быть включены для компиляции при построении Makefilecfg:
make include_modules="db_mysql dialplan" cfg

ПРИМЕЧАНИЕ. Если вы хотите установить все в одном каталоге, скажем /usr/local/kamailio-devel, необходимо установить PREFIX переменную в путь установки в make cfg … командой:

make PREFIX="/usr/local/kamailio-devel" include_modules="db_mysql dialplan" cfg

2.3. Компиляция Kamailio

После того, как вы добавили модуль mysql в список разрешенных модулей, вы можете скомпилировать Kamailio:
make all
Вы можете получить полный вывод флагов компиляции, используя:
make Q=0 all

2.4. Установка Kamailio

Когда компиляция будет завершена, установите Kamailio следующей командой:
make install
Каталоги установки /usr/local/sbin:

Что и где было установлено

  • kamailio – SIP-сервер Kamailio
  • kamdbctl – скрипт для создания и управления базами данных
  • kamctl – скрипт для управления и контроля сервера Kamailio SIP
  • kamcmd – CLI – инструмент командной строки для взаимодействия с сервером Kamailio SIP
Чтобы иметь возможность использовать двоичные файлы из командной строки, убедитесь, что /usr/local/sbin установлена ​​в PATH переменной окружения. Вы можете это проверить командой echo $PATH. Если вы используете bash, откройте /root/.bash_profile и в конце добавьте:
PATH=$PATH:/usr/local/sbin
export PATH
Модули Kamailio устанавливаются в:
/usr/local/lib/kamailio/modules/

Примечание. В 64-битных системах может использоваться каталог /usr/local/lib64.

Файлы документации и readme устанавливаются в:
/usr/local/share/doc/kamailio/
Страницы руководства устанавливаются в:
/usr/local/share/man/man5/
/usr/local/share/man/man8/
Файл конфигурации установлен в:
/usr/local/etc/kamailio/kamailio.cfg
ПРИМЕЧАНИЕ: Если вы задали переменную PREFIX в make cfg …, замените /usr/local на всех вышеперечисленных путях со значением PREFIX, чтобы найти установленные файлы.

2.5. Создание базы данных MySQL

Чтобы создать MySQL базу данных, вы должны использовать скрипт настройки базы данных. Сначала отредактируйте файл kamctlrc для установки типа сервера базы данных:
vim -w /usr/local/etc/kamailio/kamctlrc
Найдите DBENGINE переменную и установите ее в MYSQL:
DBENGINE=MYSQL
Вы можете изменить другие значения в файле kamctlrc, по крайней мере рекомендуется изменить пароли по умолчанию для пользователей, которые будут созданы для подключения к базе данных.
Когда вы закончите обновление файла kamctlrc, запустите скрипт для создания базы данных, используемой Kamailio:
/usr/local/sbin/kamdbctl create
Вы можете вызвать этот скрипт без каких-либо параметров. Вам будет предложено указать доменное имя Kamailio, которое будет обслуживать (например, mysipserver.com) и пароль root пользователя MySQL. Сценарий создаст базу данных kamailio, содержащую таблицы, требуемые Kamailio. Вы можете изменить настройки по умолчанию в файле kamctlrc, упомянутом выше.
Сценарий добавит двух пользователей в MySQL:
  • kamailio – (с паролем по умолчанию kamailiorw) – пользователь, имеющий полные права доступа к kamailio базе данных.
  • kamailioro – (с паролем по умолчанию kamailioro) – пользователь, который имеет права доступа только для чтения к kamailio базе данных.

ВАЖНО: измените пароли для этих пользователей на другие.

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

Чтобы соответствовать требованиям к платформе VoIP, вы должны отредактировать файл конфигурации.
vim /usr/local/etc/kamailio/kamailio.cfg
Следуйте инструкциям в комментариях, чтобы включить использование MySQL. В основном вам нужно добавить несколько строк в верхней части конфигурационного файла, например:
#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_USRLOCDB
Если вы изменили пароль для Kamailio пользователя MySQL, вам необходимо обновить значение db_url параметров.
Вы можете просматривать kamailio.cfg онлайн в репозитории GIT.

2.7. Сценарий init.d

Сценарий init.d можно использовать для запуска/остановки Kamailio сервера. Пример скрипта init.d для Kamailio:
/usr/local/src/kamailio-devel/kamailio/pkg/kamailio/deb/debian/kamailio.init
Просто скопируйте файл init /etc/init.d/kamailio. Затем измените разрешения:
chmod 755 /etc/init.d/kamailio
Затем отредактируйте файл, обновляющий значения файлов $DAEMON и $CFGFILE:
DAEMON=/usr/local/sbin/kamailio
CFGFILE=/usr/local/etc/kamailio/kamailio.cfg
Вам также нужно настроить файл конфигурации в /etc/default/ каталоге. Этот файл можно найти по адресу:
/usr/local/src/kamailio-devel/kamailio/pkg/kamailio/debian/kamailio.default
Вам необходимо переименовать файл kamailio после его копирования. Затем отредактируйте этот файл и установите его RUN_KAMAILIO=yes.
Создайте каталог для файла pid:
mkdir -p /var/run/kamailio
Значение по умолчанию – запуск Kamailio в качестве пользователя kamailio и группы kamailio. Для этого вам нужно создать пользователя:
adduser --quiet --system --group --disabled-password --shell /bin/false --gecos "Kamailio" --home /var/run/kamailio kamailio
chown kamailio:kamailio /var/run/kamailio
Затем вы можете запустить/остановить Kamailio, используя следующие команды:
/etc/init.d/kamailio start
/etc/init.d/kamailio stop

2.8. Подготовка к запуску

Теперь все на месте. Вы можете запустить службу VoIP, создать новые учетные записи и установить телефоны.
Новая учетная запись может быть добавлена ​​с помощью kamctl инструмента через:
# kamctl add username password email
Или попробуйте без электронной почты:
kamctl add test testpasswd test@mysipserver.com
Если вас попросят изменить переменную SIP_DOMAIN, сделайте одним из следующих вариантов.
  • запустить в терминале CLI:
export SIP_DOMAIN=mysipserver.com
  • или изменить /root/.kamctlrc и добавить:
SIP_DOMAIN=mysipserver.com

2.9. Обслуживание

Процесс обслуживания очень прост. Вы должны быть пользователем root и выполнять следующие команды:
cd /usr/local/src/kamailio-devel/kamailio
git pull origin
make all
make install
/etc/init.d/kamailio restart
Теперь у вас есть последняя версия Kamailio.

3. Установка Kamailio из репозитория Debian

Пакеты Kamailio включены в официальный репозиторий Debian Stable. На момент написания статьи кодовое имя Debian Stable – Jessie, версия 8.x.

Основное внимание в этом руководстве уделено установке Kamailio с базой данных MySQL.

3.1. Установка kamailio

apt-get install mysql-server
apt-get install kamailio kamailio-mysql-modules

После окончания процесса установки, вы можете проверить Kamailio командой:

which kamailio

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

apt search kamailio

Например, чтобы загрузить модуль websocket, вам необходимо установить пакет kamailio-websocket-modules:

apt install kamailio-websocket-modules

3.2. Файлы конфигурации

Файлы конфигурации находятся в папке /etc/kamailio/.

3.3. Kamctlrc

/etc/kamailio/kamctlr – это cфайл конфигурации для kamctl и kamdbctl инструментов. Вам необходимо отредактировать его и установить SIP_DOMAIN в свой домен службы SIP (или IP-адрес, если у вас нет имени хоста DNS, связанного с вашим SIP-сервисом).

Установите также DBENGINE в MYSQL и настроить другие параметры по желанию. Очень важны пароли для подключения к MySQL-серверу, соответственно DBRWPW и DBROPW. По умолчанию их значения равны kamailiorw и kamailioro. Вы должны изменить их перед выполнением kamdbctl create (шаг создания БД).

3.4. kamailio.cfg

/etc/kamailio/kamailio.cfg – это файл конфигурации для Kamailio. Отредактируйте его, чтобы включить некоторые из функций, поставляемых вместе с ним.
Чтобы включить использование MySQL-серверной базы, аутентификации пользователя и постоянного местоположения пользователя, добавьте после первой строки:
#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_USRLOCDB

3.5. Создание базы данных

Чтобы создать необходимую структуру базы данных Kamailio, выполните:

kamdbctl create
Более подробно о создании БД описано на шаге 2.5 данной статьи.

3.6. Сценарии запуска

3.6.1. Сценарий Init.d

В зависимости от системы запуска у вас может быть /etc/init.d/kamailio сценарий, который вы можете использовать для запуска остановки Kamailio.

Сначала вы должны отредактировать /etc/default/kamailio и настроить параметр для Kamailio сценария запуска, в частности тот, который позволяет управлять Kamailio.

/etc/init.d/kamailio start
/etc/init.d/kamailio stop

3.6.2. Сценарий Systemd

Если используется система запуска по умолчанию systemd, то Kamailio можно управлять с помощью systemctl:
systemctl start kamailio
systemctl stop kamailio
Сначала вам также может потребоваться отредактировать /etc/default/kamailio и настроить параметр для Kamailio сценария запуска, в частности тот, который позволяет управлять Kamailio.

3.7. Добавление подписчиков (пользователей)

Чтобы добавить подписчиков (пользователей), вы можете использовать kamctl команду:
kamctl add userid password
Пример:
kamctl add alice secret

Установка окончена!


Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.