Instalación de GlassFish en openSUSE

En este artículo veremos todos los pasos necesarios para instalar de forma básica el servidor de aplicaciones GlassFish en la distribución Linux openSUSE.

La guía abarca la instalación de las dependencias, los pasos para instalar el servidor de aplicaciones y para los casos en que aún sea necesario, la preparación de un script de arranque que permita el inicio automático del servicio durante el arranque del sistema operativo.

Antes de comenzar con los pasos de instalación, las versiones del sistema operativo y del software que han sido utilizados en esta guía van a continuación:
  • openSUSE 12.1 i586
  • Java SE Runtime Environment 6 Update 35 (JRE)
  • Java SE Development Kit 6 Update 35 (JDK)
  • GlassFish Server Open Source Edition - 3.1.2.2


Instalación de dependencias

  1. Comenzamos por descargar el entorno de ejecución estándar y el kit de desarrollo de la especificación 6 de Java:
    OBS: Para openSUSE suelo descargar las versiones del instalador con la descripción "rpm.bin".
  2. Luego procedemos a instalar desde la consola los paquetes descargados en el paso anterior de la siguiente forma:
    testsrv:~ # sh jre-6u35-linux-i586-rpm.bin
    testsrv:~ # sh jdk-6u35-linux-i586-rpm.bin
    
  3. Como el JRE y el JDK se instalaron mediante paquetes no preconfigurados para openSUSE, debemos agregar las nuevas versiones al asistente alternatives.

    Alternatives nos ayuda a gestionar las prioridades de las distintas ramas y versiones de ciertas aplicaciones como Java (que mantiene varias al mismo tiempo), y definir la versión por defecto a ser utilizada en todo el sistema operativo. Las versiones definidas por defecto se pueden consultar en el directorio /etc/alternatives, en el que se encuentran enlaces simbólicos cuyas rutas apuntan a la versión del software predefinido.

    Ahora bien, para añadir la nueva versión de java y javaplugin (utilizado por los navegadores web) a la lista de alternativas utilizamos el comando update-alternatives como se puede observar a continuación:
    testsrv:~ # update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk1.6.0_35/bin/java" 100
    testsrv:~ # update-alternatives --install "/usr/lib/browser-plugins/javaplugin.so" "javaplugin" "/usr/java/jdk1.6.0_35/jre/lib/i386/libnpjp2.so" 100
    
  4. Luego procedemos a configurar la versión de Java a ser utilizada por defecto en el sistema operativo:
    testsrv:~ # update-alternatives --config java
    There are 3 choices for the alternative java (providing /usr/bin/java).
    
    Selection Path                                   Priority Status
    ------------------------------------------------------------
    * 0       /usr/lib/jvm/jre-1.6.0-openjdk/bin/java  17105  auto mode
      1       /usr/java/jdk1.6.0_35/bin/java           100    manual mode
    2       /usr/lib/jvm/jre-1.5.0-gcj/bin/java      1500   manual mode
    3       /usr/lib/jvm/jre-1.6.0-openjdk/bin/java  17105  manual mode
    
    Press enter to keep the current choice[*], or type selection number: 1
    update-alternatives: using /usr/java/jdk1.6.0_35/bin/java to provide 
    /usr/bin/java (java) in manual mode.
    testsrv:~ #
    
    De entre la lista de versiones y especificaciones distintas disponibles de Java, seleccionamos la opción que corresponde, que en el ejemplo superior fue la opción 1 resaltada en verde.

    Lo mismo podemos hacer para configurar la versión por defecto de Java plugin si es que hubiere más de una alternativa.
    testsrv:~ # update-alternatives --config javaplugin
    
  5. Por último verificamos que al ejecutar el comando java la versión y especificación utilizada sea la que nosotros deseamos:
    testsrv:~ # java -version
    java version "1.6.0_35"
    Java(TM) SE Runtime Environment (build 1.6.0_35-b10)
    Java HotSpot(TM) Client VM (build 20.10-b01, mixed mode, sharing)
    testsrv:~ # javac -version
    javac 1.6.0_35
    testsrv:~ #
    


Instalación de GlassFish

  1. Nos posicionamos en el directorio /opt y en él descargamos el instalador open source multi lenguaje de GlassFish para sistemas operativos Unix-Like desde el sitio web de la comunidad:
    testsrv:~ # cd /opt
    testsrv:/opt # wget http://download.java.net/glassfish/3.1.2.2/release/glassfish-3.1.2.2-unix-ml.sh
    
  2. Con el usuario root ejecutamos el script instalador glassfish-3.1.2.2-unix-ml.sh para dar inicio al proceso de instalación:
    testsrv:/opt # sh glassfish-3.1.2.2-unix-ml.sh
    
  3. Pasamos de las ventanas de bienvenida y en la ventana Tipo de Instalación seleccionamos la opción Instalación Típica:



  4. En la siguiente ventana definimos el directorio de instalación, que en este caso será /opt/glassfish3:


  5. La ventana Herramienta de Actualización del asistente nos permite activar y configurar el módulo de actualizaciones del servidor de aplicaciones, que en este ejemplo se ha deshabilitado.


  6. La primera ventana que sigue a continuación informa al usuario acerca de lo que instalará el asistente, paso previo antes de comenzar con el proceso de instalación que puede observarse en la segunda captura.



  7. Luego de haber culminado el proceso de instalación el asistente nos solicitará definir ciertas configuraciones relacionadas al dominio, necesarias para el correcto funcionamiento del servidor de aplicaciones.


    Estas configuraciones son el Nombre del Dominio y el Puerto HTTP en que serán atendidas las peticiones por el servidor. También tenemos que configurar el puerto de la consola de administración, el nombre de usuario administrador y su respectiva contraseña. Por último se configuran las opciones que permiten crear o no un script de arranque automático del dominio para el sistema operativo, su nombre y si deseamos que el mismo ya sea iniciado en el siguiente paso.
    ATENCIÓN: Si se le presenta un error similar a "puerto de administracion: no se ha encontrado el nombre del host", es probable que en el archivo /etc/hosts necesite agregar el nombre de dominio totalmente cualificado (Fully Qualified Domain Name - FQDN) y nombre del host, que en este caso testsrv.net.local y testsrv respectivamente a la ip loopback 127.0.0.1.

    El archivo /etc/hosts debería quedar como sigue:
    127.0.0.1 localhost testsrv.net.local testsrv
    Una vez culminado con las configuraciones presionamos el botón Siguiente para que el asistente proceda con la configuración de GlassFish.

  8. En las dos ventanas finales, el asistente de instalación informará acerca del resultado de la instalación y configuración del servidor de aplicaciones.



  9. Si hemos activado la opción para crear un script de arranque en el asistente de instalación de GlassFish, éste lo habrá creado automáticamente en el directorio /etc/init.d para el dominio definido. Lo podemos comprobar de la siguiente manera:
    testsrv:~ # systemctl is-enabled GlassFish_domain1.service
    
    Si el servicio aún no se encuentra en ejecución, podemos iniciarlo con el siguiente comando:
    testsrv:~ # systemctl start GlassFish_domain1.service
    
  10. A continuación podemos probar el funcionamiento del servidor de aplicaciones accediendo a la siguiente URL:
    URL: http://localhost:8080
    
    Debería aparecer algo similar a lo que sigue:


  11. Para acceder por primera vez a la consola de administración del servidor de aplicaciones GlassFish ponemos la siguiente URL en nuestro navegador web favorito:
    URL: http://localhost:4848
    
    Solamente resta colocar nuestro usuario y contraseña definidos anteriormente en la ventana de conexión y listo, eso ha sido todo. A continuación van unas capturas de pantalla de la consola de administración:



  12. Finalmente abrimos los puertos en el firewall para permitir el acceso remoto al servicio web y a la consola de administración. Para ello editamos el archivo SuSEfirewall2 del directorio /etc/sysconfig,
    testsrv:~ # vi +253 /etc/sysconfig/SuSEfirewall2
    
    buscamos la directiva FW_SERVICES_EXT_TCP y le agregamos los dos puertos separados por un espacio.
    FW_SERVICES_EXT_TCP="4848 8080"
    
    Por último guardamos los cambios y reiniciamos el servicio del cortafuegos:
    testsrv:~ # rcSuSEfirewall2 restart
    


Script de arranque

En versiones anteriores de GlassFish (por ejemplo la v3.0.1) el asistente de instalación aún no traía la funcionalidad de crear y registrar automáticamente un script de arranque para el sistema operativo. En "aquella época" no muy lejana había preparado un script de arranque de GlassFish para openSUSE que espero siga siendo de utilidad para algunos.
OBS: Aunque debería funcionar por compatibilidad, este script de arranque probablemente no sea del todo adecuado para su implementación con systemctl, gestor de servicios presente en las versiones más recientes de openSUSE.
Para implementarlo hay que seguir los siguientes pasos:
  1. Como primer paso creamos en el directorio /etc/init.d el nombre del script de arranque glassfish y le asignamos los permisos de ejecución correspondientes:
    testsrv:~ # touch /etc/init.d/glassfish
    testsrv:~ # chmod 755 /etc/init.d/glassfish
    
  2. Luego abrimos el archivo con nuestra herramienta de edición preferida..
    testsrv:~ # vi /etc/init.d/glassfish
    
    Y le agregamos el siguiente script:
    #!/bin/sh
    # Author: www.tormentadebits.com
    #
    # /etc/init.d/glassfish
    #
    ### BEGIN INIT INFO
    # Provides: glassfish
    # Required-Start: $network
    # Required-Stop: $network
    # Default-Start: 3 5
    # Default-Stop: 0 1 2 6
    # Short-Description: Glassfish
    # Description: Glassfish
    ### END INIT INFO
    export AS_JAVA=/usr/java/latest
    GLASSFISHPATH=/opt/glassfish3
    
    . /etc/rc.status
    
    # The echo return value for success (defined in /etc/rc.config).
    case "$1" in
    start )
        echo "Starting service Glassfish!"
        ##
        ## Start daemon with startproc(8). If this fails
        ## the echo return value is set appropriate.
        $GLASSFISHPATH/bin/asadmin start-domain
    ;;
    
    stop )
        echo "Shutting down service Glassfish!"
        ## Stop daemon with killproc(8) and if this fails
        ## set echo the echo return value.
        $GLASSFISHPATH/bin/asadmin stop-domain
    ;;
    
    restart )
        $0 stop
        $0 start
    ;;
    
    status )
        echo -n "Checking for service Glassfish: "
        ## Check status with checkproc(8), if process is running
        ## checkproc will return with exit status 0.
        $GLASSFISHPATH/bin/asadmin list-applications
        echo
        $GLASSFISHPATH/bin/asadmin list-http-listeners
    ;;
    
    * )
        echo "Usage: $0 {start|stop|restart}"
        exit 1
    ;;
    esac
    rc_exit
    
    OBS: Script disponible en Github Gist aquí!

    Hay que prestar atención en la configuración de las líneas 15 y 16 resaltadas en amarillo, donde las rutas especificadas deben estar correctamente definidas.

  3. Salimos de la edición del archivo y procedemos a activar el arranque automático del servicio glassfish:
    testsrv:~ # chkconfig --add glassfish
    
  4. Y finalmente probamos el inicio, reinicio y parada del servidor de aplicaciones Glassfish con el comando service:
    testsrv:~ # service glassfish start
    testsrv:~ # service glassfish restart
    testsrv:~ # service glassfish stop
    
    O bien con el comando systemctl para evitar los mensajes de advertencia:
    testsrv:~ # systemctl glassfish.service start
    testsrv:~ # systemctl glassfish.service restart
    testsrv:~ # systemctl glassfish.service stop
    


Enlaces externos

Comentarios

  1. Respuestas
    1. Hola Walter, la verdad que hace mucho que no uso Glassfish, pero según la guía de instalación oficial https://glassfish.java.net/docs/4.0/installation-guide.pdf hay un script que te lo permite desinstalar.

      Con borrar (o renombrar) el directorio de instalación y el script de arranque creo que también debería funcionar, pero NO te lo recomiendo probar en un entorno de producción JAMÁS!!!!!

      Saludos.

      Eliminar

Publicar un comentario

Entradas populares