Debemos tener instaladas numerosas dependencias para poder utilizar FreePBX. Esta es una lista que nos puede dar una pista si algo falla:
libxml2-dev
libtiff
libtiff-devel
lame
apache2
mysql
mysql-devel
mysql-server
php5 (o php4)
php5-cli
perl
perl-CPAN
curl
sox
Antes de nada mencionar que hacer funcionar a asterisk+freepbx con Apache da muchos quebraderos de cabeza, a no ser que apache se ejecute con el usuario asterisk. Para ello me remito al tutorial para ejecutar dos apaches en una misma máquina, que se puede encontrar en la miscelánea de este documento. En caso de optar por este camino, obviaremos las instrucciones relativas a cambiar permisos para que el usuario www-data pueda acceder a determinadas partes de asterisk.
Hay que tener instalado php-cli para poder ejecutar el script de instalación de freepbx. Además, en el fichero php.ini correspondiente a php-cli, tenemos que descomentar la lÃnea correspondiente a la extensión de mysql
Descargamos y descomprimimos freepbx
cd /usr/src wget -c http://mirror.freepbx.org/freepbx-2.9.0.tar.gz tar -zvxf freepbx-2.9.0.tar.gz |
Modificamos la configuracion de php para que acepte upload de archivos de hasta 20MB, los archivos de audio que utilizaremos para la musica en espera:
vi /etc/php5/apache2/php.ini ; Maximum allowed size for uploaded files. upload_max_filesize = 20M |
Configuración de las bases de datos
Creamos las bases de datos. Asumiremos que ya tenemos instalado y configurado mysql.
mysqladmin create asterisk mysqladmin create asteriskcdrdb mysql asterisk < SQL/newinstall.sql mysql asteriskcdrdb < SQL/cdr_mysql_table.sql |
Configuramos los permisos de las bases de datos, mediante phpmyadmin o desde consola. Debemos crear un usuario asterisk con permiso para las bases de datos asterisk.* y asteriskcdrdb.*, con las contraseñas 'amp109' en ambas (claves por defecto)
Ejecutamos el script de instalación de freePBX:
/usr/src/freePBX/install_amp |
Posiblemente el script de inicio nos de problemas con el fichero /var/run/asterisk.pid. Modificamos el directorio donde asterisk guarda el fichero de pid
vi /etc/asterisk/asterisk.conf astrundir => /var/run/asterisk mkdir /var/run/asterisk chown asterisk:asterisk /var/run/asterisk |
Debemos permitir a www-data escribir en /etc/asterisk, a fin de que se puedan guardar los cambios realizados con freepbx.
chown www-data:www-data -R /etc/asterisk chmod 755 /etc/asterisk chmod 640 /etc/asterisk/* |
Como los ficheros de /etc/asterisk/* pertenecen a www-data con permisos 640, añadimos asterisk al grupo www-data para que pueda leer y escribir dichos ficheros.
adduser asterisk www-data |
Tras instalar freepbx, tenemos que ajustar los permisos del directorio del interface web, para que pueda ser leÃdo por apache
chown www-data:www-data /var/www/html |
Debemos configurar AUTHTYPE=none en el fichero /etc/amportal.conf a fin de que nos deje entrar sin contraseña, ya que al principio no habrá ninguna contraseña definida. Además debemos cambiar la clave de AMPMGRUSER a "amp109" en el mismo fichero.
Como www-data no podrá escribir en /var/lib/asterisk/sounds/es/ , no podrá crear el directorio custom al instalar los módulos de grabaciones, asà que lo creamos a mano.
mkdir /var/lib/asterisk/sounds/custom/ chown asterisk:asterisk /var/lib/asterisk/sounds/custom/ adduser www-data asterisk |
Comprobaremos los permisos de los ejecutables de asterisk, en /var/lib/asterisk/bin, de modo que el usuario de apache pueda ejecutarlos. De lo contrario no podremos grabar los cambios desde el interface web.
Llegados a este punto entraremos en freepbx e instalaremos los módulos desde la sección Tools.
Dado que cada vez que asterisk graba un sondo, le pone permisos 644, el usuario www-data no podrá modificar ninguna grabación aunque pertenezca al grupo asterisk. Para solucionarlo, modifiqué el fichero page.recordings.php del módulo recordings, de modo que cuando tenga que mover el fichero temporal con permisos 644, lo haga mediante sudo. (Esto es relativamente peligroso, por lo que siempre lo más recomendable es que apache se ejecute como usuario asterisk.) Debemos permitir a www-data ejecutar /bin/mv en /etc/sudoers
vi /etc/sudoers #Permitimos a freepbx reiniciar/apagar el servidor, y mover ficheros www-data ALL=NOPASSWD:/sbin/shutdown,/usr/sbin/asterisk,/usr/bin/ntpq,/bin/mv |
Para asegurarnos de que freepbx pueda conectarse a Asterisk, revisaremos el fichero /etc/asterisk/manager.conf de modo que sea similar a éste:
#manager.conf [admin] secret = amp109 |
En la carpeta modules están los módulos sysinfo, asteriskinfo y sysstatus que podemos instalar.
Todos ellos debemos copiarlos a admin/modules y luego activarlos desde el gestor de módulos de la sección "Tools"
Sysinfo
Este módulo nos permitirá obtener información del sistema tal como espacio libre en disco, memoria libre, tipo y velocidad del procesador, etc.
Sysstatus
Este módulo nos permitirá saber si los procesos principales del sistema están funcionando: cron, apache, asterisk y ssh.
Si queremos permitir que se pueda reiniciar vÃa web usando el módulo sysadmin, debemos permitir a www-data ejecutar el comando shutdown en /etc/sudoers
Para que se visualice correctamente el estado de cron, renombramos el ejecutable cron a crond. Editamos /etc/init.d/cron y cambiamos las referencias a cron por crond
Asteriskinfo
Este módulo nos muestra información del servidor asterisk, lÃneas en uso, canales,etc. Para que funcione, debemos permitir a www-data ejecutar el comando asterisk en /etc/sudoers
Para poder usarlo, debemos ejecutar /var/www/html/panel/safe_opserver (por ejemplo desde un script de inicio)
Asimismo si al abrirlo nos manda a una url que no corresponde, comprobaremos el valor asignado en /etc/amportal.conf
Para poder usar por primera vez el panel, debemos establecer "AUTHTYPE=none" en /etc/amportal.conf
Entramos en la configuración vÃa web, y en la sección "Administrators" borramos los que haya, si los hay.
Creamos un administrador nuevo. No nos pedirá contraseña.
Establecemos "AUTHTYPE=database" en /etc/amportal.conf
Entramos vÃa web poniendo sólo nombre de usuario, sin contraseña
Ahora ya podemos establecer contraseña y crear usuarios nuevos, con los permisos que queramos asignarles
Originalmente, el módulo cdr_mysql venÃa incluido en el paquete asterisk-addons. En las últimas versiones este paquete va integrado con el principal, pero el módulo cdr_mysql está desactivado por defecto. Para poder utilizarlo recompilaremos asterisk seleccionando la opción Add-ons->cdr_mysql al ejecutar >make menuselect. El resto de la compilación sigue el proceso normal (make && make install)
Posteriormente editaremos el fichero /etc/asterisk/cdr_mysql.conf, ajustaremos los valores correspondientes a nuestra base de datos asteriskcdrdb y reiniciaremos asterisk.