Cómo instalar Asterisk en CentOS/RHEL 8/7


Asterisk es un marco de código abierto que se utiliza para crear aplicaciones de comunicación. Puede usarlo para convertir una computadora o servidor local en el servidor de comunicaciones. Se utiliza para alimentar sistemas IP PBX, puertas de enlace VoIP, servidores de conferencias y otras soluciones. Es utilizado por todo tipo de organizaciones en todo el mundo y, finalmente, pero no por último, es gratuito y de código abierto.

En este tutorial, le mostraremos cómo instalar Asterisk en CentOS 8/7 (las instrucciones también funcionan en RHEL 8/7), pero antes de comenzar, necesitaremos hacer algunos preparativos para que Asterisk pueda ejecutarse sin problemas después de la instalación. .

Paso 1: deshabilite SELinux en CentOS

Para hacer esto, SSH a su sistema y usando su editor de texto de línea de comando favorito, abra/etc/selinux/config y desactive SELINUX.

# vim /etc/selinux/config

La línea SELinux debería verse así:

SELINUX=disabled

Ahora reinicie su sistema. Una vez que vuelve SSH nuevamente a ese sistema.

Paso 2: Instale los paquetes necesarios

Asterisk tiene bastantes requisitos que deben instalarse. Puede usar el siguiente comando yum para instalar los paquetes requeridos como se muestra.

# yum install -y epel-release dmidecode gcc-c++ ncurses-devel libxml2-devel make wget openssl-devel newt-devel kernel-devel sqlite-devel libuuid-devel gtk2-devel jansson-devel binutils-devel libedit libedit-devel

Antes de continuar, cree un nuevo usuario con privilegios de sudo llamado "asterisco", usaremos este usuario para configurar el asterisco en el sistema.

# adduser asterisk -c "Asterisk User"
# passwd asterisk 
# usermod -aG wheel asterisk
# su asterisk

A continuación, instale PJSIP, una biblioteca de comunicación multimedia de código abierto y gratuita que implementa protocolos basados en estándares como SIP, SDP, RTP, STUN, TURN e ICE. Es el controlador de canal SIP de Asterisk el que debería mejorar la claridad de las llamadas.

Para obtener la última versión, primero creemos un directorio temporal donde construiremos el paquete desde la fuente.

$ mkdir ~/build && cd ~/build

Ahora vaya al comando wget para descargar el paquete directamente en la terminal.

Tenga en cuenta que al escribir este artículo, la última versión es 2.8, esto puede cambiar en el futuro, por lo tanto, asegúrese de utilizar la última versión:

$ wget https://www.pjsip.org/release/2.9/pjproject-2.9.tar.bz2

Una vez que se complete la descarga, extraiga el archivo y cambie a ese directorio.

$ tar xvjf pjproject-2.9.tar.bz2
$ cd pjproject-2.9

El siguiente paso es preparar el paquete que se compilará. Puede utilizar el siguiente comando:

$ ./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr

No debería ver ningún error o advertencia. Asegúrese de que se cumplan todas las dependencias:

$ make dep

Y ahora podemos completar la instalación y vincular bibliotecas con:

$ make && sudo make install && sudo ldconfig

Finalmente, asegúrese de que todas las bibliotecas estén instaladas y presentes:

$ ldconfig -p | grep pj

Debería obtener el siguiente resultado:

libpjsua2.so.2 (libc6,x86-64) => /lib64/libpjsua2.so.2
	libpjsua2.so (libc6,x86-64) => /lib64/libpjsua2.so
	libpjsua.so.2 (libc6,x86-64) => /lib64/libpjsua.so.2
	libpjsua.so (libc6,x86-64) => /lib64/libpjsua.so
	libpjsip.so.2 (libc6,x86-64) => /lib64/libpjsip.so.2
	libpjsip.so (libc6,x86-64) => /lib64/libpjsip.so
	libpjsip-ua.so.2 (libc6,x86-64) => /lib64/libpjsip-ua.so.2
	libpjsip-ua.so (libc6,x86-64) => /lib64/libpjsip-ua.so
	libpjsip-simple.so.2 (libc6,x86-64) => /lib64/libpjsip-simple.so.2
	libpjsip-simple.so (libc6,x86-64) => /lib64/libpjsip-simple.so
	libpjnath.so.2 (libc6,x86-64) => /lib64/libpjnath.so.2
	libpjnath.so (libc6,x86-64) => /lib64/libpjnath.so
	libpjmedia.so.2 (libc6,x86-64) => /lib64/libpjmedia.so.2
	libpjmedia.so (libc6,x86-64) => /lib64/libpjmedia.so
	libpjmedia-videodev.so.2 (libc6,x86-64) => /lib64/libpjmedia-videodev.so.2
	libpjmedia-videodev.so (libc6,x86-64) => /lib64/libpjmedia-videodev.so
	libpjmedia-codec.so.2 (libc6,x86-64) => /lib64/libpjmedia-codec.so.2
	libpjmedia-codec.so (libc6,x86-64) => /lib64/libpjmedia-codec.so
	libpjmedia-audiodev.so.2 (libc6,x86-64) => /lib64/libpjmedia-audiodev.so.2
	libpjmedia-audiodev.so (libc6,x86-64) => /lib64/libpjmedia-audiodev.so
	libpjlib-util.so.2 (libc6,x86-64) => /lib64/libpjlib-util.so.2
	libpjlib-util.so (libc6,x86-64) => /lib64/libpjlib-util.so
	libpj.so.2 (libc6,x86-64) => /lib64/libpj.so.2
	libpj.so (libc6,x86-64) => /lib64/libpj.so

Paso 3: Instale Asterisk en CentOS 8/7

Ahora estamos listos para iniciar la instalación de Asterisk. Vuelve a nuestro directorio ~/build:

$ cd ~/build

Vaya al comando wget para descargar el archivo en la terminal.

$ wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz

Al escribir este tutorial, la última versión de Asterisk es 16. Asegúrese de que está descargando la última versión de Asterisk, cuando siga los pasos.

Ahora extraiga el archivo y navegue hasta el directorio recién creado:

$ tar -zxvf asterisk-16-current.tar.gz
$ cd asterisk-16.5.1

Este es el momento de mencionar que si desea habilitar la compatibilidad con mp3 para reproducir música mientras el cliente está en espera, deberá instalar algunas dependencias más. Estos pasos son opcionales:

$ sudo yum install svn
$ sudo ./contrib/scripts/get_mp3_source.sh

Después del segundo paso, debería obtener un resultado similar a estos:

A    addons/mp3
A    addons/mp3/Makefile
A    addons/mp3/README
A    addons/mp3/decode_i386.c
A    addons/mp3/dct64_i386.c
A    addons/mp3/MPGLIB_TODO
A    addons/mp3/mpg123.h
A    addons/mp3/layer3.c
A    addons/mp3/mpglib.h
A    addons/mp3/decode_ntom.c
A    addons/mp3/interface.c
A    addons/mp3/MPGLIB_README
A    addons/mp3/common.c
A    addons/mp3/huffman.h
A    addons/mp3/tabinit.c
Exported revision 202.

Comience ejecutando el script de configuración para preparar el paquete para su compilación:

$ sudo contrib/scripts/install_prereq install
$ ./configure --libdir=/usr/lib64 --with-jansson-bundled

Si le faltan dependencias, instálelas. En mi caso, recibí el siguiente error:

configure: error: patch is required to configure bundled pjproject

Para evitar esto, simplemente ejecute:

# yum install patch 

Y vuelva a ejecutar el script de configuración. Si todo salió perfectamente sin errores, verá la siguiente captura de pantalla.

Ahora, comencemos el proceso de compilación:

$ make menuselect

Después de unos segundos, debería obtener una lista de funciones para habilitar:

Si intenta utilizar la función de música en espera, deberá habilitar la función "format_mp3" de la sección "Complementos". Guarde su lista y ejecute el siguiente comando:

$ make && sudo make install

Para instalar los archivos de configuración de muestra, utilice el siguiente comando:

$ sudo make samples

Para iniciar Asterisk al arrancar, use:

$ sudo make config

Actualice la propiedad de los siguientes directorios y archivos:

$ sudo chown asterisk. /var/run/asterisk
$ sudo chown asterisk. -R /etc/asterisk
$ sudo chown asterisk. -R /var/{lib,log,spool}/asterisk

Finalmente, probemos nuestra instalación con:

$ sudo service asterisk start
$ sudo asterisk -rvv

Debería ver un resultado similar a este:

Asterisk 16.5.1, Copyright (C) 1999 - 2018, Digium, Inc. and others.
Created by Mark Spencer <[email protected]>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 16.5.1 currently running on centos8-tecmint (pid = 9020)
centos8-tecmint*CLI>

Si desea ver una lista de los comandos disponibles, escriba:

asterisk*CLI> core show help

Para salir del indicador de Asterisk, simplemente escriba:

asterisk*CLI> exit

Asterisk seguirá ejecutándose en segundo plano.

Ahora tiene un servidor Asterisk en ejecución y puede comenzar a conectar teléfonos y extensiones y ajustar su configuración según sus necesidades. Para obtener más detalles sobre cómo lograr esto, se recomienda utilizar la página Wiki de Asterisk. Si tiene alguna pregunta o comentario, háganoslo saber en la sección de comentarios a continuación.