Instalar Asterisk 11 y FreePBX 2.11 en Debian Wheezy

31 Ago

Proceso de Instalación de Asterisk 11 con sistema web de Administración con FreePBX 2.11 sobre Debian 7.

Vamos a descargar todo el código fuente en /usr/src:

null   
cd /usr/src
wget http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz
wget http://mirror.freepbx.org/freepbx-2.11.0.tar.gz

Procederemos a crear un directorio llamado tars,

null   
mkdir tars
for i in $(ls *.tar.gz)
do
  tar xf $i && mv $i tars
done

para luego ir descomprimiendo los paquetes de código fuente y colocar los comprimidos en dicho directorio en caso de que sean necesarios después. Procedemos a instalar los prerequisitos de Asterisk:

null   
./asterisk-11.5.1/contrib/scripts/install_prereq install

Ahora instalemos los paquetes, empecemos con speex:

null   
cd /usr/src/speex-1.2rc1
./configure
make
make install

El script configure verifica que se satisfacen las dependencias para speex, al no encontrarse ningún error, compilamos con make e instalamos con make install. Procedemos ahora con la instalación de Dahdi, aunque no tengamos tarjetas, es necesario instalar Dahdi para poder realizar conferencias con Meetme:

null   
cd /usr/src/dahdi-linux-complete-2.7.0.1+2.7.0.1
make
make install
make config

Con el comando make compilamos Dahdi, con make install lo instalamos en el sistema y conmake config se crean las reglas para que arranque como un servicio del sistema cada vez que se inicia la máquina. Si tenemos tarjetas para configurar primarios, debemos instalar Libpri, de lo contrario podemos saltarnos este paso:

null   
cd /usr/src/libpri-1.4.14
make
make install

Ahora vamos a instalar Asterisk, crearemos un usuario llamado asterisk que además de estar a cargo del servicio de telefonía, también correrá el servicio web:

null   
cd /usr/src/asterisk-11.5.1
adduser asterisk --disabled-password --no-create-home --gecos "Usuario Asterisk"
./configure
make menuselect # ...

Hemos abierto el menú de selección de módulos, en Add-ons agregamos el módulo cdr_mysql y en Applications agregamos app_meetme. Guardamos y salimos y procedemos a instalar:

null   
chown asterisk. -R .
su -c "make" asterisk
make install
make samples
make config

El comando su nos permite compilar Asterisk como si lo estuviera ejecutando el usuario asterisk, después de instalar copiamos los archivos de configuración de ejemplo con el comando make samples pues debido a que necesitamos instalar FreePBX es necesario que Asterisk se esté ejecutando, se necesitan archivos de configuración, finalmente creamos los scripts para que Asterisk se ejecute como servicio al iniciar la máquina. Vamos a colocar como dueño de todos los archivos Asterisk al usuario asterisk:

null   
chown asterisk. /var/run/asterisk
chown asterisk. -R /etc/asterisk
chown asterisk. -R /var/{lib,log,spool}/asterisk
chown asterisk. -R /usr/lib/asterisk

Instalaremos a continuación las dependencias para instalar FreePBX:

null   
apt-get -y install apache2 mysql-server mysql-client bison flex php5 php5-curl php5-cli php5-mysql \
php-pear php-db php5-gd curl sox libncurses5-dev mpg123 sqlite3 automake autoconf

La instalación anterior nos pide una contraseña para el usuario root que corresponde al servicio de MySQL, debemos tenerla en cuenta para unos pasos posteriores. Necesitamos realizar algunos cambios en la configuración del servidor web con Apache para que corra con el usuario asterisk:

null   
sed -i 's/www-data/asterisk/g' /etc/apache2/envvars
chown asterisk. -R /var/www
chown asterisk. -R /var/lock/apache2
service apache2 restart

En los cambios anteriores, en primer lugar, cambiamos el usuario y el grupo de Apache, www-data, por asterisk, asignamos algunos archivos de Apache al usuario asterisk para que no hayan problemas al correr el servicio y editando archivos, finalmente reiniciamos el servicio. Ahora vamos a terminar de configurar algunas dependencias para FreePBX:

null   
mysqladmin -p create asterisk
mysqladmin -p create asteriskcdrdb

Acabamos de crear las Bases de Datos sobre MySQL para la configuración de FreePBX y para el CDR, ahora vamos a importar el esquema de tablas para la Base de Datos asteriskcdrdb, para la Base de Datos asterisk podemos crear el esquema desde la instalación de FreePBX:

null   
cd /usr/src/freepbx-2.11.0
mysql -u root -p asteriskcdrdb < SQL/cdr_mysql_table.sql

El último comando nos pide una contraseña que corresponde al usuario root de MySQL, es la que hemos ingresado en el momento de la instalación de dicho servicio. Con la misma contraseña nos conectaremos a la consola de MySQL:

null   
mysql -u root -p

Después de conectados daremos todos los permisos a un usuario sobre las Bases de Datos que venimos trabajando:

null   
GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';
FLUSH PRIVILEGES;

La contraseña del usuario asteriskuser corresponde a ‘amp109’, estos son los valores por defecto así que se recomienda cambiarlos; ya podemos salir de la consola de MySQL.

Al regresar al directorio del código fuente de FreePBX, vamos a ejecutar:

null   
./install_amp --installdb

El sistema nos empieza a hacer preguntas sobre las configuraciones previas que hemos hecho:

null   
Enter your USERNAME to connect to the 'asterisk' database:
 [asteriskuser] 
Enter your PASSWORD to connect to the 'asterisk' database:
 [amp109] 
Enter the hostname of the 'asterisk' database:
 [localhost] 
Enter a USERNAME to connect to the Asterisk Manager interface:
 [admin] 
Enter a PASSWORD to connect to the Asterisk Manager interface:
 [amp111] 
Enter the path to use for your AMP web root:
 [/var/www/html] 
/var/www

El primer valor pregunta por el usuario con permisos sobre las Bases de Datos, el segundo por su contraseña, como hemos ingresado los valores por defecto, podemos presionar la tecla ENTER y continuar, si nuestro valor fuera diferente, bastaría escribirlo. Para el usuario y la contraseña del Asterisk Manager Interface hemos dejado los valores por defecto, aquí podemos colocarlos a nuestro gusto. El directorio web bajo Debian es /var/www, por ello hemos reemplazado el valor por defecto.

null   
Enter the IP ADDRESS or hostname used to access the AMP web-admin:
 [192.168.1.1] 192.168.1.2
Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser]?
 [extensions] 
Enter directory in which to store AMP executable scripts:
 [/var/lib/asterisk/bin] 
Enter directory in which to store super-user scripts:
 [/usr/local/sbin]

A continuación se nos pregunta la dirección IP, después de dicho valor, los otros valores están bien por defecto, luego de estas preguntas el sistema empezará a instalar y podremos redirigir nuestro navegador a la dirección IP para acceder a FreePBX.

Al ir al navegador, la primera pantalla que obtenemos es:

Los tres primeros campos son obligatorios y deben ser llenados con las credenciales que tendrá el administrador de FreePBX. Al finalizar este paso nos encontramos con la interfaz por defecto:

Desde aquí se nos pedirán las credenciales de acceso al dar clic en FreePBX Administration, al ingresar dichas credenciales correctamente, veremos la interfaz de administración de FreePBX:

Se debe dar clic en el botón rojo con el texto Apply Config. Esto genera algunos archivos para Asterisk, pero puede aparecernos el siguiente error:

Dichos archivos deben ser borrados, por ello procedemos asi:

null   
cd /etc/asterisk
rm logger.conf cel.conf cel_odbc.conf iax.conf sip.conf extensions.conf sip_notify.conf features.conf

Los archivos pueden variar e incluso al instalar otros módulos puede ser necesario borrar otros diferentes pues el error puede volver a aparecer. Necesitamos realizar cualquier cambio para que nos aparezca la barra roja y aplicar cambios para que FreePBX ponga los archivos en su lugar, una buena opción es ir y actualizar los módulos instalados.

Podemos reiniciar para verificar que el servidor sube correctamente y estaría listo.

performance labs steroids

Acerca del autor

Christian Gutierrez ha escrito 22 publicaciones en este blog.

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why. – Anonymous Developer

9 Comentarios a “Instalar Asterisk 11 y FreePBX 2.11 en Debian Wheezy”

  1. Skull 28 diciembre, 2013 at 22:28 #

    Chess en esta parte creo que falto una “b”
    mysqladmin -p create asterisk
    mysqladmin -p create asteriskcdrd
    creo que va asi:
    mysqladmin -p create asteriskcdrdb

    • Chesstrian 2 marzo, 2014 at 23:46 #

      Larry, muchas gracias por leernos y corregirnos :), ya quedó.

  2. armando 1 marzo, 2014 at 20:11 #

    un saludo cordial desde la ciudad de cartagena colombia, felicitaciones y muchas gracias por este gran aporte, me gustaria saber si cuentas con algun manual sobre la instalacion de frepbx y asterik 11 en la distro CENTOS 6.5 que me hagas el favor de facilitarme.

    • Chesstrian 3 marzo, 2014 at 0:19 #

      Hola Armando, de momento me queda complicado escribir en el blog por cuestiones de tiempo, sin embargo acabo de enviar a tu correo la copia de un libro de licencia GNU FDL, trabaja con CentOS 6.4 y está en español, espero que lo encuentres bastante útil.

      Saludos.

      • Jmor 25 marzo, 2014 at 12:04 #

        muy buena explicación, tengo la misma necesidad que Armando, la de instalar Asterisk 11 en CentOS, podrías pasarme el libro de GNU.

  3. Arnold 28 marzo, 2014 at 16:26 #

    hola saludos muy buen aporte!! solo tengo una consulta funcionaria si hago lo mismo en una cubieboard con debian instalado??

    muchas gracias

    • Chesstrian 15 julio, 2014 at 14:21 #

      Hola Arnold.

      Pues nunca he tenido la oportunidad de probar con una cubieboard, ¿Tuviste la oportunidad de probar la instalación?. Dependiendo de la arquitectura el proceso de compilación podría tornarse bastante largo, sin embargo creería que es posible hacerlo correr Asterisk así como ha sido posible sobre un RaspberryPi. Podría suceder que estoy diciendo algo incorrecto porque no he tenido la oportunidad de probar Asterisk sobre ninguna de las dos boards.

  4. arnold 23 julio, 2014 at 11:03 #

    Hola Chesstrian

    el asterick con freepbx todo tal cual lo tienes en el tutorial de arriba me funciono y corre bien en la cubie gracias me sirvio de mucho tu aporte!!

  5. Franco 16 agosto, 2014 at 14:03 #

    Corrige algunos errores que haz cometido:
    Este metodo puede ser mas sencillo, para descomprimir ya que en algunos casos da error:

    ………………….
    mkdir tars
    for i in $(ls *.tar.gz)
    do
    tar xf $i && mv $i tars
    done
    ………………….

    Si cambias los datos en descarga tienes que tambien cambiarlos en las entradas de CD:
    Ejemplo:

    ./asterisk-11.5.1/contrib/scripts/install_prereq install
    POR -> ./asterisk-11*/contrib/scripts/install_prereq install

    cd /usr/src/asterisk-11.5.1
    POR -> cd /usr/src/asterisk-11*

    Para salir del mysql tienes que especificarlo para quien no lo sabe que lo sepa:
    \q

Deja un comentario