Vamos a ver los pasos necesarios para instalar JBoss Application Server en Linux, concretamente en GNU/Linux CentOS 6. Los pasos son aplicables prácticamente en su totalidad al resto de sistemas GNU/Linux como por ejemplo Debian, Ubuntu o Fedora (excepto la parte final del chkconfig, en Debian no es válida).
Descarga de JBoss Application Server
En el site de JBoss tenemos disponibles todas las descargas, tanto de JBoss AS como de JBoss Enterprise Application (EAP). Nosotros vamos a descargar la versión 7.1.1 final de JBoss AS en su versión precompilada en formato .zip. Podríamos bajar el código fuente y compilarlo según nuestros requerimientos pero para una instalación estándar no suele ser necesario.
$ wget http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.zip
Instalación de JAVA JDK
CentOS por defecto, en su instalación «base» trae por defecto JAVA instalado, podéis verificarlo con el siguiente comando:
# java -version java version "1.7.0_09-icedtea" OpenJDK Runtime Environment (rhel-2.3.3.2.el6_3-i386) OpenJDK Client VM (build 23.2-b09, mixed mode)
# rpm -qa | grep jdk java-1.7.0-openjdk-1.7.0.9-2.3.3.2.el6_3.i686
Si no tuvierais el JDK instalado, es tan sencillo como instalarlo a través de yum:
# yum install java-1.7.0-openjdk
Instalación de JBoss
La instalación a partir del paquete precompilado (binary .zip) es tan sencilla como descomprimir en la ruta que queramos. Podemos dejar un directorio con el nº de versión para tener y hacer un link simbólico «jboss»:
# mv jboss-as-7.1.1.Final.zip /opt # cd /opt/ && unzip jboss-as-7.1.1.Final.zip # ln -s /opt/jboss-as-7.1.1.Final /opt/jboss # ls -l /opt/ total 4 lrwxrwxrwx 1 root root 25 Sep 10 21:29 jboss -> /opt/jboss-as-7.1.1.Final drwxr-xr-x 10 root root 4096 Sep 10 21:28 jboss-as-7.1.1.Final
Configuración de JBoss
El servidor de aplicaciones no va a correr como root, así que creamos un usuario específico para la ejecución de JBoss:
# adduser jboss # passwd jboss
Configuramos las variables de entorno necesarias para que se puedea ejecutar el servidor de aplicaciones:
# su - jboss $ vi ~/.bashrc
Las variables necesarias son JAVA_HOME, PATH (añadir el path de java y de JBoss) y JBOSS_HOME.
# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk export PATH=$PATH:$JAVA_HOME/bin export JBOSS_HOME=/opt/jboss export PATH=$PATH:$JBOSS_HOME/bin
Podéis recargar las variables de entorno ejecutando:
$ bash
o también
source .bashrc
Como root, cambiamos el propietario del directorio JBoss al nuevo usuario:
# chown -R jboss.jboss /opt/jboss-as-7.1.1.Final
Iniciar JBoss
Existen varias formas de arrancar JBoss, podemos iniciar una única instancia en modo standalone o como Managed Domain. Esta última permite controlar y configurar múltiples instancias de JBoss de varias máquinas mientras que el standalone es una instancia local única.
Para arrancar el modo standalone ejecutamos el siguiente comando. Si quisieramos lanzar JBoss como Managed Domain simplemente ejecutar el script de arranque correspondiente:
# su - jboss $ $JBOSS_HOME/bin/standalone.sh
Si todo ha ido bien, la ejecución mostrará lo siguiente:
========================================================================= JBoss Bootstrap Environment JBOSS_HOME: /opt/jboss JAVA: /usr/lib/jvm/jre-1.7.0-openjdk/bin/java JAVA_OPTS: -server -XX:+TieredCompilation -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.server.default.config=standalone.xml ========================================================================= 21:46:04,082 INFO [org.jboss.modules] JBoss Modules version 1.1.1.GA 21:46:06,487 INFO [org.jboss.msc] JBoss MSC version 1.0.2.GA 21:46:07,130 INFO [org.jboss.as] JBAS015899: JBoss AS 7.1.1.Final "Brontes" starting 21:46:18,898 INFO [org.xnio] XNIO Version 3.0.3.GA 21:46:18,951 INFO [org.jboss.as.server] JBAS015888: Creating http management service using socket-binding (management-http) 21:46:19,451 INFO [org.xnio.nio] XNIO NIO Implementation Version 3.0.3.GA 21:46:19,638 INFO [org.jboss.remoting] JBoss Remoting version 3.2.3.GA 21:46:20,265 INFO [org.jboss.as.configadmin] JBAS016200: Activating ConfigAdmin Subsystem 21:46:20,310 INFO [org.jboss.as.logging] JBAS011502: Removing bootstrap log handlers 21:46:20,635 INFO [org.jboss.as.security] (ServerService Thread Pool -- 44) JBAS013101: Activating Security Subsystem 21:46:20,630 INFO [org.jboss.as.naming] (ServerService Thread Pool -- 38) JBAS011800: Activating Naming Subsystem 21:46:20,632 INFO [org.jboss.as.osgi] (ServerService Thread Pool -- 39) JBAS011940: Activating OSGi Subsystem 21:46:20,899 INFO [org.jboss.as.webservices] (ServerService Thread Pool -- 48) JBAS015537: Activating WebServices Extension 21:46:22,029 INFO [org.jboss.as.security] (MSC service thread 1-2) JBAS013100: Current PicketBox version=4.0.7.Final [...] 21:46:31,249 INFO [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on /127.0.0.1:4447 21:46:31,836 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS] 21:46:32,138 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990 21:46:32,145 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss AS 7.1.1.Final "Brontes" started in 30736ms - Started 133 of 208 services (74 services are passive or on-demand)
Si os fijáis, la consola de administración y el servicio sólo estan disponibles en local:
21:46:31,249 INFO [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on /127.0.0.1:4447 21:46:32,138 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
Podéis modificarlo y que escuche por otras o todas las IPs de la máquina en el fichero:
/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}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </interface>
Si queremos que escuche por todas las IPs:
<interface name="management"> <inet-address value="${jboss.bind.address.management:0.0.0.0}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:0.0.0.0}"/> </interface>
En este caso lo hemos modificado para el standalone, si hubieramos levantado el Managed Domain lo deberíamos cambiar en su archivo de configuración correspondiente. Volvemos a iniciar y ahora efectivamente escucha por todas las IPs. Tanto la consola de administración web (puerto TCP 9990) como el propio servicio (puerto TCP 8080):
21:57:39,619 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-1) Starting Coyote HTTP/1.1 on http--0.0.0.0-8080
Administración de JBoss
Si accedemos a la consola de administración nos informarán con un pantallazo de que no hemos creado ningún usuario para administrar el servidor:
Tenemos que ejecutar el script adduser.sh para crear un usuario de administración. Está disponible en el directorio bin/ de nuestra instalación. El script da la opción de crear un usuario de gestión o de aplicación. En este caso creamos el usuario de gestión:
# /opt/jboss-as-7.1.1.Final/bin/add-user.sh What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a): a Enter the details of the new user to add. Realm (ManagementRealm) : ManagementRealm Username : foo Password : Re-enter Password : About to add user 'foo' for realm 'ManagementRealm' Is this correct yes/no? yes Added user 'foo' to file '/opt/jboss-as-7.1.1.Final/standalone/configuration/mgmt-users.properties' Added user 'foo' to file '/opt/jboss-as-7.1.1.Final/domain/configuration/mgmt-users.properties'
Una vez creado, recargamos la página y aparecerá la ventana de autenticación, introducimos los datos del usuario creado y ya tendremos acceso a la consola de administración:
Crear servicio de sistema para JBoss
En el directorio «/opt/jboss/bin/init.d» tenemos la plantilla necesaria para crear el script de arranque automático e integrarlo en el sistema (chkconfig).
Vamos a copiar el script a /etc/init.d:
# cp -p /opt/jboss/bin/init.d/jboss-as-standalone.sh /etc/init.d/jboss # chmod 755 jboss Y copiamos el archivo jboss-as.conf, que permite personalizar variables, a la ruta correspondiente:
# mkdir /etc/jboss-as/ # cp -p jboss-as.conf /etc/jboss-as/
Tenemos que cambiar la variable JBOSS_HOME por la ruta en la que lo hayamos instalado:
JBOSS_HOME=/opt/jboss
Este archivo de configuración nos permite indicar el usuario con el que vamos a ejecutar JBoss, debemos modificarlo y configurar el usuario «jboss» que hemos creado antes:
# vi /etc/jboss-as/jboss-as.conf
JBOSS_USER=jboss
Ahora ya podemos añadir el script a chkconfig y configurarlo para que arranque automáticamente:
# chkconfig --add jboss # chkconfig jboss on
Si todo ha ido bien, ya podemos arrancar, parar y reiniciar el servicio con el script:
# /etc/init.d/jboss start Starting jboss-as: [ OK ]
# ps -ef | grep jboss | grep -v grep root 2472 1 0 22:18 pts/1 00:00:00 su - jboss -c LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=/var/run/jboss-as/jboss-as-standalone.pid /opt/jboss/bin/standalone.sh -c standalone.xml jboss 2475 2472 0 22:18 ? 00:00:00 /bin/sh /opt/jboss/bin/standalone.sh -c standalone.xml jboss 2525 2475 5 22:18 ? 00:00:34 /usr/lib/jvm/jre-1.7.0-openjdk/bin/java -D[Standalone] -server -XX:+TieredCompilation -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.server.default.config=standalone.xml -Dorg.jboss.boot.log.file=/opt/jboss/standalone/log/boot.log -Dlogging.configuration=file:/opt/jboss/standalone/configuration/logging.properties -jar /opt/jboss/jboss-modules.jar -mp /opt/jboss/modules -jaxpmodule javax.xml.jaxp-provider org.jboss.as.standalone -Djboss.home.dir=/opt/jboss -c standalone.xml
Y esto es todo, ya tenemos JBoss AS instalado y listo para utilizar. Si os resulta interesante, en próximos artículos puedo explicar más cosas del funcionamiento de este servidor de aplicaciones.
Sensacional artículo!!
Gracias.
hola, al momento de levantar el servicio me sale:
/etc/init.d/jboss start
Starting jboss-as: -bash: /usr/share/jboss-as/bin/standalone.sh: No existe el fichero o el directorio
[ OK ]
que podra ser?
Zero,
el mismo error te lo está diciendo. No existe ese fichero o directorio.
wget devuelve «Forbiden» :(
El link sigue funcionando bien, no debería darte forbidden a no ser que no puedas guardar el archivo en la ruta local que lo estás intentando.
$ wget http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.zip