Crear una pila y ejecutar una aplicación - AWS OpsWorks

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Crear una pila y ejecutar una aplicación

importante

El AWS OpsWorks Stacks servicio llegó al final de su vida útil el 26 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los existentes. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tienes preguntas sobre la migración, ponte en contacto con el AWS Support equipo en AWS Re:post o a través de Premium AWS Support.

En esta sección se muestra cómo utilizar el libro de recetas de Tomcat para implementar una instalación de pila básica que ejecuta una sencilla aplicación de páginas de servidor Java (JSP) denominada SimpleJSP. La pila consta de una capa personalizada basada en Tomcat denominada TomCustom y una capa MySQL. SimpleJSP se despliega en la base de datos MySQL TomCustom y muestra cierta información de ella. Si aún no estás familiarizado con los conceptos básicos de cómo usar AWS OpsWorks Stacks, deberías leer primero. Introducción a las pilas de Linux en Chef 11

La aplicación SimpleJSP

La aplicación SimpleJSP muestra los aspectos básicos de la configuración de una conexión de base de datos y la recuperación de datos de la base de datos MySQL de la pila.

<html> <head> <title>DB Access</title> </head> <body> <%@ page language="java" import="java.sql.*,javax.naming.*,javax.sql.*" %> <% StringBuffer output = new StringBuffer(); DataSource ds = null; Connection con = null; Statement stmt = null; ResultSet rs = null; try { Context initCtx = new InitialContext(); ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/mydb"); con = ds.getConnection(); output.append("Databases found:<br>"); stmt = con.createStatement(); rs = stmt.executeQuery("show databases"); while (rs.next()) { output.append(rs.getString(1)); output.append("<br>"); } } catch (Exception e) { output.append("Exception: "); output.append(e.getMessage()); output.append("<br>"); } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (con != null) { con.close(); } } catch (Exception e) { output.append("Exception (during close of connection): "); output.append(e.getMessage()); output.append("<br>"); } } %> <%= output.toString() %> </body> </html>

SimpleJSP utiliza un objeto DataSource para comunicarse con la base de datos MySQL. Tomcat utiliza los datos del archivo de configuración de contexto de la aplicación web para crear e inicializar un objeto DataSource y enlazarlo a un nombre lógico. A continuación, registra el nombre lógico con un servicio de nomenclatura JNDI (interfaz de directorios y nomenclatura de Java). Para obtener una instancia del objeto DataSource adecuado, debe crear un objeto InitialContext y pasar el nombre lógico del recurso al método lookup del objeto, que recupera el objeto adecuado. El nombre lógico del ejemplo SimpleJSP, java:comp/env/jdbc/mydb, presenta los siguientes componentes:

  • El espacio de nombres raíz, java, que se separa del resto del nombre por medio de dos puntos (:).

  • Cualquier otro espacio de nombres adicional, separado por barras (/).

    Tomcat añade automáticamente recursos al espacio de nombres comp/env.

  • El nombre del recurso, que se define en el archivo de configuración de contexto de la aplicación web y se separa del espacio de nombres con una barra.

    El nombre del recurso en este ejemplo es jdbc/mydb.

Para establecer una conexión con la base de datos, SimpleJSP hace lo siguiente:

  1. Abre el método DataSource del objeto getConnection, que devuelve un objeto Connection.

  2. Llama al método Connection del objeto createStatement para crear un objeto Statement, que se utiliza para comunicarse con la base de datos.

  3. Se comunica con la base de datos llamando al método Statement adecuado.

    SimpleJSP llama a executeQuery para ejecutar una consulta SHOW DATABASES que enumera las bases de datos del servidor.

El método executeQuery devuelve un objeto ResultSet, que contiene los resultados de la consulta. SimpleJSP obtiene los nombres de la base de datos del objeto devuelto ResultSet y los concatena para crear una cadena de salida. Por último, el ejemplo cierra los objetos ResultSet, Statement y Connection. Para obtener más información sobre JSP y JDBC, consulta JavaServer Pages Technology y JDBC Basics, respectivamente.

Para utilizar SimpleJSP con una pila, debe colocarla en un repositorio. Puede utilizar cualquiera de los repositorios admitidos, pero para usar SimpleJSP con la pila de ejemplo tratada en la siguiente sección, debe ponerla en un archivo de S3 público. Para obtener más información acerca de cómo utilizar el resto de repositorios estándar, consulte Repositorios de libros de recetas.

Para poner SimpleJSP en un repositorio de archivos de S3
  1. Copie el código de ejemplo en un archivo llamado simplejsp.jsp y ponga el archivo en un directorio llamado simplejsp.

  2. Cree un archivo .zip del directorio simplejsp.

  3. Cree un bucket de Amazon S3 público, cargue simplejsp.zip en el bucket y haga el archivo público.

    Para obtener una descripción de cómo realizar esta tarea, consulte Comenzar a utilizar Amazon Simple Storage Service.

Crear una pila

Para ejecutar SimpleJSP, necesita una pila con las siguientes capas.

  • Una capa MySQL que sea compatible con el servidor back-end de MySQL.

  • Una capa personalizada que utilice el libro de recetas de Tomcat para admitir las instancias del servidor Tomcat.

Para crear la pila
  1. En el panel de AWS OpsWorks Stacks, haz clic en Añadir pila para crear una pila nueva y haz clic en Avanzado >> para ver todas las opciones. Configure la pila del modo siguiente.

    • Nombre: un nombre de pila definido por el usuario; en este ejemplo se utiliza. TomStack

    • Usar libros de recetas personalizados de Chef: establezca la alternancia en para mostrar algunas opciones adicionales.

    • Tipo de repositorio: Git.

    • URL de repositorio - git://github.com/amazonwebservices/opsworks-example-cookbooks.git.

    • JSON de Chef personalizado: añada el JSON siguiente

      { "tomcat": { "base_version": 7, "java_opts": "-Djava.awt.headless=true -Xmx256m" }, "datasources": { "ROOT": "jdbc/mydb" } }

    Para el resto de opciones, puede aceptar los valores predeterminados.

    El JSON personalizado hace lo siguiente:

    • Anula el atributo ['base_version'] del libro de recetas de Tomcat para establecer la versión de Tomcat en 7; el valor predeterminado es 6.

    • Anula el atributo ['java_opts'] del libro de recetas de Tomcat para especificar que la instancia no tiene encabezado y define el tamaño del montón de JVM máximo en 256 MB; el valor predeterminado no establece opciones para las instancias que ejecutan Amazon Linux.

    • Especifica el valor del atributo ['datasources], que asigna un nombre de recurso de JDBC (jdbc/mydb) al nombre del contexto de la aplicación web (ROOT), como se ha visto en tomcat::context.

      Este último atributo no tiene ningún valor predeterminado; debe establecerlo con JSON personalizado.

  2. Haga clic en Add a layer (Añadir una capa). En Layer type (Tipo de capa), seleccione MySQL. Después, haga clic en Add Layer (Añadir capa).

  3. Haga clic en Instances (Instancias) en el panel de navegación y, a continuación, haga clic en Add an instance (Añadir una instancia). Haga clic en Add Instance (Añadir una instancia) para aceptar la configuración predeterminada. En la línea de la instancia, haga clic en start (iniciar).

  4. Vuelva a la página Layers (Capas) y haga clic en + Layer (+ Capa) para añadir una capa. En Layer type (Tipo de capa), haga clic en Custom (Personalizado). En el ejemplo se utiliza TomCustom y tomcustom como nombre y nombre abreviado de la capa, respectivamente.

  5. En la página Layers (Capas), para la capa personalizada, haga clic en Recipes (Recetas) y, a continuación, haga clic en Edit (Editar). En Custom Chef Recipes (Recetas Chef personalizadas), asigne las recetas del libro de recetas de Tomcat a los eventos de ciclo de vida de la capa, como se indica a continuación:

    • Para Setup (Configurar), escriba tomcat::setup y haga clic en +.

    • Para Configura (Configurar), escriba tomcat::configure y haga clic en +.

    • Para Deploy, escriba tomcat::deploy y haga clic en +. Después, haga clic en Save (Guardar).

      .

  6. Haga clic en Apps (Aplicaciones) en el panel de navegación y, a continuación, haga clic en Add an app (Añadir una aplicación). Especifique las siguientes opciones y, a continuación, haga clic en Add App (Añadir aplicación):

    • Nombre: el nombre de la aplicación; en el ejemplo se usa SimpleJSP y el nombre abreviado generado por AWS OpsWorks Stacks será simplejsp.

    • Tipo de app: establezca esta opción en Otro.

      AWS OpsWorks Stacks implementa automáticamente los tipos de aplicaciones estándar en las instancias de servidor asociadas. Si establece App type (Tipo de aplicación) en other, AWS OpsWorks Stacks simplemente ejecuta las recetas de implementación y les permite controlar la implementación.

    • Raíz del documento: establezca esta opción en ROOT.

      El valor de Document root (Raíz del documento) especifica el nombre del contexto.

    • Tipo de repositorio: establezca esta opción en S3 Archive.

    • URL de repositorio: establezca esta opción en la URL de Amazon S3 de la aplicación que ha creado anteriormente.

    Utilice la configuración predeterminada para el resto de las opciones.

  7. Usa la página Instancias para agregar una instancia a la TomCustom capa e iniciarla. AWS OpsWorks Stacks ejecuta automáticamente las recetas de implementación en una nueva instancia una vez completadas las recetas de configuración, por lo que al iniciar la instancia también se implementa SimpleJSP.

  8. Cuando la TomCustom instancia esté en línea, haz clic en el nombre de la instancia en la página Instancias para ver sus detalles. Copie la dirección IP pública. A continuación, construya una URL de la siguiente manera: http://publicIP/tc/appname.jsp. Por ejemplo, la URL tendrá un aspecto similar a http://50.218.191.172/tc/simplejsp.jsp.

    nota

    La URL de Apache que reenvía las solicitudes a Tomcat está establecida en el atributo predeterminado de ['tomcat']['apache_tomcat_bind_path'], /tc/. La raíz de documentos de SimpleJSP se establece en ROOT, que es un valor especial que se resuelve como /. Por tanto, la dirección URL es "... /tc/simplejsp.jsp".

  9. Pegue la dirección URL del paso anterior en el navegador. Debería ver lo siguiente:

    Databases found: information_schema simplejsp test
    nota

    Si tu pila tiene una instancia de MySQL, AWS OpsWorks Stacks crea automáticamente una base de datos para cada aplicación, con el nombre abreviado de la aplicación.