miércoles, 22 de enero de 2020

Manejar un Ubuntu Server para desplegar una aplicación WAR de Vaadin 14

0. Comprobaciones

Verificar que se ha instalado Tomcat 9.XX y Java 13, y a ser posible un entorno gráfico para facilitar las cosas

0.1 Verificar Tomcat

a. Bajamos en una máquina local el fichero por ejemplo apache-tomcat-0.0.53.tar.gz y lo descomprimimos en la máquina local creando la carpeta apache-tomcat-0.0.53

b. Por filezilla copiamos esta carpeta al ubuntu server y cambiamos para que tenga permisos de ejecución OJO:Seleccionar el tipo de transferencia binaria

c. creamos en el directorio bin de tomcat el ficherop setenv.sh que contendrá esta línea que es la ruta al JRE que va a utilizar tomcat

JAVA_HOME=/home/ximo/MyPrograms/jdk-15.0.2+7.OpenJ7

d. Dar acceso al usuario tomcat en tomcat-users.xml

<tomcat-users>

  <role rolename="tomcat"/>
  <role rolename="manager-gui"/>
  <role rolename="role1"/>

  <user username="tomcat" password="mypassword" roles="tomcat,manager-gui"/>
  
</tomcat-users>

e. Dar acceso a máquinas remotas en context.xml de webapps/manager/META-INF/context.xml
donde pone:
 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
hay que comentarlo
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->

f. Arrancar tomcat y verificar que funciona (ir al directorio bin y darle ./startup.sh ) 
si no funciona puede que no hayamos seleccionado el tipo de transferencia binaria (apareceria ese error: Bash script and /bin/bash^M: bad interpreter: No such file or directory)


1. Conectarse al Ubuntu Server

Como cosa sencilla es entrar en KRDC, indicar usuario y dirección IP del servidor (y luego te pide la contraeña y a entrar se ha dicho)


A veces puede pedir 2 veces la contraseña.


2. ¿Que hacer?


Con el ratón, dar a Activities y aparecerán algunos de los programas instalados

En el icono Files se puede ver los ficheros


Si por algún motivo no se muestra bien la información, con el botón derecho del ratón se añaden descriptores de fichero (como tipo, acceso,..)

3. Traspaso de Ficheros


Para ello se utiliza el Filezilla y se le indica la IP, el usuario y la contraseña.

4. Crear el "war" de Vaadin

1. Hacer click con el botón derecho sobre el proyecto -> Maven -> Select Maven Profiles. Verificar que no hay ningún profile seleccionado.
2. Hacer click con el botón derecho sobre el proyecto -> Run as Maven Clean
3. Hacer click con el botón derecho sobre el proyecto -> Maven -> Uptate Project
4. Hacer click con el botón derecho sobre el proyecto -> Run As -> Run on Server (genera todo el código Javascript)
5. (Repetir el paso 3)Hacer click con el botón derecho sobre el proyecto -> Maven -> Uptate Project
6. Hacer click con el botón derecho sobre el proyecto -> Run as -> Maven Install
7. Hacer click con el botón derecho sobre el proyecto -> Run as -> Maven Build ...  Indicando en goals-> clean package y en profiles-> production generado un fichero con extensión "war" dentro de la carpeta "target" que es  visible desde el explorador de archivos (y también desde eclipse)




5. Desplegar el "war" en el servidor remoto

Opción1: Desde el servidor remoto


A1.Copiar con FileZilla este fichero al servidor 


 A2. En el tomcat manager del equipo remoto (entrar en el equipo remoto y en el Firefox indicar http:localhost:8080 y seleccionar Manager App e introduicir Usuario y contraseña




A3. Buscar hacia abajo el apartado "WAR file to deploy", Apretar "Browse", seleccionar el fichero e indicar "Deploy"



Vemos que aparece desplegado y en ejecución



Opción2: Desde el servidor local


B1. En el tomcat manager del equipo local (entrar indicando la dirección del equipo remoto y en el Firefox indicar http:ip_remota:8080 y seleccionar Manager App e introduicir Usuario y contraseña. Ojo hay que decirle al fichero de configuración, la IP de nuestro equipo local para darle acceso al "manager".

B2. Seguimos en el paso A3 osea Buscar hacia abajo el apartado "WAR file to deploy", Apretar "Browse", seleccionar el fichero (que en nnuestro ordenador local estará en el directorio target)e indicar "Deploy" y a funcionar (No ha hecho falta utilizar el fileZilla)


Comprobar que se ejecuta la aplicación mirando el enlace en Applications de /AEVaadin06-1


PROBLEMAS SURGIDOS:

1. Filezilla: Error 550 (Permiso denegado) al transferir el fichero desde la máquina local a la máquina remota:

Puede ser debido a varios casos inexplicables (tal vez producidos en una actualización del sistema operativo)  pero que a mí me han sucedido:

  1. El parámetro "write=YES", está desactivado (con un comentario). Entrar en /etc/vsftpd.conf y quitar el comentario a la línea que dice

         write = YES 

      

 2. Algunas carpetas dentro de webapps han cambiado permisos y/o propietario. Entrar en la carpeta de tomcat webapps y verificar que los ficheros y carpetas tengan permisos de lectura y ejecución para todo el mundo, y que NO esten a nombre de root:root, para ello situarse en dicha carpeta y ejecutar:

      chmod -R +r *
      chmod -R +x *
      chown -R tu_usuario:tu_grupo *