Установка FreeSWITCH 1.8 на Debian 8

Установка FreeSWITCH 1.8 на Debian 8

Ранее, мы сравнивали FreeSWITCH и Asterisk, а сегодня рассмотрим установку FreeSWITCH в двух вариациях.
Сегодня я расскажу как ее установить на ОС Debian 8. Установка может быть произведена в двух режимах на выбор: автоматическая установка, установка в ручном режиме.

Состав ПО:

  • Debian v8 (Jessie)
  • ASTPP v3.6
  • Freeswitch v1.8
  • Nginx v1.6
  • PHP v7.1
  • MariaDB v10

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

Редактируем наш /etc/apt/sources.list

#Добавим freeswitch в наш /etc/apt/sources.list
curl https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add -
echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.8/ jessie main" >> /etc/apt/sources.list.d/freeswitch.list
echo "deb http://files.freeswitch.org/repo/deb/debian-unstable/ jessie main" >> /etc/apt/sources.list.d/freeswitch.list
#Добавим php7.0 в наш /etc/apt/sources.list
echo "deb http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list.d/php7.list
echo "deb-src http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list.d/php7.list
curl https://www.dotdeb.org/dotdeb.gpg | apt-key add -

Обновляем систему

apt-get clean && apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade

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

apt-get install -y lsb-release systemd systemd-sysv ca-certificates dialog
apt-get -o Acquire::Check-Valid-Until=false update && apt-get install -y --force-yes freeswitch-video-deps-most
apt-get install -y autoconf automake devscripts gawk chkconfig dnsutils sendmail-bin sensible-mda ntpdate ntp g++ git wget curl nano vim libjpeg62-turbo-dev libncurses5-dev make python-dev pkg-config libgdbm-dev libyuv-dev libdb-dev libvpx2-dev gettext sudo lua5.1 php7.0 php7.0-dev php7.0-common php7.0-cli php7.0-gd php-pear php7.0-apc php7.0-curl libxml2 libxml2-dev openssl libcurl4-openssl-dev gettext gcc libldns-dev libpcre3-dev build-essential libssl-dev libspeex-dev libspeexdsp-dev libsqlite3-dev libedit-dev libldns-dev libpq-dev bc nginx ghostscript libtiff5-dev libtiff-tools libmyodbc unixodbc unixodbc-bin gettext fail2ban

2. Установка FreeSWITCH

Установка FreeSWITCH производится в двух режимах: автоматическая (из пакета Debian, который мы добавили на первом шаге) и установка из исходного кода. Рассмотрим оба варианта.

2.1 Автоматическая установка FreeSWITCH из .deb пакетов Debian

apt-get clean && apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade
apt-get update && apt-get install -y freeswitch-meta-all nginx-extras freeswitch-mod-verto freeswitch-mod-rtc

FreeSWITCH™ теперь установлен и доступен с помощью

fs_cli -rRS

2.2 Установка FreeSWITCH из исходного кода

apt-get install -y --force-yes freeswitch-video-deps-most

# Скачаем исходник. Если вам нужна необходимая версия используйте флаг -b

git clone https://freeswitch.org/stash/scm/fs/freeswitch.git -bv1.8 /usr/src/freeswitch
cd /usr/src/freeswitch
git config --global pull.rebase true

Устанавливаем

# Аргумент -j создает несколько потоков для ускорения процесса сборки. Может вызвать проблемы на определенных платформах

./bootstrap.sh -j

Если вы хотите добавить или удалить модули, отредактируйте файл modules.conf.

vim modules.conf
Символ ‘#‘ в начале строки удаляет модуль. Отсутствие символа ‘#‘ в начале строки активирует модуль
# Включим mod_xml_curl, mod_json_cdr, mod_db
sed -i /usr/src/freeswitch/modules.conf -e s:'#applications/mod_avmd:applications/mod_avmd:'
sed -i /usr/src/freeswitch/modules.conf -e s:'#applications/mod_callcenter:applications/mod_callcenter:'
sed -i /usr/src/freeswitch/modules.conf -e s:'#applications/mod_cidlookup:applications/mod_cidlookup:'
sed -i /usr/src/freeswitch/modules.conf -e s:'#applications/mod_memcache:applications/mod_memcache:'
sed -i /usr/src/freeswitch/modules.conf -e s:'#applications/mod_curl:applications/mod_curl:'
sed -i /usr/src/freeswitch/modules.conf -e s:'#formats/mod_shout:formats/mod_shout:'

Компилируем исходники

./configure --prefix=/usr/local/freeswitch --enable-core-pgsql-support --disable-fhs

Установим FreeSWITCH с звуковыми файлами

make
make install
make sounds-install moh-install
make cd-sounds-install cd-moh-install

# Установим русские звуки
make sounds-ru-install cd-sounds-ru-install uhd-sounds-ru-install hd-sounds-ru-install
make && make install
Переместим музыкальные файлы в директорию /usr/local/freeswitch/sounds/music/default
mkdir -p /usr/local/freeswitch/sounds/music/default
mv /usr/local/freeswitch/sounds/music/*000 /usr/local/freeswitch/sounds/music/default

Настроим сервис

ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli
cp "$(dirname $0)/source/freeswitch.service" /lib/systemd/system/freeswitch.service

Если вы хотите обновить уже имеющуюся сборку

# cd /usr/src/freeswitch
make current
Внимание! Если вы устанавливали FreeSWITCH из исходного кода, вам необходимо установить права доступа на каталоги и файлы. Если вы запустите FreeSWITCH после установки – он по умолчанию запустится от ‘root’. Менять права на каталоги необходимо до первоначального запуска

Создадим пользователя, установим права на файлы и каталоги

# Создаем пользователя 'freeswitch'
# Добавляем его в группу 'freeswitch'
# Меняем владельца и даем разрешения
cd /usr/local
groupadd freeswitch
adduser --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH open source 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/*
FreeSWITCH поставляется с файлом systemd, который при правильной настройке во время загрузки контролирует FreeSWITCH и запускает его в качестве демона, перезапускает его, если он не работает.
Файл находится по пути /usr/src/freeswitch.git/debian/freeswitch-systemd.freeswitch.service.
При поиске неполадок работы systemd трудно искать сообщения в /var/log/syslog, /var/log/daemon.log и выполнять ‘grep‘ для сообщений FreeSWITCH.
Изменим файлы и каталоги хранения системных сообщений FreeSWITCH.

Скопируем файл

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

Редактируем файл /etc/systemd/system/freeswitch.service

; Этот файл находится в исходниках и можно найти в
; /usr/src/freeswitch.git/debian
; или
; /usr/src/freeswitch/debian
[Unit]
Description=freeswitch
After=syslog.target network.target local-fs.target

[Service]
Type=forking
PIDFile=/usr/local/freeswitch/run/freeswitch.pid
Environment="DAEMON_OPTS=-nonat"
EnvironmentFile=-/etc/default/freeswitch
PermissionsStartOnly=true
ExecStart=/usr/bin/freeswitch -u freeswitch -g freeswitch -ncwait $DAEMON_OPTS -rp
TimeoutSec=45s
Restart=on-failure
; Выполнение
User=freeswitch
Group=freeswitch
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=60000
LimitSTACK=250000
LimitRTPRIO=infinity
LimitRTTIME=infinity
IOSchedulingClass=realtime
IOSchedulingPriority=2
CPUSchedulingPolicy=rr
CPUSchedulingPriority=89
UMask=0007

[Install]
WantedBy=multi-user.target

Запускаем установленный FreeSWITCH

systemctl daemon-reload && systemctl start freeswitch && systemctl enable freeswitch
reboot
Друзья! Если вы нашли ошибки или неточности, а также столкнулись с проблемами в процессе установки, убедительная просьба оставлять заметки в комментариях.