Servidor FastAGI - iperfex-team/webinar_irv_con_esteroides_en_asterisk GitHub Wiki
Arquitectura
Webinar hands-on de cómo desarrollar aplicaciones a través del dialplan de Asterisk con FastAGI. Se mostrará además un ejemplo práctico de cómo desarrollar un IVR utilizando FASTAGI.
Para ellos vamos a utilizar :
La distro Issabel (issabel.org), con su motor de PBX Asterisk y que tendrá un deploy en una maquina virtual. Issabel nos permite interconectarnos con la PSTN, registrar troncales, internos (anexos) con softphones o webphones, etc.
Contenedor Docker en Debian con FASTAGI, que permite la comunicación con sistemas terceros en forma directa. Con FASTAGI el proceso se establece a través de una conexión TCP/IP y de esta forma es posible liberar los recursos de la máquina Asterisk (Issabel) de forma bastante eficiente.
Nota: La diferencia entre AGI (Asterisk Gateway Interface, sirve de pasarela entre los distintos lenguajes de programación y Asterisk) y FASTAGI es que el proceso se ejecuta en otra maquina o contenedor a través de comunicaciones TCP/IP, liberando los recursos que son cruciales para IVRs o aplicaciones que tengan muchos impactos.
Pantalla de inicio de Debian.
Nos logueamos con el usuario que creamos.
Paquetes instalados
Lista de paquetes a instalar:
- vim
- curl
- screen
- mc
- git
- unzip
- net-tools
- links2
- sudo
- nmap
- make
- mycli
- docker
- docker-compose
- nfs-kernel-server
Ejecutamos los siguientes comandos.
apt update
apt -y install vim curl screen mc git unzip net-tools links2 sudo nmap make mycli nfs-kernel-server
Acceso ssh con root (por default esta desactivado)
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
/etc/init.d/ssh restart
Instalando Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
sudo usermod -aG docker TU_USUARIO
docker info
Customización docker
cat > /etc/docker/daemon.json <<ENDLINE
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m"
}
}
ENDLINE
Instalado docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Personalizando el Prompt
> /root/.bashrc && vim /root/.bashrc
Pegamos lo siguiente:
# ~/.bashrc: executed by bash(1) for non-login shells.
# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
PS1='\[\033[1;36m\]\u\[\033[1;31m\]@\[\033[1;32m\]\h:\[\033[1;35m\]\w\[\033[1;31m\]\$\[\033[0m\] '
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022
# You may uncomment the following lines if you want `ls' to be colorized:
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'
export HISTTIMEFORMAT="%d/%m/%y %T "
export LC_CTYPE=C
export LC_MESSAGES=C
export LC_ALL=C
clonamos repositorio GIT y desplegamos Deploy
cd /root/
git clone https://github.com/iperfex-team/webinar_irv_con_esteroides_en_asterisk.git
cd /root/webinar_irv_con_esteroides_en_asterisk/
docker-compose up -d
Configuración Servidor NFS (para compartir los audios)
vim /etc/exports
/root/webinar_irv_con_esteroides_en_asterisk/audio 172.16.0.57(rw,sync,no_root_squash,no_subtree_check)
restart servicio
sudo systemctl restart nfs-kernel-server