INSTALACIÓN DE GLASSFISH EN UBUNTU 14.04
En esta oportunidad se van a desarrollar las siguientes actividades:
- descargar glassfish.
- instalar glassfish en ubuntu.
- habilitar el acceso al servidor glassfish de forma remota.
- crear un script para que suba automáticamente el servicio de glassfish cuando se inicie el sistema operativo.
se verifica si esta instalado el unzip
unzip
si no se encuentra instalado
sudo apt-get install unzip
se instala el openjdk-
sudo apt-get install openjdk-7-jdk
se descarga el glassfish
cd /tmp
wget http://enlace de descarga del glassfish en el sitio oicial
wget http://download.java.net/glassfish/4.1/release/glassfish-4.1-web.zip
se copia la descarga en el directorio opt asociado al software opcional
cd /opt
sudo unzip /tmp/glassfish-full-4.1.zip
es necesario crear un usuario glassfish – usuario del sistema – y el home sera /opt/glassfish4. En mi caso no me funciono –system, entonces tuve que omitirlo.
sudo -useradd –system glassfish -d /opt/glassfish4
luego se cambia el dueño de los archivos del directorio de forma recursiva
sudo chown -R glassfish glassfish4
ahora se cambia el grupo para que glasfish pertenezca a los administradores
sudo chgrp -R sudo glassfish4/
se cambian los permisos de ejecucion del directorio bin del servidor glassfish
sudo chmod -R +x glassfish4/bin/
sudo chmod -R +x glassfish4/glassfish/bin/
inicializamos un dominio, el dominio1 que viene por defecto. tenga en cuenta que el puerto 8080 no puede estar reservado para otro servidor web como tomcat
cd glassfish4/
sudo -u glassfish bin/asadmin start-domain domain1
una vez inicie el servidor se puede probar en el navegado localhost:8080, para la administracion localhost:4848
esto funciona bien si se trabaja en un servidor local. En caso de estar configurando el glassfish en un servidor remoto, no tendremos permisos de acceso, por lo que habrá que configurar el acceso remoto.
lo primero es cambiar el password de administrador
sudo -u glassfish bin/asadmin change-admin-password
enter , se deja por defecto el usuario admin
Enter admin user name [default: admin]>
el pasword actual es vacio por lo que se da enter
Enter the admin password>
y se asigna el password nuevo
Enter the new admin password>
Enter the new admin password again>
Command change-admin-password executed successfully.
lo segundo es habilitar la administración segura
sudo -u glassfish bin/asadmin enable-secure-admin
enter
e ingresamos el passwor nuevo que acabamos de ingresar
Enter admin user name>
Enter admin password>
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.
para que los cambios tengan efecto es necesario reiniciar el servidor
sudo -u glassfish bin/asadmin stop-domain domain1
Waiting for the domain to stop .
Command stop-domain executed successfully.
sudo -u glassfish bin/asadmin start-domain domain1
ahora se vuelve a hacer la prueba de acceso al equipo remoto ip+:4848 y debería funcionar sin problemas. si sale algun problema de seguridad, hacer lo posible por ignorarla
ahora se crea un script para que se inicie automaticamente el glassfish cuando se inicie la maquina
se crea un archivo en el directorio /etc/init.d
sudo nano /etc/init.d glassfish
#! /bin/sh GLASSFISHPATH=/opt/glassfish4/glassfish/bin case "$1" in start) echo "starting glassfish from $GLASSFISHPATH" sudo -u glassfish $GLASSFISHPATH/asadmin start-domain domain1 ;; stop) echo "stopping glassfish from $GLASSFISHPATH" sudo -u glassfish $GLASSFISHPATH/asadmin stop-domain domain1 ;; *) echo "usage $0 {start|stop|restart}" exit 3; ;; esac
tenga precaución al copiar las comillas, podría no funcionar. se guarda con ctrl+o se sale con ctrl+x
se dan permisos de ejecucion al archivo
sudo chmod a+x /etc/init.d/glassfish
ahora se prueba el funcionamiento
sudo /etc/init.d/glassfish stop
Waiting for the domain to stop .
Command stop-domain executed successfully.
se vuelve a iniciar el servicio
sudo /etc/init.d/glassfish start
starting glassfish from /opt/glassfish4/bin
Waiting for domain1 to start …….
Successfully started the domain : domain1
domain Location: /opt/glassfish4/glassfish/domains/domain1
Log File: /opt/glassfish4/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
lo ultimo es definir los scripts para que se ejecute el script que hemos creado.
sudo update-rc.d glassfish defaults 90 10
update-rc.d: warning: /etc/init.d/glassfish missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
Adding system startup for /etc/init.d/glassfish …
/etc/rc0.d/K10glassfish -> ../init.d/glassfish
/etc/rc1.d/K10glassfish -> ../init.d/glassfish
/etc/rc6.d/K10glassfish -> ../init.d/glassfish
/etc/rc2.d/S90glassfish -> ../init.d/glassfish
/etc/rc3.d/S90glassfish -> ../init.d/glassfish
/etc/rc4.d/S90glassfish -> ../init.d/glassfish
/etc/rc5.d/S90glassfish -> ../init.d/glassfish
otra opcion para subir el servicio y bajarlo es:
sudo service glassfish start
y
sudo service glassfish stop
fuente: https://www.youtube.com/watch?v=poAAvMv2Vdg
cambiar puerto de glassfish: http://blog.andersonrubio.com/2012/05/cambiar-el-puerto-para-glassfish.html
Ejecuacion automatica en ubuntu 18
Se adiciona al script lineas de identificación:
### BEGIN INIT INFO # Provides: glassfish # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: your description here ### END INIT INFO #! /bin/sh GLASSFISHPATH=/opt/glassfish4/glassfish/bin case "$1" in start) echo "starting glassfish from $GLASSFISHPATH" sudo -u glassfish $GLASSFISHPATH/asadmin start-domain domain1 ;; stop) echo "stopping glassfish from $GLASSFISHPATH" sudo -u glassfish $GLASSFISHPATH/asadmin stop-domain domain1 ;; *) echo "usage $0 {start|stop|restart}" exit 3; ;; esac
para iniciar el proceso automáticamente:
systemctl enable glassfish
si no funciona:
/lib/systemd/systemd-sysv-install enable glassfish
para confirmar si quedó habilitado:
systemctl is-enabled glassfish
fuente: https://maslinux.es/como-habilitar-o-deshabilitar-servicios-en-ubuntu-systemd-upstart/
fuente: https://serverfault.com/questions/849507/systemctl-doesnt-recognize-my-service-default-start-contains-no-runlevels-abo
Inicio automático en ubuntu 20
se crea el servicio:
sudo nano /etc/systemd/system/glassfish.service [Unit] Description = GlassFish Server v4.0 After = syslog.target network.target [Service] ExecStart=/opt/glassfish4/glassfish/bin/asadmin start-domain ExecReload=/opt/glassfish4/glassfish/bin/asadmin restart-domain ExecStop=/opt/glassfish4/bin/glassfish/asadmin stop-domain Type = forking [Install] WantedBy = multi-user.target sudo systemctl daemon-reload sudo systemctl enable glassfish sudo systemctl start glassfish sudo systemctl status glassfish
se sugiere reiniciar el servidor después de la configuración
fuente: https://www.rosehosting.com/blog/how-to-install-glassfish-on-ubuntu-18-04/
Durante el despliegue de una aplicación, donde se empleen recursos Rest, cabe la posibilidad que no funcione por el siguiente error:
Root exception is javax.naming.NameNotFoundException: CDIExtension not found
para dar solucion, se tiene que añadir una propiedad dentro de la configuracion de glassfish:
- Select the node ->Configuration->server-config->JVM Settings
- cambiar las opciones ‘JVM Options’
- adicionar una propiedad
-Dcom.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true
- reiniciar el servidor
Con esto ya debería funcionar
PROBLEMAS CON EL PUERTO
En caso que al querer iniciar el servicio se indique que el puerto se encuentra ocupado, hace falta buscar y matar el puerto que necesitamos, posiblemente sera el 4848. A continuación se muestran los pasos:
«There is a process already using the admin port 4848 — it probably is another instance of a GlassFish server.
Command start-domain failed.»
/opt/glassfish4/glassfish# netstat -lpn | grep :4848
tcp6 0 0 :::4848 :::* LISTEN 1202/java /opt/glassfish4/glassfish# kill 1202
/opt/glassfish4/glassfish# bin/asadmin start-domain domain1 Waiting for domain1 to start ........................................................ Successfully started the domain : domain1
Cambiar puertos
cd /opt/glassfish4/glassfish/domains/domain1/config/
nano domain.xml
<network-listener port=»8080″ (se cambia por el que se quiere).
el puerto también se puede cambiar desde la consola de administración.
en caso que después de cambiar el puerto a 80 no arranque el servidor, habrá que hacerlo mediante el usuario root:
sudo -u root bin/asadmin start-domain domain1
Cambiar topes
El siguiente es un ejemplo de como trabaja de forma óptima glassfish cuando se cuenta con un solo GB de memoria.
Otra opcion con glassfish 5.0.1
Descarga e instalacion de glassfish 5
sudo apt install openjdk-8-jdk sudo apt-get install unzip cd /tmp wget http://download.oracle.com/glassfish/5.0.1/release/glassfish-5.0.1.zip cd /opt sudo unzip /tmp/glassfish-5.0.1.zip sudo chmod -R +x glassfish5/bin/ sudo chmod -R +x glassfish5/glassfish/bin/ cd glassfish5/ sudo -u root bin/asadmin start-domain domain1 sudo -u rdot bin/asadmin change-admin-password +Enter admin user name [default: admin]> +Enter the admin password> +Enter the new admin password> +Enter the new admin password again> +Command change-admin-password executed successfully. sudo -u root bin/asadmin enable-secure-admin +Enter admin user name> admin +Enter admin password for user "admin"> +You must restart all running servers for the change in secure admin to take effect.