Установка FreeSWITCH 1.10 на Debian 10

Установка FreeSWITCH 1.10 на Debian 10

FreeSWITCH – это программно-определяемый телекоммуникационный стек, позволяющий осуществлять цифровое преобразование проприетарных телекоммуникационных коммутаторов в универсальную программную реализацию, которая работает на любом стандартном оборудовании. От Raspberry PI до многоядерного сервера FreeSWITCH может раскрыть телекоммуникационный потенциал любого устройства. Установка FreeSWITCH 1.10 на Debian 10 – предмет этой статьи.

Проект FreeSWITCH был перемещен на GitHub: https://github.com/signalwire/freeswitch.
Новые выпуски доступны по адресу : https://github.com/signalwire/freeswitch/issues.

Разработчики FreeSWITCH в качестве эталонной операционной системы рекомендуют использовать Debian. В данной статье мы рассмотрим три варианта инсталляции FreeSWITCH 1.10 на Debian 10. Будет установлена последняя версия FreeSWITCH 1.10.

Начиная с версии FreeSWITCH 1.10 pgsql находится не в ядре, а в mod_pgsql.

Вы должны загружать mod_pgsql в pre_load_modules.conf.xml, а не в modules.conf.

pre_load_modules.conf.xml:

<configuration name="pre_load_modules.conf" description="Modules">
  <modules>
    <!-- Databases -->
    <!-- <load module="mod_mariadb"/> -->
    <load module="mod_pgsql"/>
  </modules>
</configuration>

Содержание

Подготовка

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

apt-get install -y git-core build-essential autoconf automake libtool libncurses5 libncurses5-dev make libjpeg-dev pkg-config unixodbc unixodbc-dev libcurl4-openssl-dev libexpat1-dev libtiff4-dev libx11-dev unixodbc-dev libssl-dev python2.6-dev zlib1g-dev libzrtpcpp-dev libasound2-dev libogg-dev libvorbis-dev libperl-dev libgdbm-dev libdb-dev python-dev uuid-dev bison

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

Самый простой способ установки последней версии FreeSWITCH из репозитотрия Debian. Выполним установку следующими командами:

apt-get update && apt-get dist-upgrade
apt-get install emacs-nox
apt-get install -y gnupg2 wget lsb-release
wget -O - https://files.freeswitch.org/repo/deb/debian-release/fsstretch-archive-keyring.asc | apt-key add -
 
echo "deb http://files.freeswitch.org/repo/deb/debian-release/ `lsb_release -sc` main" > /etc/apt/sources.list.d/freeswitch.list
echo "deb-src http://files.freeswitch.org/repo/deb/debian-release/ `lsb_release -sc` main" >> /etc/apt/sources.list.d/freeswitch.list
 
apt-get update && apt-get install -y freeswitch-meta-all

FreeSWITCH теперь установлен и доступен по команде:

fs_cli -rRS

Установка из репозитотрия FreeSWITCH

Репозиторий Debian зависит от разных библиотек, которые не доступны в виде пакетов дистрибутива Debian. Данные пакеты доступны из репозитория FreeSWITCH. Производим установку:

apt-get update && apt-get install -yq gnupg2 wget lsb-release
wget -O - https://files.freeswitch.org/repo/deb/debian-unstable/freeswitch_archive_g0.pub | apt-key add -
 
echo "deb http://files.freeswitch.org/repo/deb/debian-unstable/ `lsb_release -sc` main" > /etc/apt/sources.list.d/freeswitch.list
echo "deb-src http://files.freeswitch.org/repo/deb/debian-unstable/ `lsb_release -sc` main" >> /etc/apt/sources.list.d/freeswitch.list
 
apt-get update && apt-get install -y xz-utils devscripts cowbuilder git screen
 
# Нестандартные пакеты из репозитория FreeSWITCH не являются доверенными для pbuilder!
echo "ALLOWUNTRUSTED=yes" >> /etc/pbuilderrc
 
# Получим последнюю версию. Используйте флаг -b чтобы получить определенную ветку
mkdir /usr/src/freeswitch-debs
git clone https://github.com/signalwire/freeswitch.git /usr/src/freeswitch-debs/freeswitch
 
cd /usr/src/freeswitch-debs
# Запускаем экран логирования, чтобы можно было отключится от оболочки приглашения
screen -L
cd freeswitch
./debian/util.sh build-all -aamd64 -cbuster

# Вы можете отсоединиться с помощью Ctrl-a или Ctrl-d и просмотреть файлы журнала в папке /usr/src/freeswitch-debs/log/.
# Сборка может длиться около часа, в зависимости от скорости вашего процессора.
# Если сборка прошла успешно, у вас будет набор файлов .deb в /usr/src/freeswitch-debs

Компиляция из исходного кода

apt-get update && apt-get install -yq gnupg2 wget lsb-release
wget -O - https://files.freeswitch.org/repo/deb/debian-release/fsstretch-archive-keyring.asc | apt-key add -
 
echo "deb http://files.freeswitch.org/repo/deb/debian-release/ `lsb_release -sc` main" > /etc/apt/sources.list.d/freeswitch.list
echo "deb-src http://files.freeswitch.org/repo/deb/debian-release/ `lsb_release -sc` main" >> /etc/apt/sources.list.d/freeswitch.list
 
apt-get update
  
# Установите зависимости, необходимые для сборки
apt-get build-dep freeswitch
  
# Затем скачаем исходник с git. Используйте флаг -b, чтобы получить определенную ветку
cd /usr/src/
git clone https://github.com/signalwire/freeswitch.git -bv1.10 freeswitch
cd freeswitch
git config pull.rebase true
./bootstrap.sh -j

# Если вы хотите добавить или удалить модули, отредактируйте файл modules.conf перед сборкой
vi modules.conf
./configure
make
make all install
make samples

# Установим аудиофайлы
make cd-sounds-install
make cd-moh-install

# Чтобы обновить установленную сборку:
cd /usr/src/freeswitch
make current

# Добавим звуковые файлы русского языка
apt-get install -y freeswitch-sounds-ru-ru-elena freeswitch-sounds-ru-ru-kirill freeswitch-sounds-ru-ru-vika

Перед запуском FreeSWITCH.

Если вы установили FreeSWITCH из исходного кода, вы должны установить права доступа и владельца к файлам перед запуском FreeSWITCH. Если вы запустите FreeSWITCH в первый раз без установки прав доступа и владельца файлами, базы данных FreeSWITCH и файлы журналов будут созданы как пользователь «root». Затем, когда вы смените владельца, FreeSWITCH больше не будет иметь права на запись в эти файлы и не запустится.

Установка прав и разрешений

Поскольку вы, скорее всего, создали FreeSWITCH в качестве пользователя root, теперь вы должны создать пользователя ‘freeswitch‘ в группе ‘freeswitch‘ и изменить файлы FS на owner = freeswitch и group = freeswitch. Выполните следующие команды как пользователь «root»:

# Создаем пользователя 'freeswitch'
# Добавляем в группу 'freeswitch'
# Меняем владельца и группу на файлы freeswitch
cd /usr/local
groupadd freeswitch
adduser --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH Softswitch" --ingroup freeswitch freeswitch --disabled-password
chown -R freeswitch:freeswitch /usr/local/freeswitch/
chmod -R ug=rwX,o= /usr/local/freeswitch/
chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/*

Systemd

systemd – это система управления службами, которая заменяет System V init. Он довольно требовательный и ему необходимо больше конфигурационных скриптов, называемых Unit Files. systemd может запускать FreeSWITCH во время загрузки, отслеживать работу приложения, перезапускать его в случае сбоя и предпринимать другие действия.

Предварительно скомпилированные пакеты FreeSWITCH поставляются с собственными файлами systemd и сценариями для их установки. Обязательно соблюдайте правильное расположение файлов, поскольку они различаются между скомпилированными установками FreeSWITCH и установками пакетов.

При устранении неполадок, связанных с системой, журналы располагаются в файле /var/log/syslog и /var/log/daemon.log.

Файл модуля запускает Freeswitch как root, поэтому Freeswitch может установить его приоритет, создать несколько каталогов, если это необходимо, и т.д. Затем он отбросит привилегии, чтобы продолжить работу от имени пользователя и группы Freeswitch.

; This file in installations built from Master can be found in
; /usr/src/freeswitch.git/debian
; or
; /usr/src/freeswitch/debian
[Unit]
Description=freeswitch
After=syslog.target network.target local-fs.target
 
[Service]
; service
Type=forking
PIDFile=/usr/local/freeswitch/run/freeswitch.pid
PermissionsStartOnly=true
; blank ExecStart= line flushes the list
ExecStart=
ExecStart=/usr/local/freeswitch/bin/freeswitch -u freeswitch -g freeswitch -ncwait -nonat -rp
TimeoutSec=45s
Restart=on-failure
; exec
WorkingDirectory=/usr/local/freeswitch/bin
User=root
Group=daemon
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=60000
;LimitSTACK=240
LimitRTPRIO=infinity
LimitRTTIME=7000000
IOSchedulingClass=realtime
IOSchedulingPriority=2
CPUSchedulingPolicy=rr
CPUSchedulingPriority=89
UMask=0007
 
[Install]
WantedBy=multi-user.target

Теперь, когда файл модуля systemd настроен, вы можете скопировать его (не делать линк) в каталог /etc/systemd/system, где systemd ищет локальные пользовательские файлы, которые не будут перезаписаны обновлениями systemd.

cp /usr/src/freeswitch/debian/freeswitch-systemd.freeswitch.service /etc/systemd/system/freeswitch.service

Затем уведомите systemd о поиске изменений в его конфигурации:

systemctl daemon-reload

Теперь вы готовы впервые запустить FreeSWITCH. Поскольку FS принадлежит пользователю freeswitch, он должен создавать свои базы данных и файлы журналов под этим пользователем (вместо root). Чтобы эти файлы были доступны для FreeSWITCH при последующих запусках.

Запускаем FreeSWITCH:

systemctl start freeswitch

Для остановки FreeSWITCH:

systemctl stop freeswitch

Чтобы настроить автоматический запуск FreeSWITCH во время загрузки системы:

systemctl enable freeswitch

Проверка работы службы FreeSWITCH:

ps aux | grep freeswitch
ps -e | grep freeswitch

По умолчанию в Debian нет кэширования DNS, и каждый поиск выполняется на сервере из /etc/resolv.conf. Unbound – это легкий, безопасный и простой в использовании сервер DNS-кэширования.

apt -y install unbound
systemctl start unbound
systemctl enable unbound

FreeSWITCH CLI

Для перехода в консоль управления вводим команду:

fs_cli

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