Enviado por admin el
Como el próximo mes de Junio voy a organizar el primer curso a distancia dedicado a FreeSWITCH, he pensado publicar esta guía para que lo puedan instalar y ir probándolo. No voy a comentar mucho los pasos pero les garantizo que la instalación funciona correctamente.
yum install libvorbis libvorbis-devel vorbis-tools libogg libogg-devel -y
yum install gsm gsm-devel gsm-tools -y
yum install speex speex-devel wavpack wavpack-devel -y
Algunos paquetes y librerías utilizadas para la compilación de las fuentes:
yum install gcc ncurses-devel make gcc-c++ zlib-devel libtool bison-devel bison libpqxx-devel -y
yum install openssl-devel bzip2-devel wget newt-devel subversion flex gtk2-devel bzip2 patch -y
yum install libjpeg-devel yasm-devel libsndfile-devel -y
MariaDB:
yum install mariadb mariadb-server mariadb-devel -y
ODBC:
yum install unixODBC unixODBC-devel mysql-connector-odbc libtool-ltdl-devel -y
SQLite:
yum install sqlite sqlite-devel -y
LibUUID:
yum install libuuid libuuid-devel uuid uuid-devel -y
LAME, LibMAD y Opus se instalan desde las fuentes:
cd /usr/src
wget https://www.voztovoice.org/campus/FreeSWITCH/lame-3.100.tar.gz
tar -xf lame-3.100.tar.gz
cd lame-3.100
./configure --prefix=/usr --libdir=/usr/lib64
make
make install
cd /usr/src
wget https://www.voztovoice.org/campus/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 modificamos una 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
guardamos los cambios y continuamos con la compilación e instalación:
make
make install
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
Terminamos con la instalación de SoX:
cd /usr/src
wget https://www.voztovoice.org/campus/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
make
make install
Otros paquetes para implementar FAX y protocolo XMPP:
yum install libtiff libtiff-devel libxml2 libxml2-devel -y
yum install spandsp spandsp-apidoc spandsp-devel -y
yum install gnutls gnutls-devel gnutls-utils -y
yum install iksemel iksemel-devel iksemel-utils -y
OpenLDAP es la versión open source del protocolo Lightweight Directory Access.
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
Continuamos la preparación del servidor con la instalación del lenguaje de programación LUA que permite integrar el dialplan con aplicaciones escritas con este lenguaje:
yum install lua lua-devel -y
La librería LIBSRTP para el cifrado del flujo media:
yum install libsrtp libsrtp-devel -y
y la liberia Jansson para el soporte de las RESTful API:
yum install jansson jansson-devel -y
Unas ultimas dependencias:
yum install portaudio portaudio-devel python-devel perl-devel erlang ldns-devel libedit-devel -y
Instalación de FreeSWITCH
Terminada la preparación del servidor, iniciamos con la instalación de FreeSWITCH. Para la descarga de las fuentes se utilizará GIT que hay que instalar:
yum install git perl-ExtUtils-Embed -y
Descargamos la ultima versión de la rama 1.6 de FreeSWITCH:
cd /usr/src
git clone -b v1.6 https://freeswitch.org/stash/scm/fs/freeswitch.git freeswitch
Entramos en la carpeta creada:
cd freeswitch
y preparamos las fuentes para la compilación:
./bootstrap.sh -j
./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
Si queremos instalar más módulos, además de los predefinidos, abrimos el siguiente archivo:
nano modules.conf
y descomentamos las lineas de los módulos que queremos incluir en la compilación e instalación. Por ahora se dejan solamente los que vienen por defecto. Continuamos con:
make
Si no aparecen errores, continuamos con:
make install
Instalamos las locuciones en inglés (disponibles también en francés y ruso) y los audio para la música de espera:
make cd-sounds-install
make cd-moh-install
Para que FreeSWITCH arranque en automático modificamos el siguiente archivo:
nano build/freeswitch.service
Cambiando esta linea:
WorkingDirectory=/run/freeswitch
para que quede:
WorkingDirectory=/var/run/freeswitch
Guardamos los cambios y copiamos el archivo en la carpeta de los scripts de arranque:
cp build/freeswitch.service /usr/lib/systemd/system/
copiamos el archivo donde se pueden añadir parámetros personalizados en la respectiva carpeta:
cp build/freeswitch.sysconfig /etc/sysconfig/freeswitch
Como el script de arranque inicia FreeSWITCH con usuario freeswitch lo creamos:
useradd -r -d /etc/freeswitch/ freeswitch
Como la carpeta /var/run/freeswitch, indicada en el script de arranque, se borra a cada reboot del sistema, para que cada vez se cree correctamente:
nano /etc/tmpfiles.d/freeswitch.conf
copiamos la siguiente linea:
d /var/run/freeswitch 0755 freeswitch freeswitch - -
se creará la carpeta /var/run/freeswitch con los permisos 0755 y usuario y grupo propietario freeswitch. Ya podemos activar el script de arranque:
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 arranque, lo iniciamos 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
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 por defecto en SQLite la primera vez que se inicia el programa. Una vez que termine el flujo de LOG de FreeSWITCH, para averiguar que el modulo más importante, mod_sofia, esté funcionando correctamente:
freeswitch@sip10.voztovoice.co> sofia status
aparecerá la configuración predefinida del modulo. Para parar FreeSWITCH:
freeswitch@sip10.voztovoice.co> shutdown
Cambiamos los permisos de las carpetas y archivos relacionados:
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 freeswitch:freeswitch /usr/bin/freeswitch
Ahora podemos iniciar el programa utilizando el script de arranque:
systemctl start freeswitch
y averiguar que esté funcionando correctamente:
ps aux | grep freeswitch
freeswi+ 24421 92.2 4.6 786856 23144 ? Ssl 14:57 4:17 /usr/bin/freeswitch -nc -nf
Y acceder a la consola:
fs_cli
Salir de la consola:
freeswitch@sip10.voztovoice.co> ...
Eso es todo.
Me comentan
7 comentarios
Re: Error al ejecutar fs_cli
Enviado por admin el
Hola,
que te devuelve el comando:
ps aux | grep freeswitch
Saludos
Re: Error al ejecutar fs_cli
Enviado por admin el
Puede ser que tengas Selinux activado:
nano /etc/selinux/config
Tiene que ser:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
Luego reinicias el servidor.
Me comentas
Saludos
Re: Error al ejecutar fs_cli
Enviado por admin el
Hola,
hay que ver que dicen las dos lineas donde sale el ERROR:
ago 23 12:02:26 localhost.localdomain freeswitch[981]: ERROR: Failed to set SCH...
ago 23 12:02:26 localhost.localdomain freeswitch[981]: ERROR: Could not set nic...
Saludos