Hoy le mostraremos cómo configurar JAVA, JBoss AS y un servidor Apache que actúe como proxy inverso utilizando uno de nuestros servidores virtuales Debian. Suponemos que tiene un servidor Apache en funcionamiento.
Entonces, ¿qué es JBoss?
JBoss es un servidor de aplicaciones de código abierto desarrollado por RedHat basado en la plataforma J2EE para desarrollar e implementar aplicaciones empresariales Java, aplicaciones web, servicios, portales y más. J2EE permite que las aplicaciones sean estandarizadas y modulares, lo que permite que JAVA maneje muchos aspectos de programación al desarrollar una aplicación.
Antes de comenzar con la configuración, asegúrese de tener un sistema Debian completamente actualizado, así que ejecute:
# apt-get update && apt-get upgrade --show-upgraded -y
Una vez que su sistema Debian esté completamente actualizado, instalaremos JAVA. En esta configuración estamos usando el paquete 'sun-java' que reside en el repositorio 'no libre' de Debian. Para instalarlo, primero debemos habilitar las fuentes, así que haga lo siguiente:
# echo "deb http://ftp.us.debian.org/debian squeeze main contrib non-free" >> /etc/apt/sources.list
Una vez que haya colocado las fuentes, el siguiente paso es instalar JAVA en su sistema Debian. Para hacer eso, ejecute:
# apt-get update && apt-get install sun-java6-jdk -y
ahora debería tener instalado JAVA en su servidor. Para verificar esto, ejecute:
# java -version
y debería ver algo como esto:
java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03) Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)
Bien, el siguiente paso es instalar y configurar el servidor de aplicaciones JBoss. Estamos utilizando la última versión final (al momento de escribir este artículo) de JBoss, que es 'ver.7.1.1'. Vaya a http://www.jboss.org/jbossas/downloads/ y descargue la versión de JBoss que desea instalar en su servidor virtual de Debian.
Los pasos son los siguientes:
# cd /opt # wget -P /var/tmp http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.tar.gz # tar -zxf /var/tmp/jboss-as-7.1.1.Final.tar.gz -C /opt/
A continuación, debemos configurar JBoss AS para que se ejecute sin privilegios de "raíz" porque ejecutarlo como "raíz" es un gran riesgo de seguridad. La mejor manera de ejecutar JBoss es usando un usuario de sistema dedicado que ejecutará el servidor JBoss usando los poderes 'sudo', así que:
Cree un grupo, agregue el usuario de jboss al grupo, configure la contraseña del usuario de jboss y haga que sea el propietario de JBoss AS
# addgroup jbossgroup # useradd -g jbossgroup jboss # passwd jboss # chown jboss:jbossgroup /opt/jboss-as-7.1.1.Final/ -R
NOTA:si ya tiene la configuración de sudo, está bien, pero si no la tiene, debe instalarla. Si no está seguro acerca de esto, ejecute lo siguiente:
# [[ ! $(which sudo) ]] && apt-get install sudo -y
A continuación, agregue el usuario jboss al grupo sudo:
# gpasswd -a jboss sudo
Ok, con todo eso en su lugar, estamos algo listos para iniciar el servidor JBoss. Lo último que debemos hacer es lo siguiente:
Abra el archivo de configuración standalone.xml de JBoss con su editor favorito y realice los siguientes cambios:
# vim /opt/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml <interface name="management"> <!--<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>--> <any-ipv4-address/> </interface> <interface name="public"> <!--<inet-address value="${jboss.bind.address:127.0.0.1}"/>--> <any-ipv4-address/> </interface
Esto hará que la interfaz pública y de administración de JBoss esté disponible desde cualquier lugar (con autenticación, por supuesto) para que pueda administrarla a través de un navegador.
Con todo eso en su lugar, el servidor JBoss está configurado y listo, pero ¿cómo se supone que debemos iniciarlo? Desafortunadamente, JBoss no se envía con un script de inicio para Debian, por lo que se puede ejecutar como un servicio. Para lograr esto, necesitamos crear este script de inicio, así que créelo agregando las siguientes líneas en ( /etc/init.d/jboss ) :
#!/bin/sh ### BEGIN INIT INFO # Provides: jboss # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/Stop/Restart JBoss AS v7.0.0 ### END INIT INFO set -e ### declare the directory where is jboss/java installed JAVA_HOME=/usr/lib/jvm/java-6-sun JBOSS_HOME=/opt/jboss-as-7.1.1.Final export PATH=${JAVA_HOME}/bin:${JBOSS_HOME}/bin:${PATH} case $1 in start ) echo -e "\aStarting JBoss ..." start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/standalone.sh ;; stop ) echo -e "\aStopping JBoss ..." start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/jboss-cli.sh -- --connect command=:shutdown ;; restart ) echo -e "\aRestarting the JBoss server ..." start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/jboss-cli.sh -- --connect command=:shutdown && \ start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/standalone.sh ;; * ) echo -e "\aUsage: /etc/init.d/jboss {start|stop|restart}" exit 1 ;; esac exit 0
Guarde el archivo y asígnele un bit ejecutable:
chmod +x /etc/init.d/jboss
luego agréguelo a todos los niveles de ejecución y enciéndalo. Haga esto ejecutando:
# update-rc.d -f jboss defaults # service jboss start
JBoss debería estar activo y escuchando en el puerto 8080 ahora. Por lo tanto, acceda a la interfaz abriendo http://
Después de implementar y habilitar su aplicación, puede acceder a ella en http://
El siguiente paso es configurar Apache como un proxy inverso para que pueda manejar y pasar las solicitudes a su JBoss y ocultar el número de puerto en la URL. Entonces, edite el archivo de configuración de Apache (/etc/apache2/apache2.conf) y agregue el siguiente fragmento (host virtual) en la parte inferior del archivo:
<VirtualHost *:80> ServerName www.yourdomain.tld ServerAlias yourdomain.tld ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://yourdomain.tld:8080/helloworld/ ProxyPassReverse / http://yourdomain.tld:8080/helloworld/ <Location /> Order allow,deny Allow from all </Location> </VirtualHost>
guarde el archivo y antes de volver a cargar Apache para que los cambios surtan efecto, asegúrese de que el módulo mod_proxy esté habilitado o, de lo contrario, no se iniciará.
# a2enmod proxy_http && service apache2 restart
ahora se puede acceder a su aplicación JBoss abriendo 'http://yourdomain.tld/'
Como complemento a esta configuración, ¿qué sucede si desea incluir algunos scripts 'PHP' en su aplicación JBoss? Digamos, por ejemplo, que desea tener 'http://yourdomain.tld/service.php', entonces, ¿cómo podemos decirle a Apache que no pase esas solicitudes a JBoss sino que las atienda por sí mismo? Es bastante trivial lograr esto, así que regresemos y editemos nuestro 'Host virtual' para que se vea como el siguiente:
<VirtualHost *:80> ServerName www.yourdomain.tld ServerAlias yourdomain.tld DocumentRoot /var/www/demoWeb ProxyPassMatch ^/(.*)+\.php ! ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://yourdomain.tld:8080/helloworld/ ProxyPassReverse / http://yourdomain.tld:8080/helloworld/ <Location /> Order allow,deny Allow from all </Location> </VirtualHost>
cada script php dentro del directorio '/var/www/demoWeb' no se pasará a JBoss y se podrá acceder a él en http://yourdomain.com/