Distribuzione di app Java - AWS OpsWorks

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Distribuzione di app Java

Importante

Il AWS OpsWorks Stacks il servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disattivato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il AWS Support Squadra su AWS Re:post o tramite AWS Supporto Premium.

I seguenti argomenti descrivono come distribuire app su istanze di un livello di Java App Server. Gli esempi riguardano le JSP app, ma è possibile utilizzare essenzialmente la stessa procedura per installare altri tipi di app Java.

È possibile distribuire JSP pagine da uno qualsiasi degli archivi supportati. Se desideri distribuire WAR file, tieni presente che AWS OpsWorks Stacks estrae automaticamente WAR i file distribuiti da Amazon S3 o da un HTTP archivio, ma non da un repository Git o Subversion. Se vuoi usare Git o Subversion per WAR i file, puoi fare una delle seguenti operazioni:

  • Archivia l'archivio estratto nel repository.

  • Archivia il WAR file nel repository e usa un hook di distribuzione Chef per estrarre l'archivio, come descritto nell'esempio seguente.

Puoi utilizzare gli hook di distribuzione Chef per eseguire applicazioni Ruby fornite dall'utente su un'istanza in una qualsiasi delle quattro fasi di implementazione. Il nome dell'applicazione determina la fase. Di seguito è riportato un esempio di applicazione Ruby denominatabefore_migrate.rb, che estrae un WAR file che è stato distribuito da un repository Git o Subversion. Il nome associa l'applicazione all'hook di distribuzione Checkout affinché venga eseguito all'inizio dell'operazione di distribuzione, dopo la verifica del codice, ma prima della migrazione. Per ulteriori informazioni su come usare questo esempio, consulta Utilizzo degli hook di distribuzione di 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
Nota

Quando si distribuisce un aggiornamento a un'JSPapp, Tomcat potrebbe non riconoscere l'aggiornamento e continuare invece a eseguire la versione esistente dell'app. Ciò può accadere, ad esempio, se si distribuisce l'app come file.zip che contiene solo una pagina. JSP Per garantire che Tomcat esegua la versione più recente distribuita, la directory principale del progetto deve includere una INF directory WEB - che contiene un file. web.xml Un file web.xml può includere vari tipi di contenuto, ma quello riportato di seguito è sufficiente a garantire che Tomcat riconosca gli aggiornamenti ed esegua la versione dell'app attualmente distribuita. Non devi modificare la versione per ogni aggiornamento. Tomcat riconoscerà l'aggiornamento anche se la versione non è cambiata.

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

Distribuzione di un'app JSP

Per distribuire un'JSPapp, specifica il nome e le informazioni del repository. Facoltativamente, puoi anche specificare domini e impostazioni. SSL Per ulteriori informazioni su come creare un'app, consulta Aggiunta di app. La procedura seguente mostra come creare e distribuire una JSP pagina semplice da un archivio pubblico di Amazon S3. Per informazioni su come utilizzare altri tipi di repository, inclusi gli archivi privati di Amazon S3, consulta. Origine dell'applicazione

L'esempio seguente mostra la JSP pagina, che mostra semplicemente alcune informazioni di sistema.

<%@ 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>
Nota

La procedura seguente presuppone una buona familiarità con le nozioni di base di creazione degli stack, di aggiunta ai livelli e così via. Se sei nuovo AWS OpsWorks Stacks, dovresti prima vederloNozioni di base sugli stack Linux Chef 11.

Per distribuire una JSP pagina da un archivio Amazon S3
  1. Crea uno stack con un livello Java App Server, aggiungi un'istanza 24 ore su 24, 7 giorni su 7 al livello e avvialo.

  2. Copiare il codice in un file denominato simplejsp.jsp, inserire il file in una cartella chiamata simplejsp e creare un archivio .zip della cartella. I nomi sono arbitrari. È possibile utilizzare qualsiasi nome file o cartella. Puoi anche usare altri tipi di archivio, tra cui gzip, bzip2, tarball o file Java. WAR Nota che AWS OpsWorks Stacks non supporta archivi tar non compressi. Per distribuire più JSP pagine, includile nello stesso archivio.

  3. Carica l'archivio in un bucket Amazon S3 e rendi pubblico il file. Copia i file URL per utilizzarli in un secondo momento. Per ulteriori informazioni su come creare bucket e caricare file, consulta Nozioni di base su Amazon Simple Storage Service.

  4. Aggiungere un'app allo stack e specificare le impostazioni seguenti:

    • Nome: SimpleJSP

    • App type (Tipo di app) - Java

    • Repository type (Tipo di repository) - Http Archive

    • Repository URL: l'Amazon URL S3 del tuo file di archivio.

    Utilizzare i valori predefiniti delle impostazioni restanti e fare clic su Add App (Aggiungi app) per creare l'app.

  5. Distribuisci l'app nell'istanza di Java App Server.

Ora puoi andare all'app URL e visualizzarla. Se non hai specificato un dominio, puoi crearne uno URL utilizzando l'indirizzo IP pubblico dell'istanza o il suo DNS nome pubblico. Per ottenere l'indirizzo IP pubblico o il DNS nome pubblico di un'istanza, vai a AWS OpsWorks Console Stacks e fai clic sul nome dell'istanza nella pagina Istanze per aprire la pagina dei dettagli.

Il resto URL dipende dal nome breve dell'app, che è un nome minuscolo AWS OpsWorks Stacks viene generato dal nome dell'app specificato al momento della creazione dell'app. Ad esempio, il nome breve di Simple JSP è simplejsp. Puoi ottenere il nome breve di un'app dalla relativa pagina dei dettagli.

  • Se il nome breve è root, puoi utilizzare http://public_DNS/appname.jsp o http://public_IP/appname.jsp.

  • In alternativa, puoi utilizzare http://public_DNS/app_shortname/appname.jsp o http://public_IP/app_shortname/appname.jsp.

Se hai specificato un dominio per l'app, èURL. http://domain/appname.jsp

Ad URL esempio, potrebbe essere qualcosa del generehttp://192.0.2.0/simplejsp/simplejsp.jsp.

Se desideri distribuire più app nella stessa istanza, non devi usare root come nome breve. Ciò può causare URL conflitti che impediscono il corretto funzionamento dell'app. Al contrario, assegna un altro nome di dominio a ogni app.

Distribuzione di un'JSPapp con un database di back-end

JSPle pagine possono utilizzare un JDBC DataSource oggetto per connettersi a un database di back-end. Puoi creare e distribuire tale app utilizzando la procedura nella sezione precedente, con un passaggio aggiuntivo per configurare la connessione.

La JSP pagina seguente mostra come connettersi a un DataSource oggetto.

<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 crea e inizializza l'DataSourceoggetto, lo associa a un nome logico e registra il nome con un servizio di denominazione Java Naming and Directory Interface (). JNDI Il nome logico completo è java:comp/env/user-assigned-name. È necessario specificare la parte del nome assegnata dall'utente aggiungendo JSON attributi personalizzati alla configurazione dello stack e agli attributi di distribuzione per definire l'attributo, come descritto di seguito. ['opsworks_java']['datasources']

Per distribuire una JSP pagina che si connette a un database My SQL
  1. Crea uno stack con un livello Java App Server, aggiungi istanze 24 ore su 24, 7 giorni su 7 a ciascun livello e avvialo.

  2. Aggiungere un livello di database allo stack. I dettagli dipendono dal database utilizzato.

    Per utilizzare un'SQListanza My come esempio, aggiungete un SQL livello My allo stack, aggiungete un'istanza 24/7 al layer e avviatelo.

    Per utilizzare un'istanza Amazon RDS (MySQL) per l'esempio:

    • Specificate un motore di SQL database My per l'istanza.

    • Assegna il AWS - OpsWorks -DB-master-server (security_group_id) e - -Java-App-Server (AWSOpsWorkssecurity_group_id) gruppi di sicurezza sull'istanza. AWS OpsWorks Stacks crea questi gruppi di sicurezza per te quando crei il tuo primo stack nella regione.

    • Creare un database denominato simplejspdb.

    • Verificare che il nome utente e la password master non contengano & o altri caratteri che potrebbero causare un errore di Tomcat.

      In particolare, durante l'avvio Tomcat deve analizzare il file di contesto dell'app Web, che è un XML file che include la password principale e il nome utente. Se una delle due stringhe include un & carattere, il XML parser lo considera XML un'entità non valida e genera un'eccezione di analisi che impedisce l'avvio di Tomcat. Per ulteriori informazioni sul file di contesto dell'app Web, consulta tomcat::context.

    • Aggiungi un SQL driver My al livello Java App Server.

    • Registra l'RDSistanza nel tuo stack.

    Per ulteriori informazioni su come utilizzare le RDS istanze Amazon con AWS OpsWorks Stacks, vedi. Livello RDS di servizio Amazon

  3. Copiare il codice di esempio in un file denominato simplejspdb.jsp, inserire il file in una cartella chiamata simplejspdb e creare un archivio .zip della cartella. I nomi sono arbitrari. È possibile utilizzare qualsiasi nome file o cartella. È inoltre possibile utilizzare altri tipi di archivio, tra cui i file gzip, bzip2 o tarball. Per distribuire più JSP pagine, includile nello stesso archivio. Per informazioni su come distribuire app da altri tipi di repository, consulta Origine dell'applicazione.

  4. Carica l'archivio in un bucket Amazon S3 e rendi pubblico il file. Copia i file URL per utilizzarli in un secondo momento. Per ulteriori informazioni su come creare bucket e caricare file, consulta Nozioni di base su Amazon Simple Storage Service.

  5. Aggiungere un'app allo stack e specificare le impostazioni seguenti:

    • Nome: SimpleJSPDB

    • App type (Tipo di app) - Java

    • Tipo di origine dati: OpsWorks(per un'SQListanza My) o RDS(per un'RDSistanza Amazon).

    • Istanza di database: l'SQListanza My creata in precedenza, che in genere si chiama db-master1 (mysql), o l'RDSistanza Amazon, che verrà denominata DB_instance_name (mysql).

    • Database name (Nome del database) - simplejspdb.

    • Repository type (Tipo di repository) - Http Archive

    • Repository URL: l'Amazon URL S3 del tuo file di archivio.

    Utilizzare i valori predefiniti delle impostazioni restanti e fare clic su Add App (Aggiungi app) per creare l'app.

  6. Aggiungi i seguenti JSON attributi personalizzati agli attributi di configurazione dello stack, dove simplejspdb è il nome breve dell'app.

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

    AWS OpsWorks Stacks utilizza questa mappatura per generare un file di contesto con le informazioni necessarie sul database.

    Per ulteriori informazioni su come aggiungere JSON attributi personalizzati agli attributi di configurazione dello stack, vedere. Utilizzo di Custom JSON

  7. Distribuisci l'app nell'istanza di Java App Server.

Ora puoi usare le app URL per visualizzarle. Per una descrizione di come costruire ilURL, vediDistribuzione di un'app JSP.

L'URLesempio potrebbe essere qualcosa del generehttp://192.0.2.0/simplejspdb/simplejspdb.jsp.

Nota

L'attributo datasources può contenere più attributi. Ogni attributo viene denominato con il nome breve di un'app e impostato sulla parte appropriata, assegnata dall'utente, di un nome logico. Se disponi di più app, puoi utilizzare nomi logici separati, il che richiede una JSON personalizzazione come la seguente.

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