Instalación de FreeSWITCH 1.10.7 en CentOS 7

FreeSWITCH es un programa Open Source, distribuido bajo licencia MPL1.1, utilizado para implementar una central telefónica o, en general, un servidor B2BUA (Back To Back User Agent). Para una lista completa de las funcionalidades brindadas, pueden visitar la Wiki de los desarrolladores. Entre ellas:

• Registro (Log) de las llamadas

• Grabación de llamadas

• Desvío de llamadas

• Trasferencia de llamadas

• Conferencias audio y Videoconferencias

• Música en espera

• Soporte IPv6

• Creación de contestadoras automáticas: IVR

• Servidor y Gateway WebRTC con señalización SIP y Verto

• Multi Dominio y Multi usuario

• Least Cost Routing (LCR) para llamadas salientes

Primero se actualiza el sistema:

yum update -y

luego se instalan los repositorios epel y okay utilizados para las instalación de algunos paquetes:

yum install epel-release -y

rpm -ivh http://repo.okay.com.mx/centos/7/x86_64/release/okay-release-1-1.noarch.rpm?

Se desactivan los repositorios okay para activarlos solamente cuando se necesiten; esto para evitar que algunos paquetes se instalen, de manera predefinida, desde esos repositorios:

nano /etc/yum.repos.d/okay.repo

cambiamos en el primer bloque los parámetros que siguen:

enabled=1

gpgcheck=1

para que queden:

enabled=0

gpgcheck=0

guardamos los cambios. Se reinicia el sistema:

reboot

se vuelve a acceder y se continua con Vorbis que es una librería para la compresión/descompresión audio indispensable para la correcta compilación del modulo mod_shout:

yum install libvorbis libvorbis-devel vorbis-tools libogg libogg-devel -y

junto a mpg123 y libshout:

yum install mpg123-devel mpg123-libs libshout-devel -y

Para el formato audio GSM se instalan los relativos paquetes:

yum install gsm gsm-devel gsm-tools -y

FFMPEG es una dependencia del modulo mod_av que permite utilizar el codec Video H264 en Verto, la señalización utilizada para WebRTC en FreeSWITCH, además del protocolo SIP:

rpm -Uvh https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm

yum install ffmpeg ffmpeg-devel -y

se sigue con CURL que es un cliente que permite recibir y/o enviar archivos utilizando los protocolos HTTP, HTTPS, FTP, GOPHER, DICT, TELNET; utilizado por el modulo mod_xml_curl:

yum install curl curl-devel libidn-devel -y

se instalan todas las librerías y dependencias que se necesitan para la compilación de las fuentes:

yum install gcc ncurses-devel make gcc-c++ zlib-devel libtool bison-devel bison libpqxx-devel \

openssl-devel bzip2-devel wget newt-devel subversion flex gtk2-devel bzip2 patch \

libjpeg-devel yasm-devel libsndfile-devel net-tools git perl-ExtUtils-Embed libatomic -y

En CentOS 7, para la gestión de la base de datos, de manera predefinida ya no está presente MySQL sino MariaDB que se instala:

yum install mariadb mariadb-server mariadb-devel -y

UNIXODBC que es la implementación Linux de los API ODBC que permiten conectarse a muchos sistemas de gestión de base de datos (ej: MySQL/MariaDB):

yum install unixODBC unixODBC-devel mysql-connector-odbc libtool-ltdl-devel -y

Como la base de datos interna de FreeSWITCH, de manera predefinida, se basa en SQLite, se instala el paquete del programa y el paquete de desarrollo:

yum install sqlite sqlite-devel -y

Se instala, desde las fuentes, FLITE, Festival Lite, que es un sistema de text to speech utilizado por el modulo mod_flite de FS:

cd /usr/src

git clone https://github.com/festvox/flite.git

cd flite/

./configure --enable-shared --with-audio=none --prefix=/usr

make

make get_voices

make install

Libuuid y uiid utilizados para la identificación univoca de canales y hilos de procesos del SoftSWITCH:

yum install libuuid libuuid-devel uuid uuid-devel -y

Se continua con la instalación de otros formatos audio: SPEEX WAW y LAME; este ultimo es también una dependencia para el modulo mod_shout:

yum install speex speex-devel wavpack wavpack-devel lame lame-devel -y

Se continua con LIBMAD que es un MPEG audio decodificador de alta calidad:

cd /usr/src

wget https://campus.voztovoice.org/FreeSWITCH/libmad-0.15.1b.tar.gz

tar -xf libmad-0.15.1b.tar.gz

cd libmad-0.15.1b

./configure --prefix=/usr --libdir=/usr/lib64

Para que la compilación tenga éxito hay que modificar la siguiente linea del archivo Makefile:

nano +129 Makefile

CFLAGS = -Wall -g -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2

para que quede:

CFLAGS = -Wall -g -O -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2

se continua con su compilación e instalación:

make

make install

Para la instalación del modulo mod_opus relacionado con el Codec Audio Opus, hay que instalar el codec desde las fuentes siguiendo estos pasos:

cd /usr/src

wget https://archive.mozilla.org/pub/opus/opus-1.1.1.tar.gz

tar -xf opus-1.1.1.tar.gz

cd opus-1.1.1

./configure --prefix=/usr --libdir=/usr/lib64

make

make install

y añadiendo el paquete de las utilidades:

yum install opus-tools -y

Se termina esta primera parte con SoX que es un programa que permite la manipulación de archivos audio y la posibilidad de pasarlos de un formato a otro:

cd /usr/src

wget https://campus.voztovoice.org/FreeSWITCH/sox-14.4.2.tar.gz

tar -xf sox-14.4.2.tar.gz

cd sox-14.4.2

./configure --prefix=/usr --libdir=/usr/lib64

Al finalizar el configure aparecerá esta tabla donde se encontrarán todos los formatos audio que se podrán manipular con SoX:

Se termina con la compilación e instalación:

make && make install

Se continua con las librerías libtiff y SpanDSP, un procesador de señales digitales que en FreeSWITCH permite la instalación del modulo mod_spandsp para la recepción y envío de faxes:

yum install libtiff libtiff-devel libxml2 libxml2-devel -y

SpanDSP se instala desde los repositorios Okay:

yum --enablerepo=okay install spandsp spandsp-apidoc spandsp-devel -y

IKSEMEL que permite implementar el protocolo XMPP en FreeSWITCH a través del modulo mod_dingaling. Primero las librerías GNUtls:

yum install gnutls gnutls-devel gnutls-utils -y

luego Iksemel desde los repositorios Zabbix:

rpm -ivh https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el...

yum install iksemel iksemel-devel iksemel-utils -y

OpenLDAP es la versión open source del protocolo Lightweight Directory Access. Normalmente se utiliza para crear un directorio de usuarios que puede ser consultado y/o modificado desde remoto. Muchos programas implementan la posibilidad de conectarse a un servidor OpenLDAP y FreeSWITCH presenta esta posibilidad a través del modulo mod_ldap, aunque sea considerado un modulo obsoleto:

yum install compat-openldap openldap openldap-clients openldap-devel openldap-servers -y

SNMP es el Protocolo Simple de Administración de Red y sirve para controlar y monitorear el desempeño del servidor Linux:

yum install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils -y

En FreeSWITCH existe la posibilidad de guardar los registros de las llamadas en un servidor RADIUS a través de un cliente RADIUS que hay que instalar. En este caso se instala desde los repositorios EPEL:

yum install radiusclient-ng radiusclient-ng-devel radiusclient-ng-utils -y

Se continua la preparación del servidor con la instalación del lenguaje de programación LUA que es el más utilizado para escribir script y código para interactuar con FS:

yum install lua lua-devel -y

Se instalan los paquetes para compilar el modulo mod_memcache utilizado como memoria de cache en algunos tipo de consultas a base de datos:

yum install memcached memcached-devel libmemcached libmemcached-devel -y

Por ultimo la librería LIBSRTP que permite implementar el cifrado del flujo media en FreeSWITCH a través del protocolo SRTP (RFC3711); esta librería se instala también desde los repositorios Okay donde está presente una versión más actualizada:

yum --enablerepo=okay install libsrtp libsrtp-devel -y

y la librería Jansson para el soporte del modulo mod_verto utilizado como sistema de señalización para WebRTC:

yum install jansson jansson-devel -y

Para terminar hay que instalar unas cuantas librerías que permitirán instalar unos módulos más y de esta forma obtener una instalación casi completa de FreeSWITCH y sus módulos:

yum install portaudio portaudio-devel python-devel perl-devel erlang ldns-devel libedit-devel -y

Desde la versión 1.10.4 de FS, la pila SIP Sofia no está presente en las fuentes de FS pues hay que instalarla antes de compilar el SWITCH:

cd /usr/src

git clone https://github.com/freeswitch/sofia-sip.git

cd sofia-sip

./autogen.sh

./configure --prefix=/usr --libdir=/usr/lib64

make

make install

 

Instalación de FreeSWITCH

Terminada la preparación del servidor, se inicia con la instalación de FreeSWITCH; primero se instala un paquete indispensable para la correcta compilación del modulo mod_verto:

rpm -Uvh https://campus.voztovoice.org/FreeSWITCH/libks-1.7.0-16.el7.centos.rpm

luego se descarga la ultima versión disponible de la rama 1.10 (1.10.7):

cd /usr/src

git clone -b v1.10 https://github.com/signalwire/freeswitch.git

Se entra a la carpeta creada:

cd freeswitch

y se preparan las fuentes para la compilación:

./bootstrap.sh -j

Luego para que se compilen algunos módulos que por defecto no están activados, se abre el siguiente archivo:

nano modules.conf

se descomentan las lineas de los módulos que se quieren incluir en la compilación e instalación y se comenta la linea del modulo mod_signalwire ya que este modulo se utiliza solamente si se contratan servicios con la empresa SignalWire, creada por los desarrolladores FreeSWITCH. Se modifican las siguientes lineas:

#applications/mod_curl

#applications/mod_directory

#applications/mod_distributor

#applications/mod_easyroute

#applications/mod_lcr

#applications/mod_memcache

#applications/mod_nibblebill

applications/mod_signalwire

#applications/mod_translate

#applications/mod_vmd

#asr_tts/mod_flite

#codecs/mod_mp4v

#endpoints/mod_dingaling

#event_handlers/mod_odbc_cdr

#event_handlers/mod_snmp

#formats/mod_shout

#say/mod_say_es

#say/mod_say_es_ar

#xml_int/mod_xml_curl

para que queden:

applications/mod_curl

applications/mod_directory

applications/mod_distributor

applications/mod_easyroute

applications/mod_lcr

applications/mod_memcache

applications/mod_nibblebill

#applications/mod_signalwire

applications/mod_translate

applications/mod_vmd

asr_tts/mod_flite

codecs/mod_mp4v

endpoints/mod_dingaling

event_handlers/mod_odbc_cdr

event_handlers/mod_snmp

formats/mod_shout

say/mod_say_es

say/mod_say_es_ar

xml_int/mod_xml_curl

Se guardan los cambios y se continua con:

./configure -C --enable-portable-binary \

--prefix=/usr --localstatedir=/var --sysconfdir=/etc \

--with-gnu-ld --with-python --with-erlang --with-openssl \

--enable-core-odbc-support --enable-zrtp \

--enable-core-pgsql-support \

--enable-static-v8 --disable-parallel-build-v8

con el comando anterior se indican las carpetas donde se instalarán respectivamente los archivos binarios, los LOG y los archivos de configuración; además se definen que módulos se soportarán y como. Se continua con:

make

Si no aparecen errores, se continua con:

make install

Se instalan las locuciones en inglés y los audio para la música de espera (calidad CD):

make cd-sounds-install

make cd-moh-install

Las únicas locuciones en español disponibles son con acento mexicano. Son las que utilizaremos para el curso aunque no son completas. Para instalarlas tendremos que utilizar una pequeña artimaña. Primero se descargan los paquetes RPM desde los repositorios OKAY:

cd /

wget http://repo.okay.com.mx/centos/7/x86_64/release/freeswitch-sounds-es-mx-...

wget http://repo.okay.com.mx/centos/7/x86_64/release/freeswitch-sounds-es-mx-...

wget http://repo.okay.com.mx/centos/7/x86_64/release/freeswitch-sounds-es-mx-...

wget http://repo.okay.com.mx/centos/7/x86_64/release/freeswitch-sounds-es-mx-...

Se descomprimen con una utilidad pensada para los paquetes RPM:

rpm2cpio freeswitch-sounds-es-mx-maria-48000-1.0.16-1.el7.centos.noarch.rpm | cpio -ivd

rpm2cpio freeswitch-sounds-es-mx-maria-32000-1.0.16-1.el7.centos.noarch.rpm | cpio -ivd

rpm2cpio freeswitch-sounds-es-mx-maria-16000-1.0.16-1.el7.centos.noarch.rpm | cpio -ivd

rpm2cpio freeswitch-sounds-es-mx-maria-8000-1.0.16-1.el7.centos.noarch.rpm | cpio -ivd

Quedarán instaladas en la carpeta que contiene las demás locuciones.

Si en cualquier momento se quiere añadir un modulo a la instalación realizada, no hace falta volver a realizar la compilación e instalación desde cero sino seguir estos pasos:

cd /usr/src/freeswitch

nano modules.conf

descomentar el modulo que se quieres instalar. En este ejemplo veremos como instalar el modulo mod_callcenter utilizado para configurar un centro de llamadas en FS; se modifica esta linea:

#applications/mod_callcenter

para que quede:

applications/mod_callcenter

Se guardan los cambios y se ejecuta el siguiente comando:

make mod_callcenter-install

si el modulo requiere algunas dependencias, será el mismo FreeSWITCH que las instalará. Para tener la certeza que el modulo se haya instalado correctamente:

ls /usr/lib/freeswitch/mod/mod_call*

/usr/lib/freeswitch/mod/mod_callcenter.la /usr/lib/freeswitch/mod/mod_callcenter.so

Para que se inicie con FS:

nano /etc/freeswitch/autoload_configs/modules.conf.xml

se modifica esta linea, que está comentada (Linea 143):

<!--<load module="mod_callcenter"/>-->

para que quede:

<load module="mod_callcenter"/>

Se guardan los cambios. Ahora para que FreeSWITCH se ejecute en automático cada vez que se reinicie el servidor, se modifica el siguiente archivo:

nano /usr/src/freeswitch/build/freeswitch.service

Cambiando esta linea:

WorkingDirectory=/run/freeswitch

para que quede:

WorkingDirectory=/var/run/freeswitch

Se guardan lo cambios y se copia el archivo en la carpeta de los scripts de inicio:

cp /usr/src/freeswitch/build/freeswitch.service /usr/lib/systemd/system/

se copia el archivo donde se pueden añadir parámetros personalizados en la respectiva carpeta:

cp /usr/src/freeswitch/build/freeswitch.sysconfig /etc/sysconfig/freeswitch

Como el script de inicio de FreeSWITCH utiliza el usuario freeswitch, hay que crearlo:

useradd -r -d /etc/freeswitch/ freeswitch

Como la carpeta /var/run/freeswitch, indicada en el script de inicio, se borra cada vez que se reinicia el sistema, para que cada vez se cree correctamente, se crea el siguiente archivo:

nano /etc/tmpfiles.d/freeswitch.conf

donde se copia la siguiente linea:

d /var/run/freeswitch 0755 freeswitch freeswitch - -

con este comando se creará la carpeta /var/run/freeswitch con los permisos 0755, usuario y grupo propietario freeswitch. Ya se puede activar el script de inicio:

systemctl enable freeswitch

Created symlink from /etc/systemd/system/multi-user.target.wants/freeswitch.service to /etc/systemd/system/freeswitch.service.

Antes de iniciar el servicio con el script de inicio, se ejecuta en primer plano para averiguar si hay errores de configuración/instalación y para que se creen todos los archivos que FreeSWITCH necesita:

freeswitch -nonat -nf

las dos opciones significan respectivamente: no utilizar la detección de NAT y trabajar en primer plano. Muy probablemente aparecerán algunas lineas de error relacionadas con SQLite:

[ERR] switch_core_sqldb.c:587 NATIVE SQL ERR [no such table: channels]

esto es porque las tablas que utiliza FreeSWITCH se crean en SQLite la primera vez que se inicia el programa. Una vez que termine el flujo de LOG, para averiguar que el modulo más importante, mod_sofia, esté funcionando correctamente:

freeswitch@sip10.voztovoice.net> sofia status

Para parar/terminar FreeSWITCH:

freeswitch@sip10.voztovoice.net> shutdown

Ahora que se ha averiguado que todo está funcionando correctamente, se cambian los permisos de las carpetas y archivos relacionados con FreeSWITCH; este paso se realiza también para que las base de datos SQLite3 creadas al iniciar FreeSWITCH con usuario root, sean accesibles al usuario freeswitch que es él con que se inicia el programa.

chown -Rf freeswitch:freeswitch /etc/freeswitch/

chown -Rf freeswitch:freeswitch /usr/lib/freeswitch/

chown -Rf freeswitch:freeswitch /var/log/freeswitch/

chown -Rf freeswitch:freeswitch /var/run/freeswitch/

chown -Rf freeswitch:freeswitch /var/lib/freeswitch/

chown -Rf freeswitch:freeswitch /usr/share/freeswitch

Ahora podemos iniciar el programa utilizando el script inicio:

systemctl start freeswitch

averiguar que esté funcionando correctamente:

ps aux | grep freeswitch

freeswi+ 5700 1.4 7.5 831828 37600 ? Ssl 09:37 0:06 /usr/bin/freeswitch -nc -nf

y acceder a la consola:

fs_cli

salir de la consola:

freeswitch@sip10.voztovoice.net> ...

IMPORTANTE: son tres puntos seguidos

Es todo. Esta guía es parte del curso de FreeSWITCH MOOC oferto por VozToVoice

Vota el Articulo: 

No votes yet
Evalúa la calidad del articulo
Subscribe to Comments for "Instalación de FreeSWITCH 1.10.7 en CentOS 7" Subscribe to VozToVoice - All comments