понедельник, 23 ноября 2015 г.

Установка Freeswitch 1.6 в CentOS 7

1. Подготовка к установке
# yum update
# yum -y install git
# yum -y install epel-release
# rpm -Uvh http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm
# yum -y install git gcc-c++ autoconf automake libtool wget python ncurses-devel zlib-devel libjpeg-devel openssl-devel e2fsprogs-devel sqlite-devel libcurl-devel pcre-devel speex-devel ldns-devel libedit-devel libxml2-devel
# yum -y install libyuv-devel opus-devel libvpx-devel libvpx2* libdb4* libidn-devel unbound-devel libuuid-devel lua-devel libsndfile-devel

2. Ставим стабильную версию пакета freeswitch - 1.6
# cd /usr/local/src
# git clone -b v1.6 https://freeswitch.org/stash/scm/fs/freeswitch.git
# cd /usr/local/src/freeswitch
# ./bootstrap.sh
# ./configure
После выполнения команды увидим:
-------------------------- FreeSWITCH configuration --------------

  Locations:

      prefix:          /usr/local/freeswitch
      exec_prefix:     /usr/local/freeswitch
      bindir:          ${exec_prefix}/bin
      confdir:         /usr/local/freeswitch/conf
      libdir:          ${exec_prefix}/lib
      datadir:         /usr/local/freeswitch
      localstatedir:   /usr/local/freeswitch
      includedir:      /usr/local/freeswitch/include/freeswitch

      certsdir:        /usr/local/freeswitch/certs
      dbdir:           /usr/local/freeswitch/db
      grammardir:      /usr/local/freeswitch/grammar
      htdocsdir:       /usr/local/freeswitch/htdocs
      fontsdir:        /usr/local/freeswitch/fonts
      logfiledir:      /usr/local/freeswitch/log
      modulesdir:      /usr/local/freeswitch/mod
      pkgconfigdir:    ${exec_prefix}/lib/pkgconfig
      recordingsdir:   /usr/local/freeswitch/recordings
      imagesdir:       /usr/local/freeswitch/images
      runtimedir:      /usr/local/freeswitch/run
      scriptdir:       /usr/local/freeswitch/scripts
      soundsdir:       /usr/local/freeswitch/sounds
      storagedir:      /usr/local/freeswitch/storage
      cachedir:        /usr/local/freeswitch/cache

------------------------------------------------------------------
# make 
При сборке может появится сообщение о невозможности установить модуль поддержки кодека opus:
making all mod_opus
make[4]: Вход в каталог `/usr/local/src/freeswitch/src/mod/codecs/mod_opus'
Makefile:884: *** You must install libopus-dev to build mod_opus.  Останов.
make[4]: Выход из каталога `/usr/local/src/freeswitch/src/mod/codecs/mod_opus'
make[3]: *** [mod_opus-all] Ошибка 1
make[3]: Выход из каталога `/usr/local/src/freeswitch/src/mod'
make[2]: *** [all-recursive] Ошибка 1
make[2]: Выход из каталога `/usr/local/src/freeswitch/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/usr/local/src/freeswitch'
make: *** [all] Ошибка 2
Несколько попыток установить кодек у меня не увенчались успехом. Поэтому я просто сделал следующее: отключил поддержку этого кодека в сборке:
# make clean
# nano modules.conf
Комментируем строку:
#codecs/mod_opus
Запускаем сборку снова:

# make
Работа команды должна завершиться сообщением:
+---------- FreeSWITCH Build Complete ----------+
 + FreeSWITCH has been successfully built.       +
 + Install by running:                           +
 +                                               +
 +                make install                   +
 +                                               +
 + While you're waiting, register for ClueCon!   +
 + https://www.cluecon.com                       +
 +                                               +
 +-----------------------------------------------+

# make install
В завершении установки увидим:
+---------- FreeSWITCH install Complete ----------+
 + FreeSWITCH has been successfully installed.     +
 +                                                 +
 +       Install sounds:                           +
 +       (uhd-sounds includes hd-sounds, sounds)   +
 +       (hd-sounds includes sounds)               +
 +       ------------------------------------      +
 +                make cd-sounds-install           +
 +                make cd-moh-install              +
 +                                                 +
 +                make uhd-sounds-install          +
 +                make uhd-moh-install             +
 +                                                 +
 +                make hd-sounds-install           +
 +                make hd-moh-install              +
 +                                                 +
 +                make sounds-install              +
 +                make moh-install                 +
 +                                                 +
 +       Install non english sounds:               +
 +       replace XX with language                  +
 +       (ru : Russian)                            +
 +       (fr : French)                             +
 +       ------------------------------------      +
 +                make cd-sounds-XX-install        +
 +                make uhd-sounds-XX-install       +
 +                make hd-sounds-XX-install        +
 +                make sounds-XX-install           +
 +                                                 +
 +       Upgrade to latest:                        +
 +       ----------------------------------        +
 +                make current                     +
 +                                                 +
 +       Rebuild all:                              +
 +       ----------------------------------        +
 +                make sure                        +
 +                                                 +
 +       Install/Re-install default config:        +
 +       ----------------------------------        +
 +                make samples                     +
 +                                                 +
 +                                                 +
 +       Additional resources:                     +
 +       ----------------------------------        +
 +       https://www.freeswitch.org                +
 +       https://freeswitch.org/confluence         +
 +       https://freeswitch.org/jira               +
 +       http://lists.freeswitch.org               +
 +                                                 +
 +       irc.freenode.net / #freeswitch            +
 +                                                 +
 +       Register For ClueCon:                     +
 +       ----------------------------------        +
 +       https://www.cluecon.com                   +
 +                                                 +
 +-------------------------------------------------+

3. Установка звуков (в том числе русских)
# make cd-sounds-install
# make cd-moh-install
# make cd-sounds-ru-install

4. Отключаем поддержку ipv6
# cd /usr/local/freeswitch/conf/sip_profiles
# mv internal-ipv6.xml internal-ipv6.xml.removed
# mv external-ipv6.xml external-ipv6.xml.removed

5. Добавление пользователя freeswitch в систему и блокируем ему пароль
# useradd --system --home-dir /usr/local/freeswitch  freeswitch
# passwd -l freeswitch

6. Первый запуск необходимо провести для того, что бы Freeswitch создал необходимые папки.
# cd /usr/local/freeswitch/bin
# ./freeswitch
Должно появится что-то типа
2015-11-22 12:37:33.710503 [INFO] switch_event.c:685 Activate Eventing Engine.
2015-11-22 12:37:33.720775 [WARNING] switch_event.c:656 Create additional event dispatch thread 0
2015-11-22 12:37:33.974387 [INFO] switch_nat.c:417 Scanning for NAT
2015-11-22 12:37:33.974570 [DEBUG] switch_nat.c:170 Checking for PMP 1/5
2015-11-22 12:37:33.975138 [ERR] switch_nat.c:199 Error checking for PMP [wait sock failed]
2015-11-22 12:37:33.975159 [DEBUG] switch_nat.c:422 Checking for UPnP
……
Потом будет показан ход загрузки
……
.=============================================================.
|   _____              ______        _____ _____ ____ _   _   |
|  |  ___| __ ___  ___/ ___\ \      / /_ _|_   _/ ___| | | |  |
|  | |_ | '__/ _ \/ _ \___ \\ \ /\ / / | |  | || |   | |_| |  |
|  |  _|| | |  __/  __/___) |\ V  V /  | |  | || |___|  _  |  |
|  |_|  |_|  \___|\___|____/  \_/\_/  |___| |_| \____|_| |_|  |
|                                                             |
.=============================================================.
|   Anthony Minessale II, Michael Jerris, Brian West, Others  |
|   FreeSWITCH (http://www.freeswitch.org)                    |
|   Paypal Donations Appreciated: paypal@freeswitch.org       |
|   Brought to you by ClueCon http://www.cluecon.com/         |
.=============================================================.
……
FreeSWITCH Started
Max Sessions [1000]
Session Rate [30]
SQL [Enabled]
2015-11-22 12:37:48.893329 [CONSOLE] switch_core.c:2426
[This app Best viewed at 160x60 or more..]
2015-11-22 12:37:48.894155 [INFO] switch_time.c:607 Clock synchronized to system time. 
freeswitch@test-centos7.svttk.ru>
Что бы убедиться, что все работает, вводим команду «sofia status»
Выход из системы по команде «shutdown».
Когда Freeswitch завершает свою работу, так же выводиться многословный лог.

7. Назначаем права на папки и создаем папку для работы демона freeswitch
# chown -R freeswitch:freeswitch /usr/local/freeswitch/
# chmod -R 770 /usr/local/freeswitch/
# chmod -R 750 /usr/local/freeswitch/bin/*
# mkdir /run/freeswitch
# chown -R freeswitch:freeswitch  /run/freeswitch

8. Для удобства работы создаем символьные ссылки на программы запуска freeswitch
# ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/
# ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/

9. Добавляем freeswitch в автозапуск в систему systemd
# cp /usr/local/src/freeswitch/build/freeswitch.service /etc/systemd/system/multi-user.target.wants/
# nano /etc/systemd/system/multi-user.target.wants/freeswitch.service
Приводим юнит к виду:
[Unit]
Description=freeswitch
After=syslog.target network.target local-fs.target

[Service]
; service
Type=forking
RuntimeDirectory=freeswitch
PIDFile=/run/freeswitch/freeswitch.pid
PermissionsStartOnly=true
ExecStart=/usr/bin/freeswitch -ncwait -nonat -run /run/freeswitch
TimeoutSec=45s
Restart=always
; exec
WorkingDirectory=/run/freeswitch
User=freeswitch
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
Теперь создаем файл конигурации system, который будет всегда создавать директорию /run/freeswitch и наделять ее необходимыми правами
# touch nano /usr/lib/tmpfiles.d/freeswitch.conf
# nano /usr/lib/tmpfiles.d/freeswitch.conf
Вписываем в файл:
d /run/freeswitch   770 freeswitch freeswitch
Рестартуем демон systemd:
# systemctl daemon-reload
Теперь можно запустить сервис freeswitch командой:
# systemctl start freeswitch.service
Проверить состояние сервиса и отсановить его можно так:
# systemctl status freeswitch.service
# systemctl stop freeswitch.service

10. Увеличиваем количество лимитов на открытие файлов и обращений к жесткому диску для пользователя freeswitch
# nano /etc/security/limits.conf
Вписываем в конец файла перед строкой
# End of file
Следующее:
freeswitch         hard    nofile      500000
freeswitch         soft    nofile      500000


Комментариев нет:

Отправить комментарий