Home
Web agali.org
Inicio de sesión de usuario

En línea
En este momento hay 0 usuarios y 51 invitados en línea.

Tira ECOL


Apache y mod_mono en Debian

Apache y mod_mono en Debian
Submitted by Mogurito on Sábado, 29 Enero, 2005 - 21:29 Documentos

Como algunos ya sabreis estoy haciendo un proyecto en C#, ASP.NET sobre XSP. En un principio estuve haciendo las pruebas sobre el servidor mono-xsp, el cual podeis conseguir con: apt-get install mono-xsp y ejecutar sobre el directorio de la aplicación que querais lanzar con "xsp --root $PWD". Esto os permitiria conectar con vuestra aplicación ASP por el puerto 8080. Pues bien, para no tener que estar andando cada rato con ese servidor, me puse a preparar un servidor Apache con el módulo mod_mono, y así tener un servidor más seriote para el proyecto. Vamos a usar un servidor Apache 1.3, en vez de utilizar la versión 2. En otro momento escribiré un articulo para la versión 2.

Como este mini-Howto está dedicado a Debianeros (lo siento por los demás), comentaré los pasos sencillos pero que me trajeron por el camino de la amargura averiguarlos. Cabe decir que yo tiré de repositorio inestable, por lo que no puedo asegurar con certeza que tengais la misma suerte con otro repositorio, pero seguro que os servirá de guia.

En primer lugar instalé lo siguiente:

$ apt-get install apache mono-apache-server

Esto nos instala todo lo necesario para tener el servidor en marcha. Una vez terminado editamos el archivo de configuración de apache y añadimos lo siguiente:

-----------------8<-------/etc/apache/httpd.conf------------8<------------
Include /etc/mono-server/mono-server-hosts.conf
MonoApplications "/arena"
Alias /arena "/home/mogurito/Desarrollo/Arena/"
<Directory /home/mogurito/Desarrollo/Arena/>
        SetHandler mono
</Directory>
-----------------8<------------------------------------------8<-----------

En este caso en particular, mi aplicación "arena" la indico en MonoApplications para que me cree el directorio virtual. Aquí puedo añadir cuantas aplicaciones quiera (Ej "/arena;/app1;/app2"). Luego creo un Alias del directorio virtual "/arena" al directorio donde tengo la aplicación, o sea "/home/mogurito/Desarrollo/Arena". Por último, al usar la versión 1.3 de Apache hemos de usar un manejador para ese directorio, así que para ello se lo indicamos con "SetHandler mono".

El funcionamiento es el siguiente: El servidor apache busca un socket creado por el servidor XSP que hemos de ejecutar antes de lanzar apache, normalmente en "/tmp/mod_mono_server" y usa este servidor para tratar las páginas aspx. Pues bien, el primer problema que me encontré fue que la configuración en el el archivo "/etc/mono-server/mono-server-hosts.conf" tenía la siguiente linea "MonoUnixSocket /tmp/.mod_mono_server" o sea que buscaría en /tmp el archivo oculto correspondiente al socket, cosa que me llevo casi al camino de la depresión x). Al ejecutar el servidor XSP con "mod-mono-server", me crea el Socket en /tmp/mod_mono_server, cosa que se puede alterar con el parámetro "--filename socket". Pero para no liar las cosas por un lado, mejor editamos el archivo "/etc/mono-server/mono-server-hosts.conf" y en el parámetro MonoUnixSocket quitamos el punto que hace oculto el archivo para que quede "/tmp/mod_mono_server".

Pues bien, con ésto ya conectamos perfectamente nuestro servidor Apache con el servidor XSP. Pero ésto no es todo, no vale con lanzar el servidor con "mod-mono-server" por que hacerlo de ésta forma no carga las páginas y nos devuelve un error 404. Este fue el segundo gran problema que no encontre respuesta en ningún foro, lista, ni documentación. Hasta que me di cuenta de un parámetro del servidor XSP, que es "--application". Con ésta parámetro lanzamos el servidor XSP para cada una de las aplicaciones que tengamos configuradas en el "httpd.conf" de Apache.

Sabiendo todo esto, la secuencia para lanzar nuestro servidor es la siguiente:

$ mod-mono-server --applications /arena:/home/mogurito/Desarrollo/Arena --nonstop
$ chmod 777 /tmp/mod_mono_server
$ /etc/init.d/apache restart

Tambien se podría mete apache en un grupo aspnet, y lanzar mod_mono_server con acceso para ese grupo y así no tener que cambiar los permisos. Aunque éso lo dejo para vosotros.

Espero que os sea de utilidad y se aceptan sugerencias.

Un saludo.


[ Inicie sesión o regístrese para enviar comentarios | 7819 lecturas ]

Opciones de visualización de comentarios
Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Asunto: 
Script para lanzar mod_mono
Imagen de Mogurito
Autor: 
Mogurito
Fecha: 
30 Enero, 2005 - 18:11

Aquí os adjunto un sencillo script que podeis poner en vuestro directorio /etc/init.d/ para lanzar, parar o reiniciar modmono de una manera sencilla. Se aceptan sugerencias y mejoras, como no... Espero que os sea de utilidad.

#!/bin/sh
#
# Gestiona el servidor XSP para usar aplicaciones Asp.net
# desde apache
#
# Creado por: Ezequiel Foncubierta Estévez (efoncu@agali.org)
# www.agali.org - http://mogurito.agali.org
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
APPDIR=/home/mogurito/Desarrollo/Arena
VDIR=/arena
case "$1" in
    start)
echo -n "Starting mod_mono ... "
mod-mono-server --root $APPDIR --applications $VDIR:$APPDIR \ --nonstop & >/dev/null 2>&1
sleep 3
chmod 777 /tmp/mod_mono_server
echo -e "Done"
;;
    stop)
echo -n "Stopping mod_mono ... "
for VAR in `ps aux | grep mod-mono-server | tr -s " " "\t " | cut -f2`
do
kill -9 $VAR
break
done
sleep 3
[ -e /tmp/mod_mono_server ] && rm -f /tmp/mod_mono_server
echo -e "Done"
;;
    restart)
echo -n "Stopping mod_mono ... "
for VAR in `ps aux | grep mod-mono-server | tr -s " " "\t " | cut -f2`
do
kill -9 $VAR
break
done
sleep 3
[ -e /tmp/mod_mono_server ] && rm -f /tmp/mod_mono_server
echo -e "Done"
echo -n "Starting mod_mono ... "
mod-mono-server --root $APPDIR --applications $VDIR:$APPDIR \ --nonstop & > /dev/null 2>&1
sleep 3
chmod 777 /tmp/mod_mono_server
echo -e "Done"
;;
    *)
echo -e "Usage: /etc/init.d/modmono {start|stop|restart}"
exit 1
;;
esac
exit 0

No sale la maldita indentación, ya buscaré una forma de presentarlo mejor... pero ahí teneis.

--
Lo que sabemos es una gota de agua, lo que ignoramos es el oceano. (Isaac Newton)


[ Inicie sesión o regístrese para enviar comentarios ]

Asunto: 
Aun no me funciona
Autor: 
Contribuyente anónimo
Fecha: 
11 Enero, 2006 - 14:07

Hola, estoy montando un server para una empresa que contiene algunos sitios en asp. El server me funciona de maravillas, hasta que agrego las directivas de mono, entoces se me muere el apache.

Creo que la estoy errando en la declaracion de cada hostvirtual.
Por ejemplo, yo tengo un directorio en /var/asp los host que contienen páginas asp.
Cómo declaro en estos hosts que vaya a buscar las páginas asp a este path?

Si me pueden ayudar, les estaré inmensamente agradecida, ya que me está volviendo loca.

Muchas gracias

Natalia


[ Inicie sesión o regístrese para enviar comentarios ]

Sponsors


Camisetas
Camisetas

Comentarios recientes


¡STOP a las Patentes de Software! Esta página usa software libre: Apache | MySql | Php | Drupal
Diseño y mantenimiento: Mogurito