Instalando Asterisk y FreePBX en Intrepid Ibex

Actualización:

Puse una guia completa de cómo se instala por aquí: [permalink href=357]

Este post la escribí cuando estaba haciendo esa guía y nunca lo terminé. Para mi sorpresa es una de las páginas más visitadas (gracias Google Analytics!) y por eso ahora me puse a completar la guía y la publiqué. Además, la traduje al español que siempre es muy útil.

———————————————–

Lo que estoy haciendo es seguir la guía que encontré para Feisty Faun en el sitio de FreePBX. Instalé un Ubuntu directamente desde el cdrom, le marqué que quería instalar un servidor LAMP y SSH. Detesto el CentOS y mi sueño es poder instalar un asterisk sin tener que instalar TODO el sistema operativo, cómo he venido haciendo hasta ahora.

Instalé el mc y el joe, como primera medida y le cambié el password a root. Lo siento mucho usuarios de debian, pero me crié así.

Modifiqué el comando que proponen, así que puse

apt-get install asterisk asterisk-mysql php-db php5-gd php-pear sox curl asterisk-mp3

No necesité instalar los paquetes

mysql-server php5-mysql libapache2-mod-php5

Todo bien ahora. En la instalación el paquete libsensors3 me tiró errores

Configurando libsensors3 (1:2.10.7-1) ...
udev active, devices will be created in /dev/.static/dev/
rm: cannot remove `i2c-0-': Read-only file system
mknod: `i2c-0-': Read-only file system
makedev i2c-0 c 89 0 root root 0600: failed
rm: cannot remove `i2c-0-': Read-only file system
rm: cannot remove `i2c-1-': Read-only file system
mknod: `i2c-1-': Read-only file system
makedev i2c-1 c 89 1 root root 0600: failed
rm: cannot remove `i2c-1-': Read-only file system
rm: cannot remove `i2c-2-': Read-only file system
mknod: `i2c-2-': Read-only file system
makedev i2c-2 c 89 2 root root 0600: failed
rm: cannot remove `i2c-2-': Read-only file system
rm: cannot remove `i2c-3-': Read-only file system
mknod: `i2c-3-': Read-only file system
makedev i2c-3 c 89 3 root root 0600: failed
rm: cannot remove `i2c-3-': Read-only file system
rm: cannot remove `i2c-4-': Read-only file system
mknod: `i2c-4-': Read-only file system
makedev i2c-4 c 89 4 root root 0600: failed
rm: cannot remove `i2c-4-': Read-only file system
rm: cannot remove `i2c-5-': Read-only file system
mknod: `i2c-5-': Read-only file system
makedev i2c-5 c 89 5 root root 0600: failed
rm: cannot remove `i2c-5-': Read-only file system
rm: cannot remove `i2c-6-': Read-only file system
mknod: `i2c-6-': Read-only file system
makedev i2c-6 c 89 6 root root 0600: failed
rm: cannot remove `i2c-6-': Read-only file system
rm: cannot remove `i2c-7-': Read-only file system
mknod: `i2c-7-': Read-only file system
makedev i2c-7 c 89 7 root root 0600: failed
rm: cannot remove `i2c-7-': Read-only file system

El servidor Asterisk dice que levantó. Me pongo a buscar qué son estos errores. No estoy muy preocupado porque no sé para qué son estos sensores. Veo bugs cargados con este problema, pero nadie le da una severidad muy alta que digamos. Alguien cree que debe reasignarlo al kernel y no a los sensores. La reasignación salió en el el kernel 2.6.26 y ya estamos en el el kernel 2.6.27.9 así que creo que todavía se tienen que poner de acuerdo.

Ahora, a bajar el FreePBX!!!. Listo, ya estamos en eso. Estoy bajando el archivo http://mirror.freepbx.org/freepbx-2.5.1.tar.gz y espero que termine.

Cuando ejecuto la orden

a2enmod php5

me dice que el módulo PHP5 ya está habilitado. Ok. seguimos.

Ejecuto el install_amp y me da un error al querer conectar con la base de datos. Tendría que crear el usuario y el password en la base… en el howto no hay nada! Me dió un error con algo de selinux, me dice que no lo encontró, revisemos qué es eso. Lo veo como paquete pero nunca lo usé, valdrá la pena instalarlo?

Ok, sigo con la base de datos

mysql -p

create user asteriskuser@localhost identified by ‘amp110’;
create database asterisk;
grant all on asterisk.* to ‘asteriskuser’;

quit;

Tengo un problema con el password, creo que puse mal, tuve que entrar al mysql de nuevo y poner esto:

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set password=PASSWORD(‘amp110’) where User=’asteriskuser’@’localhost;
Query OK, 0 rows affected (0.01 sec)
Rows matched: 1  Changed: 0  Warnings: 0

En realidad, el problema que tenía es que no había agregado el @localhost y ya está corregido. Ok, sigamos. El tutorial no dice que en realidad tengo que ejecutar a mano los scripts de creación de tablas que están en el directorio.

Ahora instalé el freepbx y todo anduvo bien por un rato. Tengo este error en la freepbx

Retrieve conf failed to copy file(s) from a module’s agi-bin dir:
copy(/usr/share/asterisk/agi-bin/list-item-remove.php): failed to open stream: Permission denied
copy(/usr/share/asterisk/agi-bin/dialparties.agi): failed to open stream: Permission denied
copy(/usr/share/asterisk/agi-bin/enumlookup.agi): failed to open stream: Permission denied
copy(/usr/share/asterisk/agi-bin/user_login_out.agi): failed to open stream: Permission denied
copy(/usr/share/asterisk/agi-bin/directory): failed to open stream: Permission denied
copy(/usr/share/asterisk/agi-bin/fixlocalprefix): failed to open stream: Permission denied
copy(/usr/share/asterisk/agi-bin/checksound.agi): failed to open stream: Permission denied
copy(/usr/share/asterisk/agi-bin/recordingcheck): failed to open stream: Permission denied

Added ago
(retrieve_conf.CPAGIBIN)

y este artículo http://www.freepbx.org/trac/ticket/2369 apunta al problema.

In freepbx_engine you do a lot of chowns and chmods. On ASTAGIDIR you do special treatments. Every thing works fine if you install ASTAGIDIR to /var/lib/asterisk/agi-bin/. The chown chown -R asterisk:asterisk $ASTVARLIBDIR makes it woking. But if you install agi-bin to a other directory there ist no chown for it. Fruther install-steps are not working well and you get following errors on the GUI.

Ok. Ahora Asterisk no arranca. Quiero empezar todo de nuevo así que reviento la virtual y empiezo de nuevo.

Volver a empezar

Esta vez voy a mezclar dos guías, la que mencioné antes con otra que propone instalar el asterisk compilando. Me gusta usar los paquetes porque son más fáciles de actualizar y la versión que tiene el Intrepid es absolutamente razonable.

Re-instalé la virtual y esta vez me acordé de hacer un Snapshot. Además copié la virtual que quiero usar como plantilla para futuras instalaciones. Listo. Arranquemos.

Puse el comando

apt-get install asterisk asterisk-mysql php5-mysql php-db mysql-server libapache2-mod-php5 php5-gd php-pear sox curl

para instalar. Si se fijan, no estoy usando el paquete de zaptel, pero es posible que lo incluya al final. Instalé el mc, no puedo vivir sin él. Ok, sigo.

Algunos arreglos en el php.ini antes de seguir

For the localization to work properly you may have to edit /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";
; 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)

Ahora en el archivo /etc/apache2/envvars reemplazo el usuario www-data por el usuario asterisk. Eso dice uno de los howtos y voy a tratar de seguirlo. Después veo si funciona, de volverlo atrás.

#export APACHE_RUN_USER=www-data
#export APACHE_RUN_GROUP=www-data
export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk
Listo. Reiniciamos el servicio de apache. Ok, otro cambio que no sé si sirve

You also want to change AllowOverride None to AllowOverride All

[root@dhcp1 ~]# nano +12 /etc/apache2/sites-enabled/000-default (Push Control-X to save when you’ve finished).

También estoy instalando el selinux.

apt-get install selinux.

También instalo otras cosas de asterisk que sé que voy a necesitar

aptitude install asterisk-prompt-es asterisk-sounds-extra libasterisk-agi-perl

el comando me sacó 54 paquetes… por qué?

Bajé el paquete de freepbx.

wget http://mirror.freepbx.org/freepbx-2.5.1.tar.gz

Listo. Ahora crear el usuario, el password y las tablas.

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

cambié permisos en /usr/share/lib/asterisk

chown asterisk.asterisk -R /usr/share/lib/asterisk

Ahora está andando con los siguientes módulos deshabilitados en /etc/asterisk/modules.conf

noload =>app_directory.so
noload =>res_adsi.so

En /usr/sbin/safe_asterisk cambié una variable BACKGROUND que estaba en 0 porque el amportal se quedaba colgado sin arrancar

Me voy a fijar ahora el FOP server porque desde el amportal no levanta.

Ok, en el usuario asterisk, no hay shell predeterminado, así que hay que ponerlo

usermod -s /bin/bash asterisk

Ahora, para que el amportal arranque en el inicio, lo ponemos en

/etc/rc.local y lo agregamos antes de la línea que dice exit 0

/usr/local/sbin/amportal start

One thought on “Instalando Asterisk y FreePBX en Intrepid Ibex

  1. Tristan

    Tanto tiempo,te encontre buscando cosas en la web sobre asterisk,por si no te acordas de mi .Soy Julián te vendi varios atas ,placas y telefonos IP en el 2008 y te los lleve a tu casa ,donde compartimos una hermosa charla de cocina y tareas hogareñas.
    Te cuento que hoy en día tengo mi propia empresa con dos socios mas .
    Te dejo mi pagina y un abrazo, hermoso tu bebé

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

ERROR: si-captcha.php plugin: GD image support not detected in PHP!

Contact your web host and ask them to enable GD image support for PHP.

ERROR: si-captcha.php plugin: imagepng function not detected in PHP!

Contact your web host and ask them to enable imagepng for PHP.