Déploiement des applications Java - AWS OpsWorks

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déploiement des applications Java

Important

Le AWS OpsWorks Stacks le service a pris fin le 26 mai 2024 et a été désactivé tant pour les nouveaux clients que pour les clients existants. Nous recommandons vivement aux clients de migrer leurs charges de travail vers d'autres solutions dès que possible. Si vous avez des questions sur la migration, contactez le AWS Support L'équipe sur AWS Re:post ou via AWS Support haut de gamme.

Les rubriques suivantes décrivent comment déployer des applications sur les instances d'une couche Java App Server. Les exemples concernent les JSP applications, mais vous pouvez utiliser essentiellement la même procédure pour installer d'autres types d'applications Java.

Vous pouvez déployer des JSP pages à partir de n'importe quel référentiel pris en charge. Si vous souhaitez déployer des WAR fichiers, notez que AWS OpsWorks Stacks extrait automatiquement WAR les fichiers déployés depuis un Amazon S3 ou une HTTP archive, mais pas depuis un dépôt Git ou Subversion. Si vous souhaitez utiliser Git ou Subversion pour WAR les fichiers, vous pouvez effectuer l'une des opérations suivantes :

  • Stocker l'archive extraite dans le référentiel.

  • Stockez le WAR fichier dans le référentiel et utilisez un hook de déploiement Chef pour extraire l'archive, comme décrit dans l'exemple suivant.

Vous pouvez utiliser les raccordements de déploiement Chef pour exécuter les applications Ruby fournies par l'utilisateur sur une instance à n'importe laquelle des quatre étapes du déploiement. Le nom de l'application détermine l'étape. Voici un exemple d'application Ruby nomméebefore_migrate.rb, qui extrait un WAR fichier déployé depuis un dépôt Git ou Subversion. Comme le nom associe l'application au hook de déploiement Checkout, il s'exécute au début de l'opération de déploiement, une fois que le code a été vérifié, mais avant la migration. Pour plus d'informations sur l'utilisation de cet exemple, consultez Utilisation des raccordements de déploiement Chef.

::Dir.glob(::File.join(release_path, '*.war')) do |archive_file| execute "unzip_#{archive_file}" do command "unzip #{archive_file}" cwd release_path end end
Note

Lorsque vous déployez une mise à jour d'une JSP application, Tomcat peut ne pas reconnaître la mise à jour et continuer à exécuter la version existante de l'application. Cela peut se produire, par exemple, si vous déployez votre application sous la forme d'un fichier .zip contenant uniquement une JSP page. Pour garantir que Tomcat exécute la dernière version déployée, le répertoire racine du projet doit inclure un INF répertoire WEB - contenant un web.xml fichier. Un fichier web.xml peut contenir une grande variété de contenus, mais ce qui suit est suffisant pour veiller à ce que Tomcat reconnaisse les mises à jour et exécute la version d'application actuellement déployée. Vous n'avez pas à changer la version pour chaque mise à jour. Tomcat reconnaît la mise à jour même si la version n'a pas changé.

<context-param> <param-name>appVersion</param-name> <param-value>0.1</param-value> </context-param>

Déploiement d'une JSP application

Pour déployer une JSP application, spécifiez le nom et les informations du référentiel. Vous pouvez également éventuellement spécifier des domaines et des SSL paramètres. Pour plus d'informations sur la création d'une application, consultez Ajout d'applications. La procédure suivante explique comment créer et déployer une JSP page simple à partir d'une archive Amazon S3 publique. Pour plus d'informations sur l'utilisation d'autres types de référentiels, y compris les archives privées Amazon S3, consultezSource de l'application.

L'exemple suivant montre la JSP page, qui affiche simplement certaines informations système.

<%@ page import="java.net.InetAddress" %> <html> <body> <% java.util.Date date = new java.util.Date(); InetAddress inetAddress = InetAddress.getLocalHost(); %> The time is <% out.println( date ); out.println("<br>Your server's hostname is "+inetAddress.getHostName()); %> <br> </body> </html>
Note

La procédure suivante suppose que vous maîtrisiez déjà les bases de la création de piles, d'ajout d'instances aux couches, et ainsi de suite. Si vous êtes nouveau dans AWS OpsWorks Des piles, tu devrais d'abord voirMise en route des piles Linux Chef 11.

Pour déployer une JSP page depuis une archive Amazon S3
  1. Créez une pile avec une couche Java App Server, ajoutez une instance 24 h/24 et 7 j/7 à la couche et démarrez-la.

  2. Copiez le code dans un fichier nommé simplejsp.jsp, placez le fichier dans un dossier nommé simplejsp et créez une archive .zip du dossier. Les noms sont arbitraires ; vous pouvez utiliser n'importe quels noms de fichier ou de dossier de votre choix. Vous pouvez également utiliser d'autres types d'archives, notamment les fichiers gzip, bzip2, tarball ou Java. WAR Notez que AWS OpsWorks Stacks ne prend pas en charge les archives non compressées. Pour déployer plusieurs JSP pages, incluez-les dans la même archive.

  3. Téléchargez l'archive dans un compartiment Amazon S3 et rendez le fichier public. Copiez les fichiers URL pour une utilisation ultérieure. Pour plus d'informations sur la création de compartiments et le chargement des fichiers, consultez Mise en route avec Amazon Simple Storage Service.

  4. Ajoutez une application à la pile et spécifiez les paramètres suivants :

    • NomSimpleJSP

    • Type d'applicationJava

    • Type de référentielHttp Archive

    • Référentiel URL : l'Amazon S3 URL de votre fichier d'archive.

    Utilisez les valeurs par défaut pour les paramètres restants, puis cliquez sur Ajouter une application pour créer l'application.

  5. Déployez l'application sur l'instance Java App Server.

Vous pouvez maintenant accéder à l'application URL et consulter l'application. Si vous n'avez pas spécifié de domaine, vous pouvez en créer un URL en utilisant soit l'adresse IP publique de l'instance, soit son DNS nom public. Pour obtenir l'adresse IP publique ou le DNS nom public d'une instance, accédez au AWS OpsWorks Console Stacks et cliquez sur le nom de l'instance sur la page Instances pour ouvrir sa page de détails.

Le reste URL dépend du nom abrégé de l'application, qui est un nom en minuscules qui AWS OpsWorks Stacks est généré à partir du nom de l'application que vous avez spécifié lors de sa création. Par exemple, le nom abrégé de Simple JSP est simplejsp. Vous pouvez obtenir le nom court d'une application à partir de la page des détails.

  • Si le nom court est root, vous pouvez utiliser http://public_DNS/appname.jsp ou http://public_IP/appname.jsp.

  • Sinon, vous pouvez utiliser http://public_DNS/app_shortname/appname.jsp ou http://public_IP/app_shortname/appname.jsp.

Si vous avez spécifié un domaine pour l'application, URL c'esthttp://domain/appname.jsp.

L'URLexemple serait quelque chose commehttp://192.0.2.0/simplejsp/simplejsp.jsp.

Si vous souhaitez déployer plusieurs applications sur la même instance, vous ne devez pas utiliser root comme nom court. Cela peut provoquer URL des conflits qui empêchent l'application de fonctionner correctement. Au lieu de cela, attribuez un nom de domaine différent à chaque application.

Déploiement d'une JSP application avec une base de données principale

JSPles pages peuvent utiliser un JDBC DataSource objet pour se connecter à une base de données principale. Vous créez et déployez une telle application à l'aide de la procédure de la section précédente, avec une étape supplémentaire pour configurer la connexion.

La JSP page suivante indique comment se connecter à un DataSource objet.

<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>

AWS OpsWorks Stacks crée et initialise l'DataSourceobjet, le lie à un nom logique et enregistre le nom auprès d'un service de dénomination Java Naming and Directory Interface (JNDI). Le nom logique complet est java:comp/env/user-assigned-name. Vous devez spécifier la partie du nom attribuée par l'utilisateur en ajoutant des JSON attributs personnalisés à la configuration de la pile et des attributs de déploiement pour définir l'['opsworks_java']['datasources']attribut, comme décrit ci-dessous.

Pour déployer une JSP page qui se connecte à une base de SQL données My database
  1. Créez une pile avec une couche Java App Server, ajoutez des instances 24 h/24 et 7 j/7 à chaque couche, puis démarrez-la.

  2. Ajoutez une couche base de données à la pile. Les détails dépendent de la base de données que vous utilisez.

    Pour utiliser une SQL instance My comme exemple, ajoutez une SQL couche My à la pile, ajoutez une instance 24 h/24 et 7 j/7 à la couche et démarrez-la.

    Pour utiliser une instance Amazon RDS (MySQL) dans l'exemple, procédez comme suit :

    • Spécifiez un moteur My SQL database pour l'instance.

    • Assignez le AWS - OpsWorks -DB-Master-Server (security_group_id) et AWS - OpsWorks -Java-App-Server (security_group_id) groupes de sécurité de l'instance. AWS OpsWorks Stacks crée ces groupes de sécurité pour vous lorsque vous créez votre première pile dans la région.

    • Créez une base de données nommée simplejspdb.

    • Assurez-vous que le nom et le mot de passe de l'utilisateur principal ne contiennent pas le caractère & ou autres caractères susceptibles d'entraîner une erreur Tomcat.

      Au démarrage, Tomcat doit notamment analyser le fichier de contexte de l'application Web, qui est un XML fichier qui inclut le mot de passe principal et le nom d'utilisateur. Si l'une des chaînes inclut un & caractère, l'XMLanalyseur le traite comme une XML entité malformée et lance une exception d'analyse qui empêche Tomcat de démarrer. Pour plus d'informations sur le fichier de contexte d'application web, consultez tomcat::context.

    • Ajoutez un My SQL driver à la couche Java App Server.

    • Enregistrez l'RDSinstance auprès de votre stack.

    Pour plus d'informations sur l'utilisation des RDS instances Amazon avec AWS OpsWorks Des piles, tu voisAmazon RDS Service Layer.

  3. Copiez l'exemple de code dans un fichier nommé simplejspdb.jsp, placez le fichier dans un dossier nommé simplejspdb et créez une archive .zip du dossier. Les noms sont arbitraires ; vous pouvez utiliser n'importe quels noms de fichier ou de dossier de votre choix. Vous pouvez également utiliser d'autres types d'archives, y compris gzip, bzip2 et tarball. Pour déployer plusieurs JSP pages, incluez-les dans la même archive. Pour plus d'informations sur le déploiement d'applications à partir d'autres types de référentiel, consultez Source de l'application.

  4. Téléchargez l'archive dans un compartiment Amazon S3 et rendez le fichier public. Copiez les fichiers URL pour une utilisation ultérieure. Pour plus d'informations sur la création de compartiments et le chargement des fichiers, consultez Mise en route avec Amazon Simple Storage Service.

  5. Ajoutez une application à la pile et spécifiez les paramètres suivants :

    • NomSimpleJSPDB

    • Type d'applicationJava

    • Type de source de donnéesOpsWorks(pour une SQL instance My) ou RDS(pour une RDS instance Amazon).

    • Instance de base de données : l'SQLinstance My que vous avez créée précédemment, généralement nommée db-master1 (mysql), ou l'RDSinstance Amazon, qui sera nommée DB_instance_name (mysql).

    • Nom de la base de donnéessimplejspdb.

    • Type de référentielHttp Archive

    • Référentiel URL : l'Amazon S3 URL de votre fichier d'archive.

    Utilisez les valeurs par défaut pour les paramètres restants, puis cliquez sur Ajouter une application pour créer l'application.

  6. Ajoutez les JSON attributs personnalisés suivants aux attributs de configuration de la pile, où simplejspdb est le nom abrégé de l'application.

    { "opsworks_java": { "datasources": { "simplejspdb": "jdbc/mydb" } } }

    AWS OpsWorks Stacks utilise ce mappage pour générer un fichier de contexte contenant les informations de base de données nécessaires.

    Pour plus d'informations sur la façon d'ajouter des JSON attributs personnalisés aux attributs de configuration de la pile, consultezUtilisation de Custom JSON.

  7. Déployez l'application sur l'instance Java App Server.

Vous pouvez désormais utiliser les applications URL pour afficher l'application. Pour une description de la construction duURL, voirDéploiement d'une JSP application.

L'URLexemple serait quelque chose commehttp://192.0.2.0/simplejspdb/simplejspdb.jsp.

Note

L'attribut datasources peut contenir plusieurs attributs. Chaque attribut est nommé avec un nom court d'application et défini avec la partie appropriée, assignée par l'utilisateur, d'un nom logique. Si vous avez plusieurs applications, vous pouvez utiliser des noms logiques distincts, ce qui nécessite une personnalisation similaire à JSON ce qui suit.

{ "opsworks_java": { "datasources": { "myjavaapp": "jdbc/myappdb", "simplejsp": "jdbc/myjspdb", ... } } }