Esta es una traducción de la guía que publiqué en distintos medios para instalar Asterisk en Debian / Ubuntu.
Estos procedimientos fueron probados en Hardy Heron, Intrepid Ibex, Jaunty Jackalope (un paso agregado al final), Karmic Koala y en Debian Lenny.
Antes de instalar, cosas para tener listas
Instalar el servidor con el método de preferencia. Se puede marcar LAMP cuando se instalen los paquetes. Esto agrega al Linux el Apache, MySQL y PHP. Entramos al servidor y nos cambiamos al super-usuario
sudo su
Para estar seguros acerca de MySQL y PHP hacer esto
apt-get install php5-mysql libapache2-mod-php5 mysql-server
Puede que haga falta configurar apache apropiadamente, o al menos asegurarse de que el php5 está habilitado. En Intrepid Ibex, Jaunty o Krmic esto no hace falta:
a2enmod php5
Para que funcione la localización editar /etc/php5/apache2/php.ini and modify as follow (leny/sid):
; PHP's built-in default is text/html default_mimetype = "text/html" ;default_charset = "ISO-8859-1" default_charset = "utf8"
La última línea fuerza la página de caractéres en utf8 para las páginas php (sobreescribe la página de caracteres del apache).
De http://www.freepbx.org/trac/wiki/UbuntuServer
Tuve problemas con otros sitios php i18n php y esta modificación funcionó para ellos
Otros elementos de configuiración que deberías cambiar en el archivo Php.ini para hacer feliz al FreePBX.
; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = Off ;max_input_nesting_level = 64 ; Maximum input variable nesting level memory_limit = 100M ; Maximum amount of memory a script may consume (16MB)
Instalar Asterisk
apt-get install asterisk asterisk-mysql asterisk-mp3 php-db php5-gd php-pear sox curl
No hay razón para instalar zaptel en kernels 2.6 o superiores porque el dispositivo de timing lo provee el kernel a menos que, por supuesto estemos usando una placa que lo requiera. Ztdummy ya no es necesario.
En Karmic se instalará la versión 1.6 de Asterisk, en las demás la versión 1.4.
Yo instalé además estos sonidos y avisos en español
apt-get install asterisk-prompt-es asterisk-sounds-extra
Hay dos aproximaciones para resolver el problema de los permisos, uno es agregar el grupo asterisk al usuario www-data que es el usuario por defecto del apache.
1. Mantener el usuario as www-data
adduser www-data asterisk
De esta forma, FreePBX da un error copiando /usr/share/asterisk/bin/agi-bin. Cambiamos el dueño del archivo de esta forma
chown www-data.asterisk -R /usr/share/asterisk
Después de instalar FreePBX hace falta cambiar el usuario en amportal.conf. Esto está en la sección “Instalación de FreePBX”.
Salteamos a la sección 3.
2. Cambiar el apache para que funcione con el usuario asterisk. Esta solución es la más fácil si en este servidor sólo tendremos funcionando el Asterisk.
Editar el archivo /etc/apache2/envvars y cambiar el usuario a asterisk.
#export APACHE_RUN_USER=www-data #export APACHE_RUN_GROUP=www-data export APACHE_RUN_USER=asterisk export APACHE_RUN_GROUP=asterisk
Si uno cambia del método 1 al 2, quedan archivos a nombre de un usuario distinto y pueden aparecer erroes. Se puede borrar los archivos de la sesión en /var/lib/php5 o cambiar el dueño de los archivos a asterisk.
3. Reiniciar el Apache
apache2ctl graceful
Para hacer que se inicie el servidor FOP, cambié el shell por defecto para el usuario asterisk que estaba puesto en false:
usermod -s /bin/bash asterisk
Por lo que entendí, el shell predeterminado para los deribados Debian es el Dash, y para toda esta implementación se espera el Bash como shell.
En /usr/sbin/safe_asterisk cambié la variable BACKGROUND que estaba en 0 a 1. Este archivo se modificará cuando actualicemos el FreePBX, mucha atención! Todavía no entiendo por qué en las instalaciones hechas sobre CentOS no hace falta poner este valor en 1.
Instalación de FreePBX
Bajar el FreePBX de http://www.freepbx.org
cd /tmp wget http://mirror.freepbx.org/freepbx-2.5.1.tar.gz cd /usr/src tar xvfz /tmp/freepbx-2.5.1.tar.gz cd freepbx-2.5.1
Lo probé también con la versión 2.6 sin problemas, me falta el 2.7 que recién salió.
Preparar la base de datos. Si tu instalación tiene clave de root para el mysql, como lo pide cuando se instala, entonces tendrás que agregar la opción ‘-p’ en todos los comandos que empiezan con mysql. Por ejemplo, el primer comando sería “mysqladmin create asterisk -p”. Cuando lo pide, poner la contraseña adecuada:
mysqladmin create asterisk mysqladmin create asteriskcdrdb mysql asterisk < SQL/newinstall.sql mysql asteriskcdrdb < SQL/cdr_mysql_table.sql mysql GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'amp109'; GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'amp109'; flush privileges; quit
MUY IMPORTANTE ANTES DE INSTALAR FREEPBX: Hacer una copia de /etc/asterisk/modules.conf. El FreePBX reescribe el archivo y estropea la instalación de Asterisk. Al reiniciar el Asterisk después de instalar el FreePBX, el Asterisk se cierra sin ningún mensaje.
cp /etc/asterisk/modules.conf ~/asterisk-modules.conf
Comenzar la instalación de freepbx:
./install_amp
Pongo la lista de preguntas para contestar, lo demás puede quedar con sus valores por defecto
AMPWEBROOT=/var/www/freepbx
OJO: Si ponemos FreePBX en un subdirectorio, el panel puede no funcionar correctamente en las páginas administrativas. Subí el error en FreePBX y lo corrigieron, pero no me acuerdo en qué versión.
Hay dos formas de hacerlo andar
1. Arreglar el error
Tocar el archivo /var/www/freepbx/admin/views/panel.php
// where it reads // '<iframe width="97%" height="600" frameborder="0" align="top" src="../../panel/index_amp.php?context='.$deptname.'"></iframe>'. // you should erase one step back in the uri, as it shows here '<iframe width="97%" height="600" frameborder="0" align="top" src="../panel/index_amp.php?context='.$deptname.'"></iframe>'.
Vamos al paso 3.
2. Crear un servidor virtual y acceder a la instalación desde otra dirección http://freepbx
Si tienes acceso al dns, o al archivo hosts de tu computadora puedes agregar una entrada para identificar a tu servidor en el Apache. Editar el archivo /etc/apache2/sites-available/freepbx y poner esto.
################# Named VirtualHosts <VirtualHost *:80> ServerName freepbx ServerAlias freepbx ServerAdmin yourname@yourdomain.com ErrorLog /var/log/apache2/freepbx.error.log CustomLog /var/log/apache2/freepbx.access.log combined DocumentRoot /var/www/freepbx <Directory /var/www/freepbx> Options Indexes FollowSymLinks MultiViews Order allow,deny AllowOverride All Allow from all </Directory> <Directory /var/www/freepbx/admin> AuthType Basic AuthName "Restricted Area" AuthUserFile freepbx-passwd Require user admin </Directory> </VirtualHost> ##################################################################
Hacemos un vínculo simbólico (bah, un symlink) para que esté disponible
ln -s /etc/apache2/sites-available/freepbx /etc/apache2/sites-enabled/099-freepbx
y agregamos un archivo de accesos si lo deseamos
htpasswd -c /etc/apache2/freepbx-passwd admin
3. Reiniciamos el Apache
/etc/init.d/apache2 restart
Ahora recuperamos la copia de seguridad que hicimos de modules.conf
cp ~/asterisk-modules.conf /etc/asterisk/modules.conf
Si se nos ha olvidado hacer una copia de seguridad, podemos acudir a /var/cache/apt y buscamos por ahí el archivo que viene en el paquete. O también podemos deshabilitar las librerías que impiden que el asterisk funcione. Para deshabilitar una librería podemos agregar estas líneas en /etc/asterisk/modules.conf antes de la directiva global.
noload =>app_directory.so noload =>res_adsi.so
La directiva autoload cargará automáticamente cualquier cosa que esté en el directorio de las librerías (/usr/lib/asterisk/modules) descontando las que figuren expresamente para no ser cargadas. En Ubuntu Hardy Heron, también debemos deshabilitar
noload => app_voicemail_imap.so noload => app_voicemail_odbc.so
De http://www.voip-info.org/wiki/view/Asterisk+modules
app_directory.so => (Extension Directory)<BR> res_adsi.so: Resource for ADSI applications. See http://www.voip-info.org/wiki/view/ADSI
Si mantuvimos al Apache corriendo como www-data agregamos estas líneas al final de /etc/amportal.conf
AMPASTERISKUSER=www-data AMPASTERISKWEBUSER=www-data AMPASTERISKGROUP=asterisk
Para iniciar todo esto al final de todo, agregamos estas líneas en /etc/rc.local antes del exit 0.
/usr/local/sbin/amportal start exit 0
Opcional: Asterisk se inicia por su cuenta después de la instalación por paquetes. Si deseas correr el Asterisk bajo safe_asterisk y administrado por amportal, deshabilita el asterisk de esta manera
update-rc.d -f asterisk remove
Un detalle más que importante: el Asterisk desde el Amportal se inicia en modo seguro, con el comando safe_asterisk que reiniciará la central si el programa asterisk se muere. Además, configura los permisos para que la interfaz web puede reiniciar el servicio, recargar el servidor del FOP o Flash Operator Panel y grabar los sonidos correspondientes a las IVR’s con los permisos adecuados. Desgraciadamente, el modo safe también hace que un programa se conecte y se desconecte permanentemente, lo que es muy malo para debuguear al servidor.
Agregamos un symlink y cambiamos los permisos para hacer que las grabaciones del sistema estén disponibles para los IVRs, o preatendedores y menúes.
ln -s /var/lib/asterisk/sounds/custom /usr/local/share/asterisk/sounds/ chown -R asterisk:asterisk /usr/local/share/asterisk/ chmod -R 755 /usr/local/share/asterisk/
/usr/share/asterisk y subdirectorios deben pertenecer por el usuario y el grupo asterisk o aparecen errores en el FreePBX acerca de permisos en el abi-bin. Podemos verificar los permisos
$ ls -l /usr/share | grep asterisk drwxr-xr-x 8 asterisk asterisk 4096 2009-02-11 22:59 asterisk
Si no aparece como arriba, se arreglan así
$ sudo chown -R asterisk:asterisk /usr/share/asterisk
Si usas Ubuntu 9.04 (Jaunty Jackalope) o Karmic Koala necesitarás agregar las siguientes líneas en /etc/apache2/httpd.conf:
DocumentRoot /var/www
y reiniciar apache
apache2ctl restart
Podemos encontrar la interfaz del servidor en http://ip-del-servidor/freepbx.
Para la versión 1.6 de Asterisk hay que revisar el archivo /etc/asterisk/manager.conf o crear un archivo en /etc/asterisk/manager.d/admin.conf y revisar que los permisos de escritura y lectura están completos para el usuario admin
read = system,call,log,verbose,command,agent,user,config,originate,read,write write = system,call,log,verbose,command,agent,user,config,originate,read,write
Las versiones en inglés las publiqué en Ubuntu y en FreePBX
https://wiki.edubuntu.org/installingFreepbx
http://www.freepbx.org/trac/wiki/UbuntuServerIntrepid
También lo puse en los foros
http://ubuntu-ky.ubuntuforums.org/showthread.php?p=8298193
Steliosv Me tiró la pista para que funcione en el 1.6, copio el mensaje que me mandó.
Since i was greatly helped by this post i thought i’d add that if you upgrade to asterisk 1.6 you need to create a new anything.conf file in order for freepbx (2.5.x) to work. i created the file /etc/asterisk/manager.d/admin.conf with the contents
[admin]
secret = password
read = system,call,log,verbose,command,agent,user,config, originate,read,write
write = system,call,log,verbose,command,agent,user,config, originate,read,write
for googling reference this fixes the error in
/var/log/asterisk/messages
manager.c: 127.0.0.1 tried to authenticate with nonexistent user ‘admin’
and
manager.c: 127.0.0.1 failed to authenticate as ‘admin’
and then this following link helped me figure the problem out.
Bravo!!!!thx a lot 4 this post, i needed to start Asterisk 1.8 aultamticaoly on my Ubuntu Server and had no idea as how to do it. Your post did the Trick!!!(i still don’t understand starting scripts on linux though, but that’s another issue).Gracias mil.