

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

# Creazione del primo stack Node.js
<a name="gettingstarted-node"></a>

**Importante**  
Il AWS OpsWorks Stacks 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 Supporto AWS Team su [AWS re:post](https://repost.aws/) o tramite Premium [AWS Support](https://aws.amazon.com/support).

Questo esempio illustra come creare uno stack Linux che supporta un server di applicazioni Node.js e come distribuire un'applicazione semplice. Lo stack è composto dai componenti seguenti:
+ Un [livello di App Server Node.js con due istanze](workinglayers-node.md)
+ Un sistema di bilanciamento [del carico Elastic Load Balancing](layers-elb.md) per distribuire il traffico verso le istanze del server delle applicazioni
+ Un livello di servizio [Amazon Relational Database Service (Amazon RDS)](#gettingstarted-node-next) che fornisce un database di backend

**Topics**
+ [Prerequisiti](#gettingstarted-node-start)
+ [Implementazione dell'applicazione](#gettingstarted-node-app)
+ [Creazione del server di database e di un sistema di bilanciamento del carico](#gettingstarted-node-create-db)
+ [Creazione dello stack](#gettingstarted-node-stack)
+ [Distribuzione dell'applicazione](#gettingstarted-node-deploy)
+ [Come procedere](#gettingstarted-node-next)

## Prerequisiti
<a name="gettingstarted-node-start"></a>

Per questa procedura guidata sono validi i requisiti riportati di seguito:
+ Hai un account AWS e una conoscenza di base di come usare OpsWorks Stacks.

  Se non conosci OpsWorks Stacks o AWS, impara le nozioni di base completando il tutorial introduttivo in. [Nozioni di base sugli stack Linux Chef 11](gettingstarted.md)
+ Disponi di conoscenze di base relative alle procedure necessarie per implementare un'applicazione Node.js.

  Se sei un utente principiante di Node.js, per approfondire le nozioni di base, completa un tutorial introduttivo, ad esempio quello relativo ai [nodi](http://chimera.labs.oreilly.com/books/1234000001808/index.html).
+ Hai già creato almeno uno stack nella regione AWS che prevedi di utilizzare per questo esempio.

  Quando crei il primo stack in una regione, OpsWorks Stacks crea un gruppo di sicurezza Amazon Elastic Compute Cloud (Amazon EC2) per ogni tipo di livello. Questi gruppi di sicurezza sono necessari per creare l'istanza del database Amazon RDS (DB). Se non conosci OpsWorks Stacks, ti consigliamo di utilizzare per questo esempio la stessa regione che hai usato quando hai seguito il tutorial. [Nozioni di base sugli stack Linux Chef 11](gettingstarted.md) Se vuoi utilizzare una nuova regione, crea un nuovo stack nella regione. Non è necessario che lo stack includa livelli o istanze. Non appena crei lo stack, OpsWorks Stacks aggiunge automaticamente un set di gruppi di sicurezza alla regione. 
+ Dovrai creare lo stack in un [VPC predefinito](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html).

  Puoi usare EC2 -Classic per questa procedura dettagliata, ma alcuni dettagli differiranno leggermente. Ad esempio, con EC2 -Classic, si specifica la zona di disponibilità (AZ) di un'istanza anziché la relativa sottorete.
+ Il tuo utente IAM dispone delle autorizzazioni di accesso completo per Stacks. OpsWorks 

  Per motivi di sicurezza, ti consigliamo di non utilizzare le credenziali root del tuo account per questa procedura guidata. Invece, crea un utente con autorizzazioni di accesso completo a OpsWorks Stacks e usa tali credenziali con Stacks. OpsWorks Per ulteriori informazioni, consulta [Creazione di un utente amministratore ](opsworks-security-users-manage-admin.md).

## Implementazione dell'applicazione
<a name="gettingstarted-node-app"></a>

Questa procedura dettagliata utilizza una semplice applicazione [Express](http://expressjs.com/) che si connette all'istanza DB di Amazon RDS ed elenca i database dell'istanza. 

Per implementare l'applicazione, crea una directory denominata `nodedb` in una posizione comoda sulla workstation e aggiungi i seguenti tre file. 

**Topics**
+ [Descrittore del pacchetto](#w2ab1c14c71b9c11c13b8)
+ [File di layout](#w2ab1c14c71b9c11c13c10)
+ [File di codice](#w2ab1c14c71b9c11c13c12)

### Descrittore del pacchetto
<a name="w2ab1c14c71b9c11c13b8"></a>

Per creare il descrittore del pacchetto dell'applicazione, aggiungi un file denominato `package.json` on i seguenti contenuti nella directory `nodedb`. `package.json` è obbligatorio per le applicazioni Express e deve trovarsi nella directory radice dell'applicazione. 

```
{
  "name": "Nodejs-DB",
  "description": "Node.js example application",
  "version": "0.0.1",
  "dependencies": {
    "express": "*",
    "ejs": "*",
    "mysql": "*"
  }
}
```

Questo descrittore `package.json` è un esempio minimo. Definisce gli attributi obbligatori `name` e `version` ed elenca i pacchetti dipendenti:
+ `express` fa riferimento al pacchetto [Express](http://expressjs.com/).
+ `ejs` fa riferimento al pacchetto [EJS](http://www.embeddedjs.com/), utilizzato dall'applicazione per inserire testo in un file di layout HTML.
+ `mysql` fa riferimento al pacchetto [node-mysql](https://github.com/felixge/node-mysql), utilizzato dall'applicazione per connettersi all'istanza RDS.

Per ulteriori informazioni sui file dei descrittori dei pacchetti, consulta [package.json](https://docs.npmjs.com/cli/v9/configuring-npm/package-json). 

### File di layout
<a name="w2ab1c14c71b9c11c13c10"></a>

Per creare il file di layout dell'applicazione, aggiungi una directory `views` alla directory `nodedb`, quindi aggiungi un file a `views` denominato `index.html` con i seguenti contenuti:

```
<!DOCTYPE html>
<html>
<head>
  <title>AWS Opsworks Node.js Example</title>
</head>
<body>
  <h1>AWS OpsWorks Node.js Example</h1>
    <p>Amazon RDS Endpoint: <i><%= hostname %></i></p>
    <p>User: <i><%= username %></i></p>
    <p>Password: <i><%= password %></i></p>
    <p>Port: <i><%= port %></i></p>
    <p>Database: <i><%= database %></i></p>

    <p>Connection: <%= connectionerror %></p>
    <p>Databases: <%= databases %></p>
</body>
</html>
```

Per questo esempio, il file di layout è un semplice documento HTML che mostra alcuni dati di Amazon RDS. Ogni elemento `<%= ... =>` rappresenta il valore di una variabile definita nel file di codice dell'applicazione. Quest'ultimo file verrà creato in seguito.

### File di codice
<a name="w2ab1c14c71b9c11c13c12"></a>

Per creare il file di codice dell'applicazione, aggiungi un file `server.js` alla directory `nodedb` con i seguenti contenuti.

**Importante**  
Con OpsWorks Stacks, il file di codice principale di un'applicazione Node.js deve avere un nome `server.js` e trovarsi nella cartella principale dell'applicazione. 

```
var express = require('express');
var mysql = require('mysql');
var dbconfig = require('opsworks'); //[1] Include database connection data
var app = express();
var outputString = "";

app.engine('html', require('ejs').renderFile);

//[2] Get database connection data
app.locals.hostname = dbconfig.db['host'];
app.locals.username = dbconfig.db['username'];
app.locals.password = dbconfig.db['password'];
app.locals.port = dbconfig.db['port'];
app.locals.database = dbconfig.db['database'];
app.locals.connectionerror = 'successful';
app.locals.databases = '';

//[3] Connect to the Amazon RDS instance
var connection = mysql.createConnection({
    host: dbconfig.db['host'],
    user: dbconfig.db['username'],
    password: dbconfig.db['password'],
    port: dbconfig.db['port'],
    database: dbconfig.db['database']
});

connection.connect(function(err)
{
    if (err) {
        app.locals.connectionerror = err.stack;
        return;
    }
});

// [4] Query the database
connection.query('SHOW DATABASES', function (err, results) {
    if (err) {
        app.locals.databases = err.stack;
    }
    
    if (results) {
        for (var i in results) {
            outputString = outputString + results[i].Database + ', ';
        }
        app.locals.databases = outputString.slice(0, outputString.length-2);
    }
});

connection.end();

app.get('/', function(req, res) {
    res.render('./index.html');
});

app.use(express.static('public'));

//[5] Listen for incoming requests
app.listen(process.env.PORT);
```

Nell'esempio vengono visualizzate le informazioni sulla connessione al database, viene eseguita una query sul server di database e vengono visualizzati i database del server. Puoi generalizzare in modo da interagire con il database in base alle esigenze. Le seguenti note si riferiscono ai commenti numerati nel codice precedente.

**[1] Include database connection data (Inclusione dei dati di connessione al database)**  
Questa istruzione `require` include i dati di connessione al database. Come descritto più avanti, quando si collega un'istanza di database a un'app, OpsWorks Stacks inserisce i dati di connessione in un file denominato`opsworks.js`, simile al seguente:  

```
exports.db = {
  "host":"nodeexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com",
  "database":"nodeexampledb",
  "port":3306,
  "username":"opsworksuser",
  "password":"your_pwd",
  "reconnect":true,
  "data_source_provider":"rds",
  "type":"mysql"}
```
`opsworks.js` si trova nella directory `shared/config` dell'applicazione, ovvero `/srv/www/app_shortname/shared/config`. Tuttavia, OpsWorks Stacks inserisce un collegamento simbolico `opsworks.js` nella directory principale dell'applicazione, quindi puoi includere l'oggetto usando just. `require 'opsworks'` 

**[2] Get database connection data (Recupero dei dati di connessione al database)**  
Questo set di istruzioni mostra i dati di connessione di `opsworks.js` mediante l'assegnazione dei valori dell'oggetto `db` a un set di proprietà `app.locals`, ciascuna delle quali è mappata a uno degli elementi <%= ... %> nel file `index.html`. Nel documento visualizzato, gli elementi <%= ... %> sono sostituiti dai corrispondenti valori delle proprietà.

**[3] Connect to the Amazon RDS instance (Connessione all'istanza Amazon RDS)**  
L'esempio utilizza `node-mysql` per accedere al database. Per connettersi al database, l'esempio crea un oggetto `connection` mediante l'invio dei dati di connessione a `createConnection` e quindi mediante l'esecuzione di una chiamata a `connection.connect` per stabilire la connessione.

**[4] Query the database (Esecuzione di query sul database)**  
Dopo aver stabilito una connessione, l'esempio esegue una chiamata a `connection.query` per eseguire query sul database. Questo esempio effettua semplicemente l'esecuzione di query per i nomi dei database del server. `query` restituisce una matrice di oggetti `results`, uno per ogni database, con il nome del database assegnato alla proprietà `Database`. L'esempio concatena i nomi e li assegna ad `app.locals.databases,` che visualizza l'elenco nella pagina HTML visualizzata.  
Per questo esempio, ci sono cinque database, il `nodeexampledb` database che hai specificato quando hai creato l'istanza RDS e altri quattro che vengono creati automaticamente da Amazon RDS.

**[5] Listen for incoming requests (Ascolto delle richieste in arrivo)**  
L'istruzione finale rimane in ascolto delle richieste in entrata su una porta specifica. Non devi specificare un valore di porta esplicito. Quando aggiungi l'app allo stack, specifichi se l'applicazione supporta le richieste HTTP o HTTPS. OpsWorks Stacks imposta quindi la variabile di `PORT` ambiente su 80 (HTTP) o 443 (HTTPS) e puoi utilizzare quella variabile nell'applicazione.  
È possibile ascoltare su altre porte, ma il gruppo di sicurezza integrato del livello di Node.js App Server, **AWS- OpsWorks -NodeJS-App-Server**, consente il traffico utente in entrata solo verso le porte 80, 443 e 22 (SSH). [Per consentire il traffico utente in entrata verso altre porte, [crea un gruppo di sicurezza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html) con regole in entrata appropriate e assegnalo al livello Node.js App Server.](workinglayers-basics-edit.md#workinglayers-basics-edit-security) Non modificare le regole in entrata modificando il gruppo di sicurezza predefinito. Ogni volta che crei uno stack, OpsWorks Stacks sovrascrive i gruppi di sicurezza integrati con le impostazioni standard, quindi tutte le modifiche apportate andranno perse.

**Nota**  
Puoi associare variabili di ambiente personalizzate all'applicazione quando [crei](workingapps-creating.md#workingapps-creating-environment) o [aggiorni](workingapps-editing.md) l'app. Puoi anche trasferire i dati all'applicazione utilizzando il formato JSON personalizzato e una ricetta personalizzata. Per ulteriori informazioni, consulta [Passaggio di dati alle applicazioni](apps-data.md).

## Creazione del server di database e di un sistema di bilanciamento del carico
<a name="gettingstarted-node-create-db"></a>

Questo esempio utilizza il server di database Amazon RDS e le istanze di bilanciamento del carico Elastic Load Balancing. Devi creare ogni istanza separatamente e quindi integrarla nello stack. Questa sezione descrive come creare nuove istanze di database e nuove istanze del sistema di bilanciamento del carico. Puoi anche utilizzare le istanze esistenti, ma ti consigliamo di fare riferimento alla procedura per verificare che tali istanze siano state configurate correttamente.

Di seguito viene descritto come creare un'istanza di database RDS con una configurazione minima sufficiente per questo esempio. Per ulteriori informazioni, consultare la [Guida per l'utente di Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html).

**Per creare un'istanza di database RDS**

1. 

**Apri la console.**

   Apri la [console Amazon RDS](https://console.aws.amazon.com/rds/) e imposta la regione su Stati Uniti occidentali (Oregon). Nel riquadro di navigazione, scegliere **RDS Dashboard (Pannello di controllo RDS)**, quindi selezionare **Launch DB Instance (Avvia istanza database)**.

1. 

**Specificare il nome del motore del database.**

   Scegliere **MySQL Community Edition** come motore di database.

1. 

**Non abilitare l'implementazione Multi-AZ.**

   Scegliere **No, this instance... (No, questa istanza...)** e quindi scegliere **Next (Avanti)**. In questo esempio non è necessaria l'implementazione Multi-AZ.

1. 

**Configurare le impostazioni di base.**

   Nella pagina **DB Instance Details (Dettagli istanza database)**, specificare le seguenti impostazioni:
   + **DB Instance Class (Classe di istanza database)**: **db.t2.micro**
   + **Multi-AZ deployment (Implementazione Multi-AZ)**: **No**
   + **Allocated Storage (Storage allocato)**: **5** GB
   + **DB Instance Identifier (Identificatore istanze DB)**: **nodeexample**
   + **Master Username (Nome utente master)**: **opsworksuser**.
   + **Master Password (Password master)**: password personalizzata

   Annotare l'identificatore dell'istanza, il nome utente e la password per un utilizzo successivo, accettare le impostazioni predefinite per le altre opzioni, quindi scegliere **Next (Avanti)**.

1. 

**Configurare le impostazioni avanzate.**

   Nella pagina **Configure Advanced Settings (Configura impostazioni avanzate)**, specificare le seguenti impostazioni:
   + **Database Name (Nome del database)**: **nodeexampledb**
   + **Gruppi di sicurezza DB: AWS** **- OpsWorks -DB-master-Server**
**Nota**  
Il gruppo di sicurezza **AWS- OpsWorks -DB-Master-Server** consente solo alle istanze dello stack di accedere al database. Se si desidera accedere al database direttamente, collegare un gruppo di sicurezza aggiuntivo all'istanza di database RDS con le regole in entrata adeguate. Per ulteriori informazioni, consulta [Gruppi di sicurezza Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html). È inoltre possibile controllare l'accesso inserendo l'istanza in un VPC. Per ulteriori informazioni, consulta [Esecuzione di uno stack in un VPC](workingstacks-vpc.md).

   Annotare il nome del database per un utilizzo successivo, accettare i valori predefiniti delle altre impostazioni, quindi scegliere **Launch DB Instance (Avvia istanza database)**.

La procedura seguente descrive come creare un sistema di bilanciamento del carico Elastic Load Balancing per questo esempio. Per ulteriori informazioni, consulta la [Guida per l’utente di Elastic Load Balancing](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html).

**Per creare il sistema di bilanciamento del carico**

1. 

**Apri la EC2 console Amazon.**

   Apri la [ EC2 console Amazon](https://console.aws.amazon.com/ec2/) e assicurati che la regione sia impostata su Stati Uniti occidentali (Oregon). Nel riquadro di navigazione sinistro, selezionare **Load Balancers (Sistemi di bilanciamento del carico)**, quindi **Create Load Balancer (Crea sistema di bilanciamento del carico)**.

1. 

**Definire il sistema di bilanciamento del carico.**

   Nella pagina **Define Load Balancer (Definisci sistema di bilanciamento del carico)**, specificare le seguenti impostazioni.
   + **Nome**: **Node-LB**
   + **Crea LB Inside**: **il mio VPC predefinito**

   Accettare le impostazioni predefinite per le altre opzioni e fare clic su **Next (Avanti)**.

1. 

**Assegnare i gruppi di sicurezza.**

   Nella pagina **Assign Security Groups (Assegna i gruppi di sicurezza)**, specificare i seguenti gruppi: 
   + **default VPC security group (gruppo di sicurezza VPC predefinito)**
   + **AWS- OpsWorks -NodeJS-App-Server**

   Scegli **Next (Successivo)**. Nella pagina **Configure Security Settings (Configura impostazioni di sicurezza)** scegliere **Next (Avanti)**. Non è necessario disporre di un listener sicuro in questo esempio.

1. 

**Configurare il controllo dello stato.**

   Nella pagina **Configure Health Check (Configura controllo dello stato)**, impostare **Ping Path (Percorso ping)** su **/** e accettare i valori predefiniti per le altre impostazioni. Scegli **Next (Successivo)**. ****Nella pagina Aggiungi istanze, scegli Avanti. EC2 **** Nella pagina **Aggiungi tag**, scegli **Rivedi e crea**. OpsWorks Stacks si occupa dell'aggiunta di EC2 istanze al load balancer e per questo esempio non avrai bisogno di tag.

1. 

**Creare il sistema di bilanciamento del carico.**

   Nella pagina **Review (Rivedi)**, scegliere **Create (Crea)** per creare il sistema di bilanciamento del carico.

## Creazione dello stack
<a name="gettingstarted-node-stack"></a>

A questo punto disponi di tutti i componenti necessari per creare lo stack.

**Per creare lo stack**

1. 

**Accedi alla console Stacks. OpsWorks**

   Effettuare l'accesso alla [console OpsWorks Stacks](https://console.aws.amazon.com/opsworks/) e scegliere **Add Stack (Aggiungi stack)**.

1. 

**Creare lo stack.**

   Per creare un nuovo stack, scegliere **Chef 11 stack (Stack Chef 11)**, quindi specificare le seguenti impostazioni.
   +  – **NodeStack**
   + **Regione**: **Stati Uniti occidentali (Oregon)**

     Puoi creare uno stack in qualsiasi regione AWS, ma per i tutorial consigliamo Stati Uniti occidentali (Oregon).

   Selezionare **Add Stack (Aggiungi stack)**. Per ulteriori informazioni sulle impostazioni di configurazione dello stack, consulta [Creare un nuovo stack](workingstacks-creating.md).

1. 

**Aggiungi un livello di App Server Node.js con un sistema di bilanciamento del carico collegato.**

   Nella **NodeStack**pagina, scegliete **Aggiungi un layer**, quindi specificate le seguenti impostazioni:
   + **Tipo di livello**: **Node.js App Server**
   + **Elastic Load Balancer** **— Node-LB**

   Accettare i valori predefiniti per le altre impostazioni, quindi scegliere **Add Layer (Aggiungi livello)**. 

1. 

**Aggiungere istanze al livello e avviarle.**

   Nel riquadro di navigazione, scegliere **Instances (Istanze)**, quindi aggiungere due istanze al livello del server di applicazioni Rails, come descritto di seguito.

   1. **In **Node.js App Server**, scegli Aggiungi istanza.**

      Impostare **Size (Dimensione)** su **t2.micro**, accettare i valori predefiniti per le altre impostazioni, quindi scegliere **Add Instance (Aggiungi istanza)**.

   1. Scegliere **\$1Instance (\$1Istanza)**, quindi aggiungere una seconda istanza **t2.micro** al livello in una sottorete diversa.

      Ciò inserisce l'istanza in una zona di disponibilità separata.

   1. Scegliere **Add instance (Aggiungi istanza)**.

   1. Per avviare entrambe le istanze, scegliere **Start All Instances (Avvia tutte le istanze)**.

   È stato assegnato un sistema di bilanciamento del carico Elastic Load Balancing a questo layer. Quando un'istanza entra o esce dallo stato online, OpsWorks Stacks registra o annulla automaticamente la registrazione dell'istanza con il sistema di bilanciamento del carico.
**Nota**  
Per uno stack di produzione, consigliamo di distribuire le istanze del server delle applicazioni su più istanze. AZs Se gli utenti non possono connettersi a una zona di disponibilità, il sistema di bilanciamento del carico instrada il traffico in entrata alle istanze nelle zone rimanenti e il sito continuerà a funzionare.

1. 

**Registrare l'istanza di database RDS con lo stack.**

   Nel riquadro di navigazione, scegliere **Resources (Risorse)** e registrare l'istanza di database RDS con lo stack, come segue.

   1. Scegliere la scheda **RDS**, quindi scegliere **Show Unregistered RDS DB instances (Mostra istanze database RDS non registrate)**.

   1. Scegliere l'istanza **nodeexampledb**, quindi specificare le impostazioni seguenti:
      + **Utente**: il nome utente principale specificato al momento della creazione dell'istanza, per questo esempio. **opsworksuser**.
      + **Password**: la password principale specificata al momento della creazione dell'istanza.

   1. Scegli **Register with Stack** per aggiungere l'istanza DB RDS allo stack come livello di servizio [Amazon RDS](workinglayers-db-rds.md).
**avvertimento**  
OpsWorks Stacks non convalida i valori **User** o **Password**, li passa semplicemente all'applicazione. Se questi valori non vengono immessi correttamente, l'applicazione non è in grado di connettersi al database.

   Per aggiungere l'istanza DB RDS allo stack come [livello di servizio Amazon RDS](workinglayers-db-rds.md), scegli **Register** with Stack. 

## Distribuzione dell'applicazione
<a name="gettingstarted-node-deploy"></a>

Devi archiviare l'applicazione in un archivio remoto. Quando la distribuisci, OpsWorks Stacks distribuisce il codice e i file correlati dal repository alle istanze del server delle applicazioni. Per comodità, questo esempio utilizza un archivio Amazon Simple Storage Service (Amazon S3) pubblico come repository, ma puoi anche utilizzare diversi altri tipi di repository, tra cui Git e Subversion. Per ulteriori informazioni, consulta [Origine dell'applicazione](workingapps-creating.md#workingapps-creating-source).

**Per distribuire un'applicazione**

1. 

**Creare il pacchetto dell'applicazione in un file di archivio.**

   Creare un archivio `.zip` della directory `nodedb` e delle relative sottodirectory denominando il pacchetto nodedb.zip. È inoltre possibile utilizzare altri tipi di file di archivio, tra cui gzip, bzip2 o tarball. Tieni presente che OpsWorks Stacks non supporta archivi tar non compressi. Per ulteriori informazioni, consulta [Origine dell'applicazione](workingapps-creating.md#workingapps-creating-source).

1. 

**Carica il file di archivio su Amazon S3.**

   Carica `nodedb.zip` in un bucket Amazon S3, rendi pubblico il file e copia l'URL del file per un uso successivo. Per ulteriori informazioni su come creare bucket e caricare file, consulta [Nozioni di base su Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html).
**Nota**  
OpsWorks Gli stack possono anche distribuire file privati da un bucket Amazon S3, ma per semplicità, questo esempio utilizza un file pubblico. Per ulteriori informazioni, consulta [Origine dell'applicazione](workingapps-creating.md#workingapps-creating-source).

1. 

**Crea un'app Stacks. OpsWorks**

   Torna alla console OpsWorks Stacks, nel riquadro di navigazione, scegli **App**, quindi scegli **Aggiungi un'**app. Specificare le seguenti impostazioni:
   + **Nome**: `NodeDB`.

     Questa stringa è il nome visualizzato dell'applicazione. Per la maggior parte degli scopi, è necessario il nome breve dell'app, che OpsWorks Stacks genera dal nome visualizzato trasformando tutti i caratteri in minuscolo e rimuovendo la punteggiatura. In questo esempio il nome è `nodedb`. Per verificare il nome breve di un'app, dopo aver creato l'app, scegliere l'app nella pagina **Apps (App)** per visualizzare la relativa pagina dei dettagli.
   + **Tipo** – `Node.js`.
   + **Data source type (Tipo di origine dati)** – `RDS`.
   + Istanza di **database: scegli l'istanza** database di Amazon RDS che hai registrato in precedenza. 
   + **Database name (Nome database)** – Specificare il nome del database creato in precedenza, `nodeexampledb` per questo esempio.
   + **Repository type (Tipo di repository)** - `Http Archive`.

     È necessario utilizzare questo tipo di repository per i file pubblici di Amazon S3. Il tipo `S3 Archive` viene utilizzato solo per gli archivi privati.
   + URL del **repository: l'URL** Amazon S3 del file di archivio.

   Utilizzare i valori predefiniti per le impostazioni restanti, quindi fare clic su **Add App (Aggiungi app)** per creare l'app.

1. 

**Distribuire l'app.**

   Andare alla pagina **Apps (App)** e nella colonna **Actions (Operazioni)** dell'app NodeDB scegliere **deploy (distribuzione)**. Quindi scegli **Deploy** per distribuire l'app sulle istanze del server. OpsWorks Stacks esegue le ricette Deploy su ogni istanza, che scarica l'applicazione dal repository e riavvia il server. Quando ogni istanza è contrassegnata da un segno di spunta verde e nel campo **Status (Stato)** è visualizzato **successful (operazione riuscita)**, la distribuzione è completata e l'applicazione è pronta per inizializzare la gestione delle richieste. 
**Nota**  
Se la distribuzione ha esito negativo, scegliere **show (mostra)** nella colonna **Log** per visualizzare il log di Chef relativo alla distribuzione. Le informazioni relative agli errori si trovano verso il fondo.

1. 

**Aprire l'applicazione .**

   Per aprire l'applicazione, scegliere **Layers (Livelli)**, scegliere il sistema di bilanciamento del carico, quindi scegliere il nome DNS di tale sistema. Questa operazione invia una richiesta HTTP al sistema di bilanciamento del carico. L'output visualizzato sarà simile a quanto segue.  
![\[AWS OpsWorks Node.js example showing RDS endpoint, user credentials, and database details.\]](http://docs.aws.amazon.com/it_it/opsworks/latest/userguide/images/node_walkthrough.png)

**Nota**  
OpsWorks Stacks distribuisce automaticamente le app su nuove istanze durante la configurazione. La distribuzione manuale è richiesta solo per le istanze online. Per ulteriori informazioni, consulta [Distribuzione di app](workingapps-deploying.md). Per una discussione generale sulla distribuzione, tra cui le strategie di distribuzione più avanzate, consulta [Gestione e distribuzione di app e libri di ricette](best-deploy.md).

## Come procedere
<a name="gettingstarted-node-next"></a>

**Importante**  
Il AWS OpsWorks Stacks 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 Supporto AWS Team su [AWS re:post](https://repost.aws/) o tramite Premium [AWS Support](https://aws.amazon.com/support).

In questa procedura guidata sono state descritte le nozioni di base relative alla configurazione di un semplice stack del server di applicazioni Node.js. Di seguito sono elencati alcuni suggerimenti su cosa fare in seguito.

**Esaminare i libri di ricette predefiniti di Node.js**  
Se vuoi sapere in dettaglio come sono configurate le istanze, consulta il ricettario integrato nel layer, [opsworks\$1nodejs](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/opsworks_nodejs), che contiene le ricette e i file correlati utilizzati da OpsWorks Stacks per installare e configurare il software, e il [cookbook integrato di distribuzione, che contiene le ricette utilizzate da Stacks per distribuire](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/deploy) le app. OpsWorks 

**Personalizzare la configurazione del server**  
Lo stack di esempio è uno stack di base. Per l'uso in ambienti di produzione, potrebbe essere necessario personalizzare lo stack. Per ulteriori informazioni, consulta [Personalizzazione degli stack OpsWorks](customizing.md).

**Aggiungere il supporto SSL**  
Puoi abilitare il supporto SSL per la tua app e fornire a Stacks i certificati appropriati quando crei l'app. OpsWorks OpsWorks Stacks installa quindi i certificati nella directory appropriata. Per ulteriori informazioni, consulta [Uso di SSL](workingsecurity-ssl.md).

**Aggiungere il caching dei dati in memoria**  
I siti a livello di produzione spesso ottimizzano le prestazioni mediante il caching dei dati in uno store di chiave-valore in memoria, ad esempio Redis o Memcache. Puoi usarli entrambi con uno OpsWorks stack Stacks. Per ulteriori informazioni, consultare [ElastiCache Redis](other-services-redis.md) e [Memcached](workinglayers-mem.md).

**Usare una strategia di distribuzione più complessa**  
Nell'esempio è stata utilizzata una strategia di distribuzione alquanto semplice, che prevede la distribuzione dell'aggiornamento in ogni istanza simultaneamente. Questo approccio è semplice e veloce, ma non vi è alcun margine di errore. Se la distribuzione ha esito negativo o l'aggiornamento genera problemi, ogni istanza nello stack di produzione potrebbe venire interessata e pertanto il sito potrebbe potenzialmente non funzionare o venire disabilitato finché non risolvi il problema. Per ulteriori informazioni sulle strategie di distribuzione, consulta [Gestione e distribuzione di app e libri di ricette](best-deploy.md).

**Estendi il livello Node.js App Server**  
Puoi estendere il livello in diversi modi. Ad esempio, puoi implementare ricette per eseguire script sulle istanze o implementare gli hook di distribuzione di Chef per personalizzare la distribuzione delle app. Per ulteriori informazioni, consulta [Estensione di un livello](workingcookbook-extend.md).

**Definire le variabili di ambiente**  
Puoi trasferire dati all'applicazione definendo variabili di ambiente per l'app associata. Quando distribuisci l'app, OpsWorks Stacks esporta tali variabili in modo che tu possa accedervi dall'app. Per ulteriori informazioni, consulta [Utilizzo delle variabili di ambiente](apps-environment-vars.md).