Despliegue de App Web en Linux

open container pallets with boxes and hand truck isolated on white background

Las aplicaciones web son en general más sencillas para tus usuarios y clientes en comparación con las aplicaciones de escritorio. No tienen que preocuparse en instalar software o las actualizaciones. En vez de que tus clientes deban de desplegar tu software en sus ordenaadores, tu has de desplegar en software en tus servidores web.

En general, estos son los pasos que has de llevar a cabo para desplegar una app web Xojo en un servidor Linux:

  1. Compila tu app web para Linux.
  2. Conecta a tu servidor web utilizando tu cliente FTP preferido (usando el modo Binario).
  3. Sube tu app web (incluyendo las carpetas Libs y Resources)
  4. Verifica que el bit de ejecución está definido para los archivos recién subidos; algunos clientes FTP tienen la mala costumbre de cambiar este bit en la subida de archivos.

Pero los detalles pueden ser algo más puntillosos.

Puedes desplegar tus apps web en Servidores Privados Virtuales  con la configuración adecuada (VPS por sus siglas en inglés). Los hosting compartidos no funcionan por lo general, debido a la ausencia de capacidades de configuración. Si buscas la solución de hosting con la experiencia de despliegue más sencilla, deberías de tener en cuenta Xojo Cloud.

App Web Autónoma (Standalone)

Si estás subiendo una app web autónoma, entonces deberías seguir estos pasos:

  1. Compila tu aplicación web para Linux con el ajuste de compilación Standalone seleccionado.
  2. Conecta a tu servidor web usando tu cliente FTP preferido.
  3. Navega hasta la carpeta en la que quieras tener tu aplicación web.
  4. Sube tu aplicación web (incluyendo las carpetas Libs y Resources) en modo Binario.
  5. Verifica el bit de ejecución de los archivos recién subidos.

Ahora has de ejecutar la aplicación web autónoma en el servidor. Tendrás que conectare al servidor para ello usando ssh (Secure Shell). El Shell seguro (y el comando ssh) están disponibles desde la línea de comandos del terminal en Windows, OS X y Linux.

  1. Conecta al servidor usando ssh (Shell seguro) con este comando: ssh login@misitioweb.es
  2. Introduce la contraseña cuando se solicite.
  3. Navega hasta la carpeta a la que hayas subido tu app web.
  4. Ejecuta la app usando este comando: ./TestApp

Ahora puedes acceder a la app web en tu navegador web usando el nombre de dominio y el puerto. Si has compilado “TestApp” para que use el puerto 8080, entonces puedes acceder a ella usando un URL como este: http://www.mywebsite.com:8080

Ten en cuenta que si sales de ssh, entonces tu aplicación web finalizará su ejecución excepto que la hayas “daemonizado”. Utiliza este código en el evento App.Open para “daemonizar” una aplicación web autónoma:

Call Daemonize

En OS X, el uso de Daemonize está desaconsejado por Apple. Deberías de usar launchd en vez de ello.

Aplicación Web CGI

Si estás subiendo una aplicación web CGI, entonces deberías de seguir estos pasos:

  1. Compila tu aplicación web para Linux con el ajuste de compilación CGI seleccionado.
  2. Conecta con tu servidor web usando FTP.
  3. Navega hasta la carpeta en la que tu servidor web espera encontrar la app CGI. Por lo general es la carpeta con el nombre cgi-bin
  4. Sube tu aplicación web (incluyendo la carpeta Libs, la carpeta Resources, y los archivos config.cfg y cgi). Usa el modo Binario.
  5. Verifica el bit de ejecución.

Si tu servidor web ya está configurado correctamente para la ejecución de aplicaciones CGI con Apache, entonces sólo tendrás que escribir el URL en tu navegador. Por ejemplo, para una aplicación web llamada “TestApp”, deberías usar un URL como este:

http://www.mywebsite.com/cgi-bin/testapp.cgi

Resolución de problemas

Sin embargo, las cosas no siempre van bien a la primera. Esta sección incluye algunos consejos que te permitirán solucionar los problemas de despliegue más comunes.

Librerías de 32 bits

Por defecto, las versiones de Linux de 64 bits no incluyen las librerías de 32 bits que se precisan por las aplicaciones web Xojo de 32 bits. Por favor, consulta los Requerimientos del Sistema para obtener los detalles sobre como obtener e instalar las librerías de 32 bits en tu distribución Linux. Asegúrate también de que esté disponible la librería libicu. Puedes evitar este paso compilando tu app web como aplicación de 64 bits.

Dependencias

No todas las instalaciones de Linux tienen preinstaladas las dependencias necesarias para las aplicaciones Xojo. Consulta los Requerimientos del Sistema para obtener los detalles. Para determinar cuáles son las librerías utilizadas por Xojo, puedes utilizar el comando ldd:

ldd Xojo

Logs Web

Si obtienes un “Internal Server Error” o cualquier error, has de comprobar el log del servidor web para obtener los detalles. Una fuente común de problemas el ajuste incorrecto de los permisos.

Permisos

Tu app web necesita tener definidos los permisos correctos, de modo que el servidor web pueda ejecutar la aplicación. Esto se realiza mediante el uso de los comandos chown y chmod. Los permisos necesarios varían en función de la distribución de Linux y la instalación de Apache. Un buen punto de partida son los permisos “755”.

No se puede ejecutar la aplicación

Este error indica que el CGI (un script Perl) se ha ejecutado correctamente, pero no ha podido ejecutar tu aplicación web. Este error ofrecerá más información, por lo general el mensaje “Permiso Denegado”. Algunos usuarios de hosting compartidos reciben el mensaje “Connection refused”. Este mensaje significa, por lo general, que el proveedor del hosting tiene una política de seguridad que evita la ejecución de tu app. Deberás de verificarlo con tu proveedor de hosting en el caso de que recibas dicho mensaje.

Ajustes del Ejecutable

Cuando subes tu aplicación al servidor, asegúrate de que la aplicación y su carpeta libs se suban en modo binario, y todo lo demás en modo ASCII. Muchos clientes FTP lo hacen automáticamente de forma correcta, pero otros no.

Si obtienes un error que indica “Application launched, but unable to connect on port #”, significa que el CGI puede ejecutar tu app, pero no ha podido conectarse con ella utilizando el puerto especificado. El firewall de tu host podría estar bloqueando dicho puerto. Tendrás que desplegar la app usando un puerto estático y pedir a tu proveedor de alojamiento que abra un puerto que puedas usar.

No se puede ubicar una Librería en la Carpeta Libs

Asegúrate en primer lugar de haber subido todos los contenidos de la carpeta Libs en modo Binario.

Comprueba la entrada Options FollowSymLinks en tu configuración Apache.

Error Interno del Servidor

Esto puede significar una amplia variedad de cosas. Consulta los logs del servidor web. Algunas cosas a verificar:

Asegúrate de que Apache esté configurado para que permita las aplicaciones CGI

Asegúrate de que Perl está instalado y configurado correctamente.

3 comentarios en “Despliegue de App Web en Linux

  1. mauricio tanco

    Hola Javier, me puedes indicar como despliego una web app en Windows.
    Tengo la aplicación pero me quedé trancado en ponerla en producción.
    Gracias!

    1. Javier Rodriguez

      Hola Mauricio,

      Puedes encontrar información en español en estos enlaces:

      1. Optimización de aplicaciones Web

      También puedes encontrar información adicional sobre despliegue de aplicaciones web aquí.

  2. Aplicaciones Web: Crear un Login seguro - AprendeXojo

    […] Para seguir este tutorial, tendrás que crear una aplicación CGI y ejecutarla sobre un servidor que tenga un certificado SSL instalado. De lo contrario, obtendrás […]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *