|
Instalació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.cfgEs 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.
|