Este documento introduce los servidores Payara, incluyendo qué son, su comunidad de código abierto, características y configuración inicial. Payara Server es un servidor de aplicaciones derivado de GlassFish que ofrece soporte comercial. La comunidad contribuye al código fuente en GitHub. Payara tiene características como actualizaciones constantes, herramientas de caché, agrupamiento automático y soporte para microservicios y producción. El documento también explica cómo instalar Apache HTTP Server y Payara Server, y configurar el reenvío de peticiones entre ellos
2. ¿Qué es?
Payara Server ofrece soporte de
producción de 24/7, como una
solución para desarrollar de plataforma
de middleware Java.
También ofrecen Payara Micro, pequeño
e increíblemente servidor web, fácil de
usar. Permite ejecutar archivos de .WAR
desde la línea de comandos sin ninguna
instalación del servidor de aplicaciones.
Con su agrupación automática y elástica,
está diseñada para ejecutar aplicaciones
Java EE en una moderna infraestructura
de contenedores / virtualizada
2
Payara Server es un servidor de
aplicaciones de código abierto
derivado de GlassFish Server
Open-Source Edition. Fue
creado en 2014 por C2B2
Consulting como reemplazo
directo de GlassFish después
de que Oracle anunciara que
suspendería el soporte
comercial para GlassFish
3. Comunidad
El proyecto de Payara Server está alojado en GitHub , [4] permitiendo que la comunidad
acceda para ver y editar el código fuente . Payara anima a la comunidad a contribuir
mediante la generación de errores, sugiriendo nuevas funciones y mejoras en GitHub.
Payara usa el modelo Fork and Pull. Esto significa que si los miembros de la
comunidad desean realizar algún cambio, deben bifurcar el proyecto Payara y realizar
los cambios en su propio repositorio. Luego, deberán crear una solicitud de extracción
de nuevo en la rama maestra del proyecto Payara para fusionar los cambios en el
proyecto principal.
Las versiones empresariales comerciales de Payara Services Ltd, los servicios de
consultoría, la migración y las suscripciones de soporte también financian el esfuerzo
de desarrollo e ingeniería del proyecto de código abierto Payara Server.
3
4. Caracteristicas de Payara
Actualización Constante.- Payara Server a diferencia de Glassfish
que tenia una frecuencia irregular de liberación de versiones,
establece una frecuencia de liberación constante de forma
trimestral no solo para las versiones sino también para los parches
y actualización de componentes.
Herramientas de Caching.- Payara Server integra varias
herramientas para manejar el tema del cache como son JCache,
Domain Data Grid y Payara Scales (tiene un costo adicional).
Agrupamiento Automático.- Payara Server integra a Hazelcast, la
cual es una herramienta escalable utilizada para la distribución de
datos, para manejar la clusterización (agrupamiento) de manera
automática.
Seguridad, Monitoreo.- Payara Server incluye varias herramientas
para manejar el tema de seguridad y monitoreo.
Soporte Microservicios.- Payara Server cuenta con una
distribución llamada Payara Micro para el manejo de
microservicios. Adicionalmente soporte MicroProfile.
Optimizado para Producción.- Payara Server tiene un soporte
comercial tanto para ambientes de producción y desarrollo que
incluye un soporte 24/7 con una hora de delay de tiempo de
respuesta para asuntos de producción urgentes.
4
5. Payara Micro
Payara Micro es la versión de
microservicios de Payara Server y permite a
los usuarios ejecutar archivos war desde la
línea de comandos sin ninguna instalación
del servidor de aplicaciones. 70 MB de
tamaño. Payara Micro también viene con
una API de Java para que pueda integrarse
y ejecutarse desde todas las aplicaciones
de Java . Desde el lanzamiento 173 (agosto
de 2017), Payara Micro es compatible con
Eclipse MicroProfile.
5
8. ▫ Tendremos un servidor Apache que estará expuesto a
nuestros usuarios. Sus peticiones serán reenviadas a una de
las dos instancias Payara Server y utilizaremos sesiones
persistentes basadas en la cookie JSESSIONID para estar
seguros de que cada usuario interactúa con la misma
instancia de Payara Server. También investigaremos la
replicación de sesiones y probaremos que, si una de las
instancias de Payara Server no se encuentra disponible, la
otra será capaz de manejar las sesiones existentes sin
problemas.
▫ El primer paso en nuestro escenario será instalar Apache
Web Server en Ubuntu 16.04.
Primeros pasos
8
9. Qué es Apache Web Server?
Apache Web Server, también conocido sólo
como "Apache", es simplemente un servidor
que puede manejar trafico web y cuya
funcionalidad puede ser ampliada a través del
uso de módulos. Llamar al servidor "Apache"
puede parecer un poco confuso al principio,
pero generalmente cuando nos referimos al
producto de software, hacemos mención al
Servidor HTTP Apache, el cual es desarrollado
y mantenido por Fundación de Software
Apache (en ingles Apache Software Foundation
- ASF). La ASF, como una comunidad de
código abierto mantiene una gran variedad de
software ademas del servidor HTTP, sin
embargo, este fue el primero y es el que ha
prestado su nombre a la fundación.
9
10. Como podemos instalar Apache Web Server?
10
En este punto, vale la pena señalar que la instalación de Apache HTTP Server puede ser diferente en cada
distribución. El paquete en los repositorios de Ubuntu tiene un conjunto de herramientas de ayuda,
comandos que hacen más fácil gestionar los archivos de configuración, así como una estructura de
carpetas diferente, orientado para facilitar la gestión de sitios web muy grandes. Para Ubuntu 16.04,
Apache Web Server está disponible como paquete en los repositorios de aptitude y puede ser instalado
desde línea de comandos de la siguiente manera:
sudo apt install apache2
Tener en cuenta que, en versiones anteriores de Ubuntu, necesitarás utilizar "apt-get" en lugar de "apt" en
la versión 16.04 y superiores.
Este comando irá a buscar la última versión del paquete en el repositorio y lo instalará como un servicio,
lo que significa que es posible utilizar el comando service para gestionar el servidor. Parar, iniciar y
reiniciar Apache es posible con los siguientes comandos:
sudo service apache2 stop
sudo service apache2 start
sudo service apache2 restart
11. Como podemos instalar Apache Web Server?
11
Cuando la instalación ha terminado, el servicio Apache deberá estar iniciado automáticamente. Si
no es así, serás capaz de utilizar los comandos mencionados anteriormente para iniciarlo. Una vez
que se ha iniciado, puedes confirmar que está funcionando visitando http://localhost en el
navegador:
12. Reenvio de peticiones
12
Hemos configurado nuestro Apache Web Server.
Nuestro siguiente paso será configurar el reenvío de
peticiones para enviar tráfico a Payara Server desde
nuestro servidor Apache.
El reenvio de peticiones consiste en el trabajo que realiza un
servidor web en redirigir todas o algunas de las peticiones que
recibe a otro servidor web para que las procese. De esta forma,
es posible ocultar la ubicacion real del servidor a los usuarios y
mantener los sistemas internos detras del servidor Apache, lo
que puede resultar en una mejora de rendimiento. Como la
mayoría de los servidores web, Apache Web Server puede
extenderse con módulos que le añaden la habilidad de reenviar
peticiones a un servidor y redireccionar las respuestas por igual.
Esto significa que puedes utilizar Apache como un
intermediario que esconde las direcciones IP y puertos de red
específicos y permite que el usuario reciba las respuestas desde
el mismo servidor (por ejemplo, hacer uso de la URL
http://localhost en lugar de http://localhost:8080 en la barra de
direcciones de tu navegador).
13. Cómo puedo
configurar el reenvío
de peticiones entre
Apache Web Server y
Payara Server?
13
Esto puede cambiar dependiendo de cada distribución; en esta entrada, trataremos con el
paquete disponible en los repositorios de Ubuntu. El paquete de Ubuntu contiene los binarios de
Apache, pero también tiene "herramientas de ayuda" adicionales para gestionar los ficheros de
configuración. En Ubuntu 16.04, los dos módulos que necesitamos añadir a Apache son parte
del paquete apache2 que instalamos previamente. Puede ser instalado desde el repositorio
utilizando:
sudo apt install apache2
Tener en cuenta que, en versiones anteriores de Ubuntu, necesitarás utilizar "apt-get" en lugar
de "apt" en la versión 16.04 y superiores.
Vamos a instalar dos módulos para habilitar reenvío de peticiones http, mod_proxy y
mod_proxy_http. Con Ubuntu, las herramientas de ayuda gestionan la instalación de estos
módulos, para hacerlo más fácil las herramientas buscarán sus propias dependencias y las
instalarán y habilitarán también. Sin embargo, mod_proxy_http necesita mod_proxy para
funcionar, por lo que necesitaremos el siguiente comando:
sudo a2enmod proy_http
Fíjate que en estos comandos podemos omitir el prefijo "mod_".
15. Cómo puedo
configurar el reenvío
de peticiones entre
Apache Web Server y
Payara Server?
15
Como puedes ver en la salida de la línea de comandos,
la herramienta ha detectado la dependencia y también
ha habilitado mod_proxy. Si tienes un listado de
módulos que quieres activar puedes añadirlos después
de proxy_http, separados por espacios.
Como hemos cambiado la configuración, debemos
reiniciar el servidor con la ayuda de los siguientes
comandos (el segundo reinicio es necesario):
sudo service apache2 stop
sudo service apache2 start
sudo service apache2 restart
16. Cambiando la
configuración
16
El paquete de Ubuntu de
apache2 tiene una
configuración de ejemplo
de un sitio llamado
"000_default". El fichero de
configuración para este sitio
se puede encontrar en la
carpeta /etc/apache2/sites-
available y está
referenciado con un enlace
simbólico hacia la carpeta
sites-enabled.
Estructura de ficheros
de Apache
Generalmente, verás guías en internet refiriéndose a httpd.conf como el fichero
de configuración para editar. Este es sólo el fichero de configuración "padre" por
defecto. En sistemas Debian/Ubuntu, y sus derivados como Linux Mint, el fichero
a buscar es apache2.conf.
Ese archivo es procesado, y sus directivas aplicadas, desde la parte superior a
la inferior, por lo que si has establecido dos valores para la misma propiedad, el
segundo será aplicado únicamente. Más precisamente se aplicarán los dos, pero
el primero sólo será aplicado hasta que el segundo sea leído.
Este fichero también puede "incluir" específicamente archivos y carpetas, donde
cualquier fichero *.conf dentro de una carpeta incluida también será incluido.
Estos serán procesados y combinados con el archivo de configuración principal
en el punto en el que la sentencia "include" esté escrita. Por lo que la última
línea del fichero de configuración principal, si no se ha especificado otro fichero,
será la última línea de configuración que será aplicada, sin importar cual sea.
La página por defecto de una nueva instalación de Apache en Ubuntu se puede
encontrar en /var/www/index.html y muestra una buena visión detallada sobre
cómo funciona este proceso.
17. Creando la configuración
de un nuevo sitio
Debido a que necesitamos añadir un comportamiento específico, no
vamos a utilizar la configuración por defecto. Copia la antigua
configuración de sites-available y renómbrala con algo que fácil de
recordar.
17
18. Como usuario root, abre el archivo recién copiado en tu editor de texto preferido. Deberías ver
algo similar a:
18
19. ▫ El elemento <VirtualHost> contiene una lista de directivas que indican al servidor sobre
como atender a las peticiones recibidas de acuerdo a las condiciones listadas. En este
ejemplo, <VirtualHost*:80> gestiona todas las peticiones que llegan al servidor por el
puerto 80. Para una explicación más detallada sobre las etiquetas Virtualhost mira la
documentación de Apache.
▫ Necesitamos añadir dos líneas dentro de la etiqueta <VirtualHost> par indicar a Apache
como tratar el tráfico entrante y saliente, una indica donde enviar las peticiones y la otra
indica desde donde debe aparecer que proceden las respuestas. Por lo que un usuario
que visite http://localhost podrá ser redirigido a nuestro servidor de aplicaciones en
http://localhost:8080/, y las respuestas procedentes de http://localhost:8080/ serán
reenviadas para que al usuario le aparezca que provienen de http://localhost. Esta
configuración asume que Payara Server se ha iniciado con la configuración por defecto,
por lo que estará escuchando en el puerto 8080.
19
20. ▫ Para gestionar el tráfico entrante, añadir la línea:
▫ ProxyPass / http://localhost:8080/
▫ Esta directiva le indica a Apache que envíe todo el contexto a partir del nombre del
dominio a http://localhost:8080, como si el usuario hubiera solicitado recursos
directamente esta dirección.
▫ ProxiPassReverse / http://localhost:8080/
▫ Esta directiva le indica a Apache que haga una redirección inversa de la URL, por lo que a
pesar de que la respuesta viene de la instancia de Payara Server en el puerto 8080, la
URL se verá como si esta viniera de Apache. Estas dos directivas, cuando se utilizan
juntas, permiten evitar el uso de complicadas expresiones regulares con mod_rewrite.
▫ Asumiendo que el nombre de dominio que queremos utilizar es, por ejemplo,
www.example.com, nuestra configuración indica que una petición a
www.example.com/myapp será realmente enviada a PayaraServer como si el usuario
hubiera accedido directamente a www.localhost:8080/myapp.
20
21. ▫ El archivo de configuración ahora debe verse como el siguiente ejemplo, he quitado la
mayoría de los comentarios para dejar sólo lo que es necesario y se vea más claro:
21
22. ▫ Para deshabilitar el sitio por defecto y activar nuestra nueva configuración hay que lanzar
los siguientes comandos:
▫ sudo a2dissite 000-default
▫ sudo a2ensite payaraSite
▫ Guarda los cambios del archivo y reinicia el servidor Apache:
▫ sudo service apache2 restart
▫ Antes de hacer este cambio de configuración, visitar http://localhost/ nos mostrará la
siguiente pantalla de bienvenida de Apache:
22
23. ▫ Pero ahora que hemos añadido nuestra redirección y habilitado las nuevas directivas en
nuestra propia configuración de Apache, cuando visitar localhost/index.html seremos
enviados a la pantalla de bienvenida de Payara Server:
23
24. ▫ Ahora tenemos un Servidor Apache HTTP activo actuando como nuestro redireccionador
de peticiones (y con el potencial de adicionar nuevos módulos para cubrir otros
requerimientos), y Payara Server listo recibir el despliegue de nuevas aplicaciones.
▫ Hemos realizado la instalación de ambos servidores, configurado Apache, explorado el
sistema de archivos y tenido una breve visión de los comandos de administración,
asadmin, de Payara Server.
24