En el siguiente post voy a comentar todos los pasos que tuve
que dar para poder tener una máquina virtual (en mi caso pero podría ser un
equipo físico) con Jboss y que funcione una aplicación generada con genexus.
Detalle de software que utilice.
Linux Centos 6.4 minimal
Genexus Evo3 U1
Java 7
PostgreSql 9
Jboss 7.1.1
Voy a ir contando paso a paso lo que hice y por qué.
Primero tengo que instalar Centos, eso no lo voy a detallar
pero comento que descargue la versión 6.4 que la tuve que buscar bastante
porque estaba discontinuada por no tener mantenimiento (necesitaba que fuera
esa versión porque estaba replicando un ambiente de producción). Luego de tener
la instalación completa, la actualizamos
yum update
yum upgrade
Luego de tener el equipo instalado y funcionado con las últimas
actualizaciones vamos a empezar a instalar el software base.
Con el siguiente comando vemos la versión de java que podríamos
instalar
yum search java | grep 'java-'
Buscamos la versión 7 y corremos lo siguiente
yum install java-1.7.0-openjdk-src.x86_64
Ahora vamos a instalar PostgreSQL, con la misma idea buscaos
la versión que tenemos en los repositorios e instalamos la que queramos.
yum install
postgresql-server.x86_64
Luego vamos a configurar postgresql, debemos de seguir la
siguiente secuencia
service postgresql initdb
service postgresql start
su postgres
psql
ALTER USER postgres WITH PASSWORD ‘pass_que_prefiera;
\q
Exit
Si vamos a acceder desde afuera deberíamos de tocar los
siguientes archivos
/var/lib/pgsql/data/pg_hba.conf
En mi caso como si quiera accede desde afura tuve que dejarlo
asi:
# TYPE DATABASE
USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket
connections only
local
all all trust
# IPv4 local connections:
host
all all 127.0.0.1/32 trust
# IPv6 local connections:
host all
all ::1/128 trust
#######ident
host all
all 192.168.73.153/32 trust
Y el archivo postgresql.conf debo de buscar las líneas que están
comentadas y des comentarlas y modificarlas para que quede así:
listen_addresses = '*'
port = 5432
Ahora debemos de continuar instalando jboss, para eso
instalamos algunas herramientas previas
yum install wget
yum install unzip
Ahora descargamos e instalamos jboss
wget
http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.zip
unzip jboss-as-7.1.1.Final.zip -d /usr/share
adduser jboss
chown -fR jboss.jboss
/usr/share/jboss-as-7.1.1.Final/
su jboss
cd /usr/share/jboss-as-7.1.1.Final/bin/
./add-user.sh (ManagementRealm, usuario foo y
pass)
Ahora ejecutamos jboss y probamos que funciones accediendo
por el navegador, por las dudas bajamos el firewall porque por defecto tiene
reglas y pueden hacernos ruido en este paso.
Limpiar las reglas de iptables (firewall)
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD
ACCEPT
iptables -P OUTPUT
ACCEPT
Levantar jboss (ver que no de ningún error)
/usr/share/jboss-as-7.1.1.Final/bin/standalone.sh
-Djboss.bind.address=0.0.0.0 -Djboss.bind.address.management=0.0.0.0&
Acceder de cualquier navegador a la ip del equipo y debería
de mostrarnos la página de jboss inicial.
Con esto tendremos casi todo, pero lo mejor es dejar el
firewall con las reglas que tiene y agregar nuestras reglas.
Les dejo un ejemplo del archivo /etc/sysconfig/iptables en
el que expongo el puerto 8080 para jboss, el 9990 para la consola de administración
de jboss, y el 5432 para conectarme a postgres desde fuera (esto si es producción
no se debería de agregar)
###############
archivo /etc/sysconfig/iptables ########################
# Generated by iptables-save v1.4.7 on Wed Apr
15 07:59:02 2015
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [13:1644]
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 9990 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED
-j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp
--dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with
icmp-host-prohibited
# jboss
-A FORWARD -p tcp -m tcp --dport 8080 -j ACCEPT
# postgresql
-A FORWARD -p tcp -m tcp --dport 5432 -j ACCEPT
# jboss admin
-A FORWARD -p tcp -m tcp --dport 9990 -j ACCEPT
-A FORWARD -j REJECT --reject-with
icmp-host-prohibited
-A OUTPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 5432 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 9990 -j ACCEPT
COMMIT
# Completed on Wed Apr 15 07:59:02 2015
############### FIN ######################################
Ademas deberiamos de configurar para que jboss se levantara
cada vez que se reinicie el servidor, yo cree un arrancador muy basico que se
puede configurar a nuestras necesidades. Este archivo se podria llamar
/etc/init.d/jobss711
#########################
archivo /etc/init.d/jobss711 #################3
#!/bin/bash
### BEGIN INIT INFO
# Provides: jbossas7
# 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 JBoss AS 7
### END INIT INFO
# chkconfig: 35 92 1
## Include some script files in order to set
and export environmental variables
## as well as add the appropriate executables
to $PATH.
[ -r /etc/profile.d/java.sh ] && .
/etc/profile.d/java.sh
[ -r /etc/profile.d/jboss.sh ] && .
/etc/profile.d/jboss.sh
JBOSS_HOME=/usr/share/jboss-as-7.1.1.Final
AS7_OPTS="$AS7_OPTS
-Dorg.apache.tomcat.util.http.ServerCookie.ALLOW_HTTP_SEPARATORS_IN_V0=true" ## See AS7-1625
AS7_OPTS="$AS7_OPTS
-Djboss.bind.address.management=0.0.0.0"
AS7_OPTS="$AS7_OPTS -Djboss.bind.address=0.0.0.0"
case "$1" in
start)
echo "Starting JBoss AS 7..."
#sudo -u jboss sh ${JBOSS_HOME}/bin/standalone.sh $AS7_OPTS ##
If running as user "jboss"
#start-stop-daemon --start --quiet --background --chuid jboss --exec
${JBOSS_HOME}/bin/standalone.sh -- $AS7_OPTS
## Ubuntu
${JBOSS_HOME}/bin/standalone.sh $AS7_OPTS &
;;
stop)
echo "Stopping JBoss AS 7..."
#sudo -u jboss sh ${JBOSS_HOME}/bin/jboss-admin.sh --connect
command=:shutdown ## If running as user "jboss"
#start-stop-daemon --start --quiet --background --chuid jboss --exec
${JBOSS_HOME}/bin/jboss-admin.sh -- --connect command=:shutdown ## Ubuntu
${JBOSS_HOME}/bin/jboss-cli.sh --connect command=:shutdown
;;
*)
echo "Usage: /etc/init.d/jbossas7
{start|stop}"; exit 1;
;;
esac
exit 0
#########################
FIN archivo #################
Con chkconfig podremos agregarlo para que inicie y finalice
cuando arranquemos o apaguemos el equipo, ver como se adapta a cada instalación
de Linux, por ejemplo si quieren que se arranque cuando iniciamos entorno
grafico o no. Por ejemplo algo asi
chkconfig –level 345
jboss711 on
Probemos en reiniciar el equipo y probar que siga
funcionando jboss y postgresql
Esta todo funcionando, ahora lo único que falta es crear el
war desde gx, con el Depoyment wizard sin hacer ningún cambio, lo único que hay
que hacer es agregar todas las clases al war generado (se puede editar con
winzip) ya que genexus solo agrega algunas y si se quiere agregar cuando se está
generando desde la aplicación DW de gx se cae (en mi caso, pueden probarlo
ustedes).
Y por último hay que tirar el war en /usr/share/jboss-as-7.1.1.Final/standalone/deployments,
mirar el log y ver que no tire ningún error, y por último en un navegador accede
a la aplicación.
Recordar que el link sería algo así:
Hola Nestor, tenes algun paso a paso similar a este pero para una maquina virtual en Amazon con un servidor windows? Estoy en busqueda de replicar lo que ofrece Gx para prototipar de forma tal de poder pagando el servicio en amazon pero utilizarlo en la nube. Desde ya muchas gracias, saludos
ResponderEliminarLamentablemente no he trabajado en la nube, ni de amazon ni de los otros actores.
ResponderEliminarHola Nestor, instale CentOS 7, jdk1.8, postgresql 9, jboss eap 7.0 alpha, y subi una aplicacion simple de una transaccion y un web panel, generada con GeneXus Ev3 U6, lo que funciona en la transaccion son las altas, bajas y modificaciones, pero lo que no funciona es el icono select (el popup para ver los registros de la transaccion) aparece el mensaje Internal Server Error, tambien probe aplicando el workwith a la transaccion y da el mismo error en la pantalla del wwtransaccion, Sabes como ver un detalle del error? (habilitar en el Jboss los mensajes de error, o que que archivo log habria una mejor explicacion del error), te funciona bien el workwith o webpanels con grids?, cual es tu email para seguir consultando, el mio es felipexto@gmail.com, gracias de antemano
ResponderEliminarJboss por defecto genera log, tenes que fijarte en el server.log. Lo que debes estar haciendo mal es generando el war que tiras al log, fíjate bien si tenes todas los js y class, genexus no arma bien el war solo (salvo que pongas todas las classes que necesites en un mail)
ResponderEliminar