Venga, éste post espero que si sea el definitivo, voy a probar que tal con debian 9 mas tarde y si conviene hago otro post.
ACTUALIZACIÓN
Éste manual también es válido para debian 9! :) mirad al final del artículo las anotaciones
Empezamos con una debian 8 recién instalada.
Vamos a instalar primero de todo todas las dependencias necesarias
root@freeswitch-capa8:~# apt-get install git libpq-dev postgresql postgresql-client build-essential dialog autoconf libtool-bin yasm root@freeswitch-capa8:~# apt-get install zlib1g-dev libjpeg-dev pkg-config libsqlite3-dev libcurl4-gnutls-dev libpcre3-dev libogg-dev libspeex-dev libspeexdsp-dev libldns-dev libedit-dev libtiff5-dev libopus-dev libsndfile-dev liblua5.2-dev
Las primeras dependencias son las que necesitamos para preparar la instalación de freeswitch, las segundas las librerías que pide al momento de hacer el “./configure –enable-core-pgsql-support”.
Primero de todo crearemos una base de datos en el postgresql sobre la que queremos que freeswitch trabaje.
root@freeswitch19-capa8:~# su - postgres postgres@freeswitch19-capa8:~$ createuser freeswitch_user postgres@freeswitch19-capa8:~$ createdb -O freeswitch_user freeswitch_db postgres@freeswitch19-capa8:~$ psql freeswitch_db freeswitch_db=# ALTER USER freeswitch_user WITH PASSWORD 'XXX'; freeswitch_db=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO freeswitch_user; freeswitch_db=# GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO freeswitch_user;
Ahora descargamos freeswitch del repositorio git en /usr/src/
root@freeswitch19-capa8:/usr/src# git clone https://freeswitch.org/stash/scm/fs/freeswitch.git Cloning into 'freeswitch'... remote: Counting objects: 307888, done. remote: Compressing objects: 100% (67730/67730), done. remote: Total 307888 (delta 239698), reused 298098 (delta 232095) Receiving objects: 100% (307888/307888), 148.13 MiB | 9.94 MiB/s, done. Resolving deltas: 100% (239698/239698), done. Checking connectivity... done.
Ahora iremos al directorio /usr/src/freeswitch/scripts y ejecutaremos el script FreeSWITCH-debian-raspbian-installer.sh
root@freeswitch19-capa8:/usr/src# cd /usr/src/freeswitch/scripts/ root@freeswitch19-capa8:/usr/src/freeswitch/scripts# ./FreeSWITCH-debian-raspbian-installer.sh
Éste script nos hará algunas preguntas a las que tendremos que responder.
La primera es si queremos instalar freeswitch 1.6 o freeswitch 1.7, que en realidad es freeswitch 1.9 porque se descarga de nuevo el código de la rama master de freeswitch en el directorio /usr/src/freeswitch.git/.
Ahora le indicaremos el FQDN, la IP y el mail del robot que mandará e-mails de notificaciones.
Ahora empezará a trabajar él solo un buen rato.
Al final tiene que salirte algo similar a ésto
Done, without errors. Execution Time (2018-05-26 01:20:40 UTC+2) loading tasks 300ms ▇▇▇ 2% wiredep:app 174ms ▇▇ 1% concurrent:dist 3.4s ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 23% cssmin:generated 996ms ▇▇▇▇▇▇▇▇ 7% ngAnnotate:dist 1.6s ▇▇▇▇▇▇▇▇▇▇▇▇ 10% uglify:generated 7.6s ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 51% Total 15s
Éste script ha instalado todas las dependencias necesarias para hacer funcionar todos los módulos y compilar así freeswitch. El script también instala freeswitch, pero la instalación resultante no tiene el conector con postgresql compilado y tendremos que especificarselo expresamente, luego make y finalmente make install.
root@freeswitch19-capa8:/usr/src/freeswitch/scripts# cd /usr/src/freeswitch.git/ root@freeswitch19-capa8:/usr/src/freeswitch.git# ./configure --enable-core-pgsql-support root@freeswitch19-capa8:/usr/src/freeswitch.git# make root@freeswitch19-capa8:/usr/src/freeswitch.git# make install
Si en el proceso dice que le falta alguna dependencia (sobretodo al hacer el make), se resuelve y se vuelve a iniciar todo el proceso desde el “./configure –enable-core-pgsql-support”.
Si todo va bien seguimos! ahora tenemos la última versión de la rama master de freeswitch instalada y con soporte de postgresql.
Copiamos el fichero /freeswitch.sh en /etc/init.d/
root@freeswitch19-capa8:/usr/src/freeswitch.git# cp scripts/freeswitch.sh /etc/init.d/
Una vez instalado, tendremos que indicarle los datos de acceso a la base de datos a freeswitch. Para ello nos posicionaremos en el directorio /usr/local/freeswitch/conf/ y editaremos los siguientes ficheros:
Grupo 1
root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi autoload_configs/switch.conf.xml
Grupo 2
root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi autoload_configs/directory.conf.xml root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi autoload_configs/voicemail.conf.xml root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi autoload_configs/cidlookup.conf.xml root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi autoload_configs/db.conf.xml root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi autoload_configs/lcr.conf.xml root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi autoload_configs/callcenter.conf.xml root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi autoload_configs/fifo.conf.xml root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi jingle_profiles/server.xml root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi sip_profiles/internal.xml root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi sip_profiles/internal-ipv6.xml root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi skinny_profiles/internal.xml
Grupo 3
root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi autoload_configs/easyroute.conf.xml
En cada uno de ellos deberemos buscar alguna referencia a la configuración de la db (buscas odbc-dsn y en la línea siguiente pegas el código que ahora mostraré). Cada grupo de los que he indicado arriba, el formato de la línea de configuración cambia un poco, así que por cada grupo de ficheros indicaré la línea que se tiene que añadir. Al grupo 3 se tienen que añadir/modificar varias líneas.
Revisad que no haya dos líneas haciendo referencia a la misma configuración, usad para comentar (mejor que borrar) la línea ante las dudas.
- Grupo 1: <*param name="core-db-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch_db user=freeswitch_user password='XXX' options='-c client_min_messages=NOTICE'" /> - Grupo 2: <*param name="odbc-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch_db user=freeswitch_user password='XXX' options='-c client_min_messages=NOTICE' application_name='freeswitch'" /> - Grupo 3: <*param name="db-username" value="freeswitch_user"/> <*param name="db-password" value="XXX"/> <*param name="db-dsn" value="freeswitch"/> <*param name="db-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch_db user=freeswitch_user password='XXX' options='-c client_min_messages=NOTICE' application_name='freeswitch'" /> /!\ borrar el * /!\
Ahora lo siguiente serà comprobar que freeswitch está parado y que no hay tablas en la base de datos que hemos creado de postgresql. Para verificar que el usuario que hemos configurado a freeswitch en lugar del usuario “root” de postgresql, el usuario postgres, vamos a usar el que hemos creado al principio del artículo al crear la base de datos.
root@freeswitch19-capa8:~# ps aux |grep freeswitch root@freeswitch19-capa8:~# su - postgres postgres@freeswitch19-capa8:~$ psql -U freeswitch_user -d freeswitch_db --password Password for user freeswitch_user: psql (9.4.15) Type "help" for help. freeswitch_db=> \dt No relations found.
Si no podemos conectar con éste usuario, deberemos revisar la configuración del fichero pg_hba.conf (comentamos las líneas con # y añadimos la última debajo de la primera línia que comento) y reiniciamos postgresql.
root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi /etc/postgresql/9.4/main/pg_hba.conf #local all postgres peer #local all all peer local all all trust root@freeswitch19-capa8:/usr/local/freeswitch/conf# /etc/init.d/postgresql restart [ ok ] Restarting postgresql (via systemctl): postgresql.service. root@freeswitch19-capa8:/usr/local/freeswitch/conf# su - postgres postgres@freeswitch19-capa8:~$ psql -U freeswitch_user -d freeswitch_db --password Password for user freeswitch_user: psql (9.4.15) Type "help" for help. freeswitch_db=> \dt No relations found.
Ahora vamos a arrancar freeswitch y para comprobar que la conexión es correcta, mostraremos de nuevo las tablas de la base de datos y veremos que habrá creado todas las tablas!
root@freeswitch19-capa8:~# /etc/init.d/freeswitch.sh start 22613 Backgrounding.
freeswitch_db=> \dt List of relations Schema | Name | Type | Owner --------+-------------------------------------+-------+----------------- public | aliases | table | freeswitch_user public | calls | table | freeswitch_user public | channels | table | freeswitch_user public | complete | table | freeswitch_user public | db_data | table | freeswitch_user public | group_data | table | freeswitch_user public | interfaces | table | freeswitch_user public | limit_data | table | freeswitch_user public | nat | table | freeswitch_user public | recovery | table | freeswitch_user public | registrations | table | freeswitch_user public | sip_authentication | table | freeswitch_user public | sip_dialogs | table | freeswitch_user public | sip_presence | table | freeswitch_user public | sip_registrations | table | freeswitch_user public | sip_shared_appearance_dialogs | table | freeswitch_user public | sip_shared_appearance_subscriptions | table | freeswitch_user public | sip_subscriptions | table | freeswitch_user public | tasks | table | freeswitch_user public | voicemail_msgs | table | freeswitch_user public | voicemail_prefs | table | freeswitch_user (21 rows) (END)
Y si queremos ver los logs vamos a /usr/local/freeswitch/log/freeswitch.log
root@freeswitch19-capa8:~# less /usr/local/freeswitch/log/freeswitch.log
Si en cualquier momento tenemos algun problema, podemos subir el nivel de debug del fichero de log en el fichero vars.xml del directorio de configuración de freeswitch.
root@freeswitch19-capa8:/usr/local/freeswitch/conf# vi vars.xml <*X-PRE-PROCESS cmd="set" data="console_loglevel=debug"/> /!\ borrar el * /!\
cambiamos el info por debug. Paramos freeswitch y lo volvemos a arrancar
root@freeswitch19-capa8:/usr/local/freeswitch/conf# /etc/init.d/freeswitch.sh stop Killing: 22613 root@freeswitch19-capa8:/usr/local/freeswitch/conf# /etc/init.d/freeswitch.sh start 22719 Backgrounding.
Finalmente nos tendrá que haber creado las siguientes tablas
freeswitch_db=# \dt List of relations Schema | Name | Type | Owner --------+-------------------------------------+-------+----------------- public | aliases | table | freeswitch_user public | calls | table | freeswitch_user public | channels | table | freeswitch_user public | complete | table | freeswitch_user public | db_data | table | freeswitch_user public | group_data | table | freeswitch_user public | interfaces | table | freeswitch_user public | limit_data | table | freeswitch_user public | nat | table | freeswitch_user public | recovery | table | freeswitch_user public | registrations | table | freeswitch_user public | sip_authentication | table | freeswitch_user public | sip_dialogs | table | freeswitch_user public | sip_presence | table | freeswitch_user public | sip_registrations | table | freeswitch_user public | sip_shared_appearance_dialogs | table | freeswitch_user public | sip_shared_appearance_subscriptions | table | freeswitch_user public | sip_subscriptions | table | freeswitch_user public | tasks | table | freeswitch_user public | voicemail_msgs | table | freeswitch_user public | voicemail_prefs | table | freeswitch_user (21 rows) (END)
Recomiendo realizar éste proceso de arrancar y parar el freeswitch 2 veces.
Ahora podremos entrar ya a la consola fs_cli
root@freeswitch19-capa8:/usr/local/freeswitch/log# cd /usr/local/freeswitch/bin/ root@freeswitch19-capa8:/usr/local/freeswitch/bin# ./fs_cli
Podemos añadir /usr/local/freeswitch/bin/ a las variables de entorno y no tendremos que ir cada vez al directorio para ejecutar el cli
root@freeswitch19-capa8:/usr/local/freeswitch/bin# export PATH=$PATH:/usr/local/freeswitch/bin root@freeswitch19-capa8:/usr/local/freeswitch/bin# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/freeswitch/bin
root@freeswitch19-capa8:~# fs_cli .=======================================================. | _____ ____ ____ _ ___ | | | ___/ ___| / ___| | |_ _| | | | |_ \___ \ | | | | | | | | | _| ___) | | |___| |___ | | | | |_| |____/ \____|_____|___| | | | .=======================================================. | Anthony Minessale II, Ken Rice, | | Michael Jerris, Travis Cross | | FreeSWITCH (http://www.freeswitch.org) | | Paypal Donations Appreciated: paypal@freeswitch.org | | Brought to you by ClueCon http://www.cluecon.com/ | .=======================================================. .=======================================================================================================. | ____ _ ____ | | / ___| |_ _ ___ / ___|___ _ __ | | | | | | | | |/ _ \ | / _ \| '_ \ | | | |___| | |_| | __/ |__| (_) | | | | | | \____|_|\__,_|\___|\____\___/|_| |_| | | | | _____ _ _ ____ __ | | |_ _|__| | ___ _ __ | |__ ___ _ __ _ _ / ___|___ _ __ / _| ___ _ __ ___ _ __ ___ ___ | | | |/ _ \ |/ _ \ '_ \| '_ \ / _ \| '_ \| | | | | | / _ \| '_ \| |_ / _ \ '__/ _ \ '_ \ / __/ _ \ | | | | __/ | __/ |_) | | | | (_) | | | | |_| | | |__| (_) | | | | _| __/ | | __/ | | | (_| __/ | | |_|\___|_|\___| .__/|_| |_|\___/|_| |_|\__, | \____\___/|_| |_|_| \___|_| \___|_| |_|\___\___| | | |_| |___/ | | _____ _ _ | | | ____|_ _____ _ __ _ _ / \ _ _ __ _ _ _ ___| |_ | | | _| \ \ / / _ \ '__| | | | / _ \| | | |/ _` | | | / __| __| | | | |___ \ V / __/ | | |_| | / ___ \ |_| | (_| | |_| \__ \ |_ | | |_____| \_/ \___|_| \__, | /_/ \_\__,_|\__, |\__,_|___/\__| | | |___/ |___/ | | ____ _ ____ | | __ ____ ____ __ / ___| |_ _ ___ / ___|___ _ __ ___ ___ _ __ ___ | | \ \ /\ / /\ \ /\ / /\ \ /\ / / | | | | | | |/ _ \ | / _ \| '_ \ / __/ _ \| '_ ` _ \ | | \ V V / \ V V / \ V V / _ | |___| | |_| | __/ |__| (_) | | | | _ | (_| (_) | | | | | | | | \_/\_/ \_/\_/ \_/\_/ (_) \____|_|\__,_|\___|\____\___/|_| |_| (_) \___\___/|_| |_| |_| | | | .=======================================================================================================. Type /helpto see a list of commands [This app Best viewed at 160x60 or more..] +OK log level [7] freeswitch@freeswitch19-capa8>
ACTUALIZACIONES: PARA INSTALAR EN DEBIAN 9
Al instalar las dependencias cambia de nombre libsndfile-dev a libsndfile1-dev
libsndfile-dev -> libsndfile1-dev
Al ejecutar el script no encuentra el paquete npm que no está en debian 9, pero en debian sid si. Nos descargamos el fichero de los repositorios sid de debian y lo instalamos
root@freeswitch-capa8:/usr/src# wget -c http://ftp.us.debian.org/debian/pool/main/n/npm/npm_1.4.21+ds-2_all.deb root@freeswitch-capa8:/usr/src# dpkg -i npm_1.4.21+ds-2_all.deb root@freeswitch-capa8:/usr/src# apt-get -f install
Una vez arreglada la dependencia volvemos a ejecutar el script FreeSWITCH-debian-raspbian-installer.sh
ya cuando hacemos el configure activando el postgresql, nos pide una dependencia, así que antes de ejecutar el configure, instalamos ésta dependencia
root@freeswitch-capa8:/usr/src/freeswitch.git# apt-get install libldns-dev root@freeswitch-capa8:/usr/src/freeswitch.git# ./configure --enable-core-pgsql-support root@freeswitch-capa8:/usr/src/freeswitch.git# make root@freeswitch-capa8:/usr/src/freeswitch.git# make install
Mas adelante cambia la ubicación del fichero hba.conf
root@freeswitch-capa8:/usr/local/freeswitch/conf# vi /etc/postgresql/9.6/main/pg_hba.conf
Han quedado algunas bases de datos creadas sobre sqlite3, así supongo que tendremos que añadir la línea de configuración en los ficheros correspondientes en confs
root@freeswitch-capa8:/usr/local/freeswitch/db# ls fifo.db json.db sofia_reg_external.db sofia_reg_external-ipv6.db root@freeswitch-capa8:/usr/local/freeswitch/conf# vi autoload_configs/fifo.conf.xml root@freeswitch-capa8:/usr/local/freeswitch/conf# vi autoload_configs/sofia.conf.xml
Recomiendo instalar también net-tools, para poder ver las conexiones y sockets y sngrep no es tampoco una mala herramienta ;)
[FIN ACTUALIZACIÓN]
Y aquí termina éste manual! :) Doy las gracias a los chicos de freeswitch-users que han tenido una gran paciencia conmigo y me han ayudado a identificar los problemas que tenía y a crear éste completo manual de instalación! mi pequeña aportación al proyecto! :D
Continuación: http://blackhold.nusepas.com/2018/07/03/freeswitch-1-9-continuacion-mod-fs_curl-usuarios-almacenados-en-bbdd/
Pingback: Freeswitch 1.9 (continuación): mod fs_curl, usuarios almacenados en BBDD – Blackhold