|
Intalación
de SER (Sip Express Router) con soporte de MYSQL
Ahora vamos a instalar SER (SIP express Router) con soporte
para MYSQL. Suponemos que tenemos instalado correctamente
MYSQL en la máquina. Además hemos seguido los
pasos de la instalación básica en Linux o FreeBSD
de los apartados anteriores y tenemos instalado SER en su
configuración básica.
Instalación:
1) Ejecutar script ser_mysql.sh
MUY IMPORTANTE: Necesitamos para ejecutar el script registrarnos
como root en el sistema. Pero no vale con hacer un simple
"sudo". Es indispensable logearse como root. En
caso contrario nos dará un error de tipo "/usr/local/sbin/ser_mysql.sh
: line 160: gen_ha1 command not found HA1 calculation failed."
# /usr/local/sbin/ser_mysql.sh create
A continuación nos pide:
MySQL Password for root: password de root para MySQL
Domain for the defaul user 'admin' : localhost
(u otros si hemos especificado otro)
Enter password: lo dejamos vacio y pulsamos
Enter. Cogera el password por defecto
2 ) Modificar fichero ser.cfg
Hasta ahora no habiamos hablado del fichero ser.cfg
Es el fichero de configuración básico
del servidor SER y del que iremos hablando en los próximos
apartados.
Este fichero está situado en /usr/local/etc/ser/
Para poder utilizar mysql debemos modificar el fichero ser.cfg
de la siguiente manera: Hay que descomentar varias líneas.
Marcamos en negrita las líneas afectadas:
#
# $Id: ser.cfg,v 1.25.2.1 2005/02/18 14:30:44 andrei Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd)
#fork=yes
#log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
fork=no
log_stderror=yes
*/
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
#port=5060
#children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode",
0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
modparam("usrloc", "db_mode",
2)
# -- auth params --
# Uncomment if you are using auth module
#
modparam("auth_db", "calculate_ha1",
yes)
#
# If you set "calculate_ha1" parameter to yes (which
true in this config),
# uncomment also the following parameter)
#
modparam("auth_db", "password_column",
"password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# SQL settings
#El nombre de la base de datos es "ser"
por defecto. dbhost puede ser "localhost"
modparam("usrloc", "db_url","mysql://mysqluser:mysqlpassword@dbhost/dbname")
modparam("auth_db", "db_url","mysql://mysqluser:mysqlpassword@dbhost/dbname")
route{
# initial sanity checks messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
break;
};
if ( msg:len > max_len ) {
sl_send_reply("513", "Message too big");
break;
};
# we record-route all messages — to make sure that
# subsequent messages will go through our proxy; that's
# particularly good if upstream and downstream entities
# use different transport protocol
record_route();
# loose-route processing
if (loose_route()) {
t_relay();
break;
};
# if the request is for other domain use UsrLoc
# (in case, it does not work, use the following command
# with proper names and addresses in it)
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("localhost", "subscriber")) {
www_challenge("localhost", "0");
break;
};
save("location");
break;
};
lookup("aliases");
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
sl_reply_error();
};
}
3) Algunos comentarios sobre los cambios anteriores
- El puerto por defecto del servidor SER es el 5060
(mismo que el de Asterisk) Podemos modificarlo en la línea
#port=5061 ( y de esta manera escuchará en el puert
5061)
- las líneas añadidas
modparam("usrloc", "db_url","mysql://user:password@localhost/ser")
modparam("auth_db", "db_url","mysql://user:password@localhost/ser")
son para versiones superiores a la 0.9.3. En caso de versiones
inferiores quedarían:
modparam("usrloc", "db_url","sql://user:password@localhost/ser")
modparam("auth_db", "db_url","sql://user:password@localhost/ser")
4) Rearrancar el servidor SER
# /usr/local/sbin/serctl restart
Recordar volver a exportar la variable SIP_DOMAIN
si no lo habeís hecho antes o habéis apagado
la máquina
# export SIP_DOMAIN="localhost"
5) Configurar un softphone para comprobar
En este caso es necesario ya proporcionar un nombre de usuario
y una contraseña:
El nombre de usuario por defecto es "admin" y la
contraseña "heslo"
6) Añadir un nuevo usuario de prueba
# /usr/local/sbin/serctl add <name> <password>
<email>
Si os pide una contraseña para poder
añadir será "heslo" y si os sale un
error del tipo "/usr/local/sbin/ser_mysql.sh : line 160:
gen_ha1 command not found HA1 calculation failed." Será
indispensable logearse como root en el sistema linux (no vale
sudo)
Podéis comprobar si el nuevo usuario creado
puede registrarse en el servidor SER en vuestro softphone
7) Añadir una linea al fichero de mysql
Esto no es estrictamente necesario pero si recomendable.
Para que el servidor SER pueda manejar multiples conexiones
a la base de datos debemos añadir la siguiente línea
al archivo my.cnf de MySQL en el apartado [mysqld]
max_connections = 500
* En principio ya tenemos nuestro servidor SER (SIP Express
Router) instalado con MySQL. Esta parte era más díficil.
Si habéis tenido problemas podéis consultar
la forma de descubrirlos en solucion
de problemas ser. Pasemos a a aprender como descubrir
errores y poder monitorizar el servidor SER.
|