Glassfish en Ubuntu

Glassfish está incluido como paquete en los repositorios de Ubuntu 8.10, lo que facilita mucho las cosas a la hora de instalarlo, pero parece que alguien pensó que no era una buena idea incluir un script en /etc/init.d/ para que el servidor de aplicaciones se lance durante el arranque.
Esto puede servir para desarrolladores, pero aquellos que necesiten montar un servidor para desplegar sus aplicaciones tendrán que trabajar un poco más. En este post describo el procedimiento que seguí para aquellos que estén en esta situación, si alguien sabe como mejorar el procedimiento será un placer actualizarlo.

1. Instalación de los paquetes necesarios.

Esta es la parte sencilla, ya que APT hace todo por nosotros.

#apt-get install glassfishv2

Cuando finaliza el script tendremos instalado glassfish en /usr/share/glassfishv2 y nuestros dominios en /var/lib/glassfishv2/domains

2. Creando el usuario glassfish

Por motivos de seguridad, no parece buena idea lanzar nuestro servidor con permisos de superusuario en el inicio, por lo que antes de configurar el script de arranque creamos un usuario sin privilegios destinado al efecto.

#sudo adduser glassfish --ingroup admin

El nuevo usuario pertenece al grupo admin, por lo que asignamos a ese grupo la propiedad del directorio de glassfish

#sudo chgrp -R admin /usr/share/glassfishv2

Y asignamos la propiedad de la raíz de los dominios al usuario glassfish

#sudo chgrp -R admin  /var/lib/glassfishv2/domains/
#sudo chown -R glassfish /var/lib/glassfishv2/domains/

3. Creando un script para /etc/init.d

Una vez todo está preparado podemos proceder a escribir un script de control para glassfish, que en mi caso he llamado /etc/init.d/glassfish y es el siguiente:

#! /bin/sh

GLASSFISHPATH=/usr/share/glassfishv2/bin
GLASSFISHDOMAINHOME=/var/lib/glassfishv2/domains/domain1

 

case "$1" in
start)
echo "starting glassfish from $GLASSFISHPATH"
sudo -u glassfish $GLASSFISHPATH/asadmin start-domain --user admin --passwordfile ${GLASSFISHDOMAINHOME}/config/passwordfile domain1
;;
restart)
$0 stop
$0 start
;;
stop)
echo "stopping glassfish from $GLASSFISHPATH"
sudo -u glassfish $GLASSFISHPATH/asadmin stop-domain domain1
;;
*)
echo $"usage: $0 {start|stop|restart}"
exit 3
;;
esac

No olvidemos dar permisos de ejecución al script:

#sudo chmod a+x /etc/init.d/glassfish

Por defecto glassfish solicita un nombre de usuario y password durante el arranque que en el momento de la instalación es:

user: admin
password: adminadmin

Para que esta información se le pase al script automáticamente tendremos que crear si no existe el fichero  /var/lib/glassfishv2/domains/domain1/config/passwordfile  donde escribiremos la siguiente línea:

AS_ADMIN_PASSWORD=adminadmin

4. Retoques finales

Teniendo ya el script preparado sólo falta enlazarlo para que se llame durante el encendido y apagado del equipo, lo cual hacemos mediante el siguiente comando:

#sudo update-rc.d glassfish defaults 90 10

Con lo cual todo está listo para empezar a desplegar aplicaciones a falta de conectar con bases de datos y demás, pero eso ya es algo mejor documentado de lo que por ahora no voy a hablar.

Puedes probar que todo funciona correctamente ejecutando las siguientes órdenes y conectando a http://localhost:8080 para visualizar la página de bienvenida a glassfish.

#sudo service glassfish start
#sudo service glassfish restart
#sudo service glassfish stop

Referencias

Para realizar esta configuración tomé prestadas algunas ideas de un artículo del blog de Jasper Kalkers en inglés, os recomiendo una ojeada si no usais APT o para adaptar este método a otros sistemas operativos.

Anuncios

7 Respuestas a “Glassfish en Ubuntu

  1. Gracias javier, me sirvio de maravilla, estare checando tu blog se ve que esta bueno ! ! ! ! !

  2. oye javier tengo una pregunta siempre se tiene que crear el usuario de glassfish, no se puede que corra como root???

  3. Gracias a ti por visitarme 😉 El usuario glassfish no es imprescindible, pero correr el servidor como root puede ser un riesgo de seguridad. Si vas a ejecutarlo en un entorno controlado, puedes saltarte el paso de la creación del usuario. Si no utilizas el usuario glassfish tendrás que quitar la orden sudo -u glassfish del script de inicio. El script quedaría así:

    case “$1” in
    start)
    echo “starting glassfish from $GLASSFISHPATH”
    $GLASSFISHPATH/asadmin start-domain –user admin –passwordfile ${GLASSFISHDOMAINHOME}/config/passwordfile domain1
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    stop)
    echo “stopping glassfish from $GLASSFISHPATH”
    $GLASSFISHPATH/asadmin stop-domain domain1
    ;;
    *)
    echo $”usage: $0 {start|stop|restart}”
    exit 3
    ;;
    esac

  4. ¡Me funcionó de maravilla! Muchas gracias desde Argentina.
    Saludos. Eduardo.

  5. hola:
    me manda error http 500 cuando intento http://mi ip:4848

    exception
    java.servlet.ServletException

    root cause
    java.lang.NullPointerException

    a q se debe esto? q se puede modificar?

    no se que será ya que he eliminado y reinstalado de maneras distintas glassfish que después de algunos problemas(solo por ignorancia) pude solucionar. Ahora no se que es mas importante, ya que al ingresar con mi ip al puerto 8080 ingreso de inmediato a una pagina de Sun Java System que me dice ” Your Aplication Server is now Running ” y me da una explicacion de como cambiar la pagina modificando el archivo index.html, hasta aki todo bien, pero al ingresar con mi ip al puerto 4848 sale en la pantalla el error antes comentado sin cargar la pagina de administración de glassfish.

    el script funciona bien y se inicia al arrancar el sistema,lo que si tuve q eliminar fueron las lineas para pasar usuario y password ya q me generaban problemas.

    tomcat lo cambie de puerto, apache no lo tengo instalado, postgres instalado y solo me falta glassfish para dejar todo ok.

    así q sigo buscando info pero no encuentro nada ni a nadie con este mismo error en glassfish.

    gracias

    • Hola Juanxo, sin más información no puedo saber que es lo que está ocurriendo, pero si miras el log del servidor puede que encuentres alguna pista. No se si ese error se debe a que tienes algo mal configurado o a un error de tu aplicación que aún no has detectado.. Un NullPointerException puede ocurrir en cualquier parte que estés intentando acceder a una propiedad o método de un objeto nulo, y eso pueden ser millones de cosas. Suerte en la resolución de tu error y un saludo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s