

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 un sito Web Drupal a elevata disponibilità con un database Amazon RDS esterno in Elastic Beanstalk
<a name="php-hadrupal-tutorial"></a>

Questo tutorial illustra il processo di [avvio di un'istanza DB RDS](AWSHowTo.RDS.md) esterna a. AWS Elastic Beanstalk Successivamente, descrive come configurare un ambiente a elevata disponibilità che esegue un sito Web Drupal per connettersi. Il sito Web utilizza Amazon Elastic File System (Amazon EFS) come storage condiviso per i file caricati. L'esecuzione di un'istanza DB esterna a Elastic Beanstalk disaccoppia il database dal ciclo di vita dell'ambiente e consente di connettersi allo stesso database da più ambienti, sostituire un database con un altro o eseguire una distribuzione senza influire sul database. blue/green 

**Topics**
+ [Prerequisiti](#php-hadrupal-tutorial-prereqs)
+ [Avvio di un'istanza database in Amazon RDS](#php-hadrupal-tutorial-database)
+ [Avvio di un ambiente Elastic Beanstalk](#php-hadrupal-tutorial-launch)
+ [Configurazione delle impostazioni di sicurezza e delle proprietà dell'ambiente](#php-hadrupal-tutorial-configure)
+ [Configurazione e distribuzione dell'applicazione](#php-hadrupal-tutorial-deploy)
+ [Installa Drupal](#php-hadrupal-tutorial-install)
+ [Aggiornamento della configurazione Drupal e rimozione delle restrizioni di accesso](#php-hadrupal-tutorial-updateenv)
+ [Configurazione del gruppo Auto Scaling](#php-hadrupal-tutorial-autoscaling)
+ [Pulizia](#php-hadrupal-tutorial-cleanup)
+ [Fasi successive](#php-hadrupal-tutorial-nextsteps)

## Prerequisiti
<a name="php-hadrupal-tutorial-prereqs"></a>

Questo tutorial presuppone determinate conoscenze sulle operazioni di base di Elastic Beanstalk e della console Elastic Beanstalk. Se non lo hai già fatto, segui le istruzioni in [Scopri come iniziare a usare Elastic Beanstalk](GettingStarted.md) per avviare il tuo primo ambiente Elastic Beanstalk.

Per seguire le procedure in questa guida, devi usare un terminale a riga di comando o una shell per eseguire i comandi. I comandi vengono visualizzati in elenchi preceduti da un simbolo di prompt (\$1) e dal nome della directory corrente, se appropriato.

```
~/eb-project$ this is a command
this is output
```

Su Linux e macOS usa la tua shell e il tuo programma di gestione dei pacchetti preferiti. Su Windows puoi [installare il sottosistema Windows per Linux per](https://docs.microsoft.com/en-us/windows/wsl/install-win10) ottenere una versione integrata con Windows di Ubuntu e Bash.

Le procedure descritte in questo tutorial per le attività Amazon Relational Database Service (Amazon RDS) presuppongono che si stiano avviando risorse in un [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) predefinito. Tutti i nuovi account includono un VPC predefinito in ciascuna regione. Se non hai un VPC predefinito, le procedure variano. Consulta le istruzioni [Utilizzo di Elastic Beanstalk con Amazon RDS](AWSHowTo.RDS.md) per le EC2 piattaforme VPC classiche e personalizzate.

L'applicazione di esempio utilizza Amazon EFS. Funziona solo nelle AWS regioni che supportano Amazon EFS. Per informazioni sulle AWS regioni di supporto, consulta [Amazon Elastic File System Endpoints and Quotas](https://docs.aws.amazon.com/general/latest/gr/elasticfilesystem.html) nel. *Riferimenti generali di AWS*

Se la piattaforma dell'ambiente Elastic Beanstalk utilizza PHP 7.4 o versioni precedenti, si consiglia di utilizzare Drupal versione 8.9.13 per questo tutorial. Per le piattaforme installate con PHP 8.0 o versioni successive, si consiglia di utilizzare Drupal 9.1.5.

Per maggiori informazioni sulle versioni di Drupal e sulle versioni PHP supportate, consulta [Requisiti PHP](https://www.drupal.org/docs/system-requirements/php-requirements#php_required) sul sito Web di Drupal. [Le versioni principali consigliate da Drupal sono elencate sul sito Web https://www.drupal. org/project/drupal](https://www.drupal.org/project/drupal). 

## Avvio di un'istanza database in Amazon RDS
<a name="php-hadrupal-tutorial-database"></a>

Per utilizzare un database esterno con un'applicazione in esecuzione in Elastic Beanstalk, avvia innanzitutto un'istanza database con Amazon RDS. Un'istanza avviata con Amazon RDS è completamente indipendente da Elastic Beanstalk e dagli ambienti Elastic Beanstalk e non verrà terminata o monitorata da Elastic Beanstalk.

Utilizza la console Amazon RDS per avviare un'istanza database Multi-AZ **MySQL**. La scelta di un'implementazione Multi-AZ garantisce che il database eseguirà il failover e continuerà a essere disponibile se l'istanza database di origine è inutilizzabile.

**Per avviare un'istanza database RDS in un VPC predefinito**

1. Aprire la [console di RDS](https://console.aws.amazon.com/rds/home).

1. Nel riquadro di navigazione, scegliere **Databases** (Database).

1. Scegliere **Create database** (Crea database).

1. Scegliere **Standard Create** (Creazione standard).
**Importante**  
Non selezionare **Easy Create** (Creazione rapida). Se viene selezionata questa opzione, non è possibile configurare le impostazioni necessarie per avviare questo database RDS.

1. In **Additional configuration (Configurazione aggiuntiva)**, digitare **ebdb** per **Initial database name (Nome database iniziale)**. 

1. Controllare le impostazioni di default e regolare queste impostazioni in base alle proprie esigenze specifiche. Prestare particolare attenzione alle seguenti opzioni:
   + **DB instance class (Classe di istanze database)**: scegliere una dimensione di istanza con capacità di memoria e potenza di CPU sufficienti per il tuo carico di lavoro.
   + **Implementazione Multi-AZ**: per un'elevata disponibilità, impostala su **Crea un nodo Replica/Reader Aurora in una** AZ diversa.
   + **Master username (Nome utente master)** e **Master password (Password master)**: nome utente e password del database. Prendi nota di queste impostazioni perché ti serviranno in seguito.

1. Verificare le impostazioni predefinite per le opzioni rimanenti e scegliere **Create database (Crea database)**.

Quindi, modifica il gruppo di sicurezza associato all'istanza database per consentire il traffico in entrata sulla porta appropriata. Questo è lo stesso gruppo di sicurezza che collegherai successivamente all'ambiente Elastic Beanstalk, perciò la regola che aggiungi concederà l'autorizzazione di ingresso ad altre risorse nello stesso gruppo di sicurezza.

**Per modificare le regole in entrata del gruppo di sicurezza associato all'istanza RDS**

1. Aprire la [console Amazon RDS](https://console.aws.amazon.com/rds/home).

1. Scegli **Databases** (Database).

1. Scegliere il nome dell'istanza database per visualizzarne i dettagli.

1. Nella sezione **Connectivity (Connettività)**, prendere nota dei valori relativi a **Subnets (Sottoreti)**, **Security groups (Gruppi di sicurezza)** ed **Endpoint** mostrati in questa pagina. In questo modo è possibile utilizzare queste informazioni in un secondo momento.

1. In **Security (Sicurezza)** viene visualizzato il gruppo di sicurezza associato all'istanza database. Apri il link per visualizzare il gruppo di sicurezza nella EC2 console Amazon.

1. Nei dettagli del gruppo di sicurezza, scegliere **Inbound (In entrata)**.

1. Scegli **Modifica**.

1. Selezionare **Add Rule (Aggiungi regola)**.

1. In **Type (Tipo)**, scegliere il motore di database utilizzato dall'applicazione.

1. In **Source (Origine)**, digitare **sg-** per visualizzare un elenco dei gruppi di sicurezza disponibili. Scegliere il gruppo di sicurezza associato al gruppo Auto Scaling utilizzato con l'ambiente Elastic Beanstalk. In questo modo EC2 le istanze Amazon nell'ambiente possono avere accesso al database.  
![\[Immagine della schermata per modificare le regole in entrata per un gruppo di sicurezza nella EC2 console Amazon.\]](http://docs.aws.amazon.com/it_it/elasticbeanstalk/latest/dg/images/ec2-securitygroup-rds.png)

1. Scegli **Save** (Salva).

La creazione di un'istanza database richiede circa 10 minuti. Nel frattempo, avvia il tuo ambiente Elastic Beanstalk.

## Avvio di un ambiente Elastic Beanstalk
<a name="php-hadrupal-tutorial-launch"></a>

Utilizza la console Elastic Beanstalk per creare un ambiente Elastic Beanstalk. Scegli la piattaforma **PHP** e accetta le impostazioni predefinite e il codice di esempio. Dopo aver avviato l'ambiente, puoi configurarlo affinché si connetta al database, quindi distribuisci il codice Drupal nell'ambiente.

**Per avviare un ambiente (console)**

1. [Apri la console Elastic Beanstalk utilizzando questo link preconfigurato: console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? ApplicationName=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

1. Per **Platform** (Piattaforma), selezionare il ramo della piattaforma e la piattaforma che corrispondono al linguaggio utilizzato dall'applicazione.

1. In **Application code** (Codice applicazione), scegli **Sample application** (Applicazione di esempio).

1. Selezionare **Review and launch** (Controlla e avvia).

1. Verificare le opzioni disponibili. Scegliere l'opzione disponibile che si desidera utilizzare e, quando si è pronti, scegliere **Create app** (Crea app).

Occorrono circa cinque minuti per creare l'ambiente e le seguenti risorse:
+ **EC2 istanza**: una macchina virtuale Amazon Elastic Compute Cloud (Amazon EC2) configurata per eseguire app Web sulla piattaforma scelta.

  Ogni piattaforma esegue un insieme specifico di software, file di configurazione e script per supportare una versione della lingua, un framework, un container Web specifici o una determinata combinazione di essi. La maggior parte delle piattaforme utilizza Apache o NGINX come proxy inverso su cui viene eseguita l'app Web, inoltra le richieste all'app, fornisce asset statici e genera log degli accessi e di errore.
+ **Gruppo di sicurezza dell'istanza**: un gruppo EC2 di sicurezza Amazon configurato per consentire il traffico in entrata sulla porta 80. Questa risorsa consente al traffico HTTP proveniente dal sistema di bilanciamento del carico di raggiungere l' EC2 istanza su cui è in esecuzione la tua app web. Per impostazione predefinita, il traffico non è consentito su altre porte.
+ **Sistema di bilanciamento del carico**: un sistema di bilanciamento del carico Elastic Load Balancing configurato per distribuire richieste alle istanze in esecuzione sull'applicazione. Un sistema di bilanciamento del carico inoltre elimina la necessità di esporre le proprie istanze direttamente in Internet.
+ Gruppo di **sicurezza Load Balancer: un gruppo** EC2 di sicurezza Amazon configurato per consentire il traffico in entrata sulla porta 80. Questa risorsa HTTP consente al traffico proveniente da Internet di raggiungere il sistema di bilanciamento del carico. Per impostazione predefinita, il traffico non è consentito su altre porte.
+ **Gruppo Auto Scaling**: un gruppo Auto Scaling configurato per sostituire un'istanza se viene terminata o diventa non disponibile.
+ **Bucket Amazon S3**: posizione di storage per il codice sorgente, i log e altri artefatti creati quando si utilizza Elastic Beanstalk.
+ ** CloudWatch Allarmi Amazon**: due CloudWatch allarmi che monitorano il carico sulle istanze nel tuo ambiente e che vengono attivati se il carico è troppo alto o troppo basso. Quando viene attivato un allarme, il gruppo Auto Scaling aumenta o diminuisce di conseguenza.
+ **CloudFormation stack**: Elastic CloudFormation Beanstalk utilizza per avviare le risorse nell'ambiente e propagare le modifiche alla configurazione. Le risorse sono definite in un modello, visualizzabile nella [console CloudFormation](https://console.aws.amazon.com/cloudformation).
+ **Nome di dominio***: un nome di dominio che indirizza alla tua app Web nel modulo. *subdomain* *region*.elasticbeanstalk.com*.
**Sicurezza del dominio**  
Per aumentare la sicurezza delle tue applicazioni Elastic Beanstalk, il dominio *elasticbeanstalk.com* è registrato nella [Public Suffix List (PSL).](https://publicsuffix.org/)  
Se hai bisogno di impostare cookie sensibili nel nome di dominio predefinito per le tue applicazioni Elastic Beanstalk, ti consigliamo di utilizzare i cookie `__Host-` con un prefisso per una maggiore sicurezza. Questa pratica difende il tuo dominio dai tentativi di falsificazione delle richieste tra siti (CSRF). Per ulteriori informazioni, consulta la pagina [Impostazione cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) nella pagina Mozilla Developer Network.

Tutte queste risorse sono gestite da Elastic Beanstalk. Quando arresti l'ambiente, Elastic Beanstalk termina tutte le risorse che contiene. L'istanza database di RDS avviata è al di fuori del tuo ambiente, per cui sei responsabile della gestione del suo ciclo di vita.

**Nota**  
Il bucket Amazon S3 creato da Elastic Beanstalk è condiviso tra gli ambienti e non viene eliminato quando l'ambiente viene terminato. Per ulteriori informazioni, consultare [Utilizzo di Elastic Beanstalk con Amazon S3](AWSHowTo.S3.md).

## Configurazione delle impostazioni di sicurezza e delle proprietà dell'ambiente
<a name="php-hadrupal-tutorial-configure"></a>

Aggiungi il gruppo di sicurezza dell'istanza database all'ambiente in esecuzione. Con questa procedura Elastic Beanstalk predispone di nuovo tutte le istanze nell'ambiente con il gruppo di sicurezza aggiuntivo collegato.

**Per aggiungere un gruppo di sicurezza al tuo ambiente**
+ Esegui una delle seguenti operazioni:
  + Per aggiungere un gruppo di sicurezza tramite la console Elastic Beanstalk

    1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

    1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

    1. Nel pannello di navigazione, seleziona **Configuration** (Configurazione).

    1. Nella categoria di configurazione **Instances (Istanze)**, scegliere **Edit (Modifica)**.

    1. In **Gruppi EC2 di sicurezza**, scegli il gruppo di sicurezza da collegare alle istanze, oltre al gruppo di sicurezza dell'istanza creato da Elastic Beanstalk.

    1. Per salvare le modifiche scegli **Apply** (Applica) nella parte inferiore della pagina.

    1. Leggere l'avviso, quindi selezionare **Confirm (Conferma)**.
  + Per aggiungere un gruppo di sicurezza tramite un [file di configurazione](ebextensions.md), utilizzare il file di esempio [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config).

Quindi, utilizza le proprietà dell'ambiente per far passare le informazioni di connessione al tuo ambiente. L'applicazione di esempio utilizza un set di proprietà predefinito che corrisponde a quello configurato da Elastic Beanstalk quando viene effettuato il provisioning di un database all'interno del tuo ambiente.

**Per configurare le proprietà dell'ambiente per un'istanza database Amazon RDS**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Nel riquadro di navigazione, seleziona **Configuration** (Configurazione).

1. Nella categoria di configurazione **Updates, monitoring, and logging** (Aggiornamenti, monitoraggio e registrazione), scegli **Edit** (Modifica).

1. Nella sezione **Environment properties (Proprietà ambiente)**, definire le variabili che l'applicazione deve leggere per formare una stringa di collegamento. Per la compatibilità con gli ambienti che dispongono di un'istanza database RDS integrata, utilizza i seguenti nomi e valori. Tutti i valori, ad eccezione della password, sono disponibili nella [console RDS](https://console.aws.amazon.com/rds/home).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/elasticbeanstalk/latest/dg/php-hadrupal-tutorial.html)  
![\[Sezione di configurazione delle proprietà dell'ambiente con proprietà RDS aggiunte\]](http://docs.aws.amazon.com/it_it/elasticbeanstalk/latest/dg/images/environment-cfg-envprops-rds.png)

1. Per salvare le modifiche scegli **Apply** (Applica) nella parte inferiore della pagina.

Dopo avere installato Drupal, è necessario connettersi all'istanza con SSH per recuperare alcuni dettagli di configurazione. Assegna una chiave SSH alle istanze dell'ambiente.

**Per configurare SSH**

1. Se non hai mai creato una coppia di chiavi, apri la [pagina delle coppie di chiavi](https://console.aws.amazon.com/ec2/v2/home#KeyPairs) della EC2 console Amazon e segui le istruzioni per crearne una.

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Nel riquadro di navigazione, seleziona **Configuration** (Configurazione).

1. In **Security (Sicurezza)**, scegliere **Edit (Modifica)**.

1. Per la **coppia di EC2 chiavi**, scegli la tua coppia di chiavi.

1. Per salvare le modifiche scegli **Apply** (Applica) nella parte inferiore della pagina.

## Configurazione e distribuzione dell'applicazione
<a name="php-hadrupal-tutorial-deploy"></a>

[Per creare un progetto Drupal per Elastic Beanstalk, scarica il codice sorgente di Drupal e combinalo con i file nel repository aws-samples/ su. eb-php-drupal](https://github.com/aws-samples/eb-php-drupal) GitHub

**Per creare un progetto Drupal**

1. Esegui il comando seguente per scaricare Drupal da *www.drupal.org/download*. Per saperne di più sui download, consulta [il sito web di Drupal](https://www.drupal.org/download).

   Se la piattaforma del tuo ambiente Elastic Beanstalk utilizza PHP 7.4 o versioni precedenti, ti consigliamo di scaricare Drupal versione 8.9.13 per questo tutorial. Per scaricarlo, puoi emettere il comando seguente.

   ```
   ~$ curl https://ftp.drupal.org/files/projects/drupal-8.9.13.tar.gz -o drupal.tar.gz
   ```

   Se la tua piattaforma utilizza PHP 8.0 o versioni successive, ti consigliamo di scaricare Drupal 9.1.5. Puoi utilizzare questo comando per scaricarlo.

   ```
   ~$ curl https://ftp.drupal.org/files/projects/drupal-9.1.5.tar.gz -o drupal.tar.gz
   ```

   Per maggiori informazioni sulle versioni di Drupal e sulle versioni PHP supportate, consulta [Requisiti PHP](https://www.drupal.org/docs/system-requirements/php-requirements#php_required) nella documentazione ufficiale di Drupal. Le versioni principali consigliate da Drupal sono riportate [sul sito Web di Drupal](https://www.drupal.org/project/drupal).

1. Utilizza il comando seguente per scaricare i file di configurazione dal repository di esempio:

   ```
   ~$ wget https://github.com/aws-samples/eb-php-drupal/releases/download/v1.1/eb-php-drupal-v1.zip
   ```

1. Estrai Drupal e modifica il nome della cartella.

   Se è stato scaricato Drupal 8.9.13:

   ```
    ~$ tar -xvf drupal.tar.gz
    ~$ mv drupal-8.9.13 drupal-beanstalk
    ~$ cd drupal-beanstalk
   ```

   Se è stato scaricato Drupal 9.1.5:

   ```
    ~$ tar -xvf drupal.tar.gz
    ~$ mv drupal-9.1.5 drupal-beanstalk
    ~$ cd drupal-beanstalk
   ```

1. Estrai i file di configurazione dall'installazione di Drupal.

   ```
    ~/drupal-beanstalk$ unzip ../eb-php-drupal-v1.zip
     creating: .ebextensions/
     inflating: .ebextensions/dev.config
     inflating: .ebextensions/drupal.config
     inflating: .ebextensions/efs-create.config
     inflating: .ebextensions/efs-filesystem.template
     inflating: .ebextensions/efs-mount.config
     inflating: .ebextensions/loadbalancer-sg.config
     inflating: LICENSE
     inflating: README.md
     inflating: beanstalk-settings.php
   ```

Verifica che la struttura della cartella `drupal-beanstalk` sia corretta, come illustrato.

```
drupal-beanstalk$ tree -aL 1
.
├── autoload.php
├── beanstalk-settings.php
├── composer.json
├── composer.lock
├── core
├── .csslintrc
├── .ebextensions
├── .ebextensions
├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── example.gitignore
├── .gitattributes
├── .htaccess
├── .ht.router.php
├── index.php
├── LICENSE
├── LICENSE.txt
├── modules
├── profiles
├── README.md
├── README.txt
├── robots.txt
├── sites
├── themes
├── update.php
├── vendor
└── web.config
```

Il file `beanstalk-settings.php` del repository del progetto usa le variabili di ambiente definite nella fase precedente per configurare la connessione di database. La cartella `.ebextensions` contiene i file di configurazione che consentono di creare risorse aggiuntive nell'ambiente Elastic Beanstalk.

I file di configurazione richiedono una modifica per poter funzionare con il tuo account. Sostituisci i valori segnaposto nei file con quelli appropriati e crea un pacchetto sorgente. IDs 

**Aggiornamento dei file di configurazione e creazione di un bundle di origine**

1. Modifica i file di configurazione nel seguente modo.
   + `.ebextensions/dev.config`: limita l'accesso all'ambiente soltanto al tuo indirizzo IP per garantire la protezione durante il processo di installazione di Drupal. Sostituisci l'indirizzo IP del segnaposto nella parte superiore del file con il tuo indirizzo IP pubblico.
   + `.ebextensions/efs-create.config`: crea un file system EFS e punti di montaggio in ciascuna zona di disponibilità/sottorete nel VPC. Identifica il tuo VPC e la sottorete predefiniti IDs nella console Amazon [VPC](https://console.aws.amazon.com/vpc/home#subnets:filter=default).

1. Crea un [bundle di origine](applications-sourcebundle.md) contenente i file nella cartella di progetto. Il comando seguente crea un bundle di origine denominato `drupal-beanstalk.zip`. Esclude i file nella cartella `vendor`, che occupano molto spazio e non sono necessari per la distribuzione dell'applicazione in Elastic Beanstalk.

   ```
   ~/eb-drupal$ zip ../drupal-beanstalk.zip -r * .[^.]* -x "vendor/*"
   ```

Carica il bundle di origine in Elastic Beanstalk per distribuire Drupal nel tuo ambiente.

**Per distribuire un bundle di origine**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Nella pagina della panoramica dell'ambiente scegliere **Upload and deploy** (Carica e distribuisci).

1. Utilizzare la finestra di dialogo su schermo per caricare il bundle di origine.

1. Selezionare **Deploy (Distribuisci)**.

1. Al termine della distribuzione, è possibile scegliere l'URL del sito per aprire il sito Web in una nuova scheda.

## Installa Drupal
<a name="php-hadrupal-tutorial-install"></a>

**Completamento dell'installazione di Drupal**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Scegliere l'URL dell'ambiente per aprire il sito in un browser. Viene visualizzata una procedura guidata di installazione di Drupal in quanto il sito non è stato ancora configurato.

1. Eseguire un'installazione standard con le seguenti impostazioni per il database:
   + **Nome del database**: il **DB Name (Nome DB)** mostrato nella console Amazon RDS.
   + **Nome utente e password del database**: valori **Master Username (Nome utente master)** e **Master Password (Password master)** inseriti al momento della creazione del database.
   + **Opzioni avanzate > Host**: **Endpoint** dell'istanza database mostrata nella console Amazon RDS.

L'installazione richiede circa un minuto.

## Aggiornamento della configurazione Drupal e rimozione delle restrizioni di accesso
<a name="php-hadrupal-tutorial-updateenv"></a>

Tramite il processo di installazione di Drupal è stato creato un file denominato `settings.php` nella cartella `sites/default` nell'istanza. Questo file è necessario nel codice sorgente per evitare di reimpostare il sito per le distribuzioni successive, ma il file attualmente contiene segreti di cui non vuoi eseguire il commit nell'origine. Stabilisci una connessione all'istanza dell'applicazione per recuperare le informazioni dal file di impostazioni.

**Per connettersi all'istanza dell'applicazione con SSH**

1. Apri la [pagina delle istanze](https://console.aws.amazon.com/ec2/v2/home#Instances:sort=tag:Name) della EC2 console Amazon.

1. Scegliere l'istanza dell'applicazione. È quella che ha lo stesso nome dell'ambiente Elastic Beanstalk.

1. Scegli **Connetti**.

1. Seguire le istruzioni per connettere l'istanza a SSH. Il comando è simile a quello riportato di seguito.

   ```
   $ ssh -i ~/.ssh/mykey ec2-user@ec2-00-55-33-222.us-west-2.compute.amazonaws.com
   ```

Ottieni l'ID della directory di sincronizzazione dall'ultima riga del file di impostazioni.

```
[ec2-user ~]$ tail -n 1 /var/app/current/sites/default/settings.php
$config_directories['sync'] = 'sites/default/files/config_4ccfX2sPQm79p1mk5IbUq9S_FokcENO4mxyC-L18-4g_xKj_7j9ydn31kDOYOgnzMu071Tvc4Q/sync';
```

Il file contiene anche la chiave hash corrente dei siti, ma puoi ignorare il valore corrente e usarne uno personalizzato.

Assegna il percorso della directory di sincronizzazione e la chiave hash alle proprietà dell'ambiente. Il file di impostazioni personalizzate nel repository del progetto legge queste proprietà per configurare il sito durante la distribuzione, in aggiunta alle proprietà di connessione di database impostate in precedenza.

**Proprietà di configurazione di Drupal**
+ `SYNC_DIR`: percorso della directory di sincronizzazione.
+ `HASH_SALT`: qualsiasi valore di stringa che soddisfi i [requisiti delle proprietà dell'ambiente](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console).

**Per configurare le variabili di ambiente nella console Elastic Beanstalk**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Nel riquadro di navigazione, seleziona **Configuration** (Configurazione).

1. Nella categoria di configurazione **Updates, monitoring, and logging** (Aggiornamenti, monitoraggio e registrazione), scegli **Edit** (Modifica).

1. Scorri verso il basso fino alle variabili di ambiente **Runtime**.

1. Seleziona **Aggiungi variabile di ambiente**.

1. Per **Sorgente** seleziona **Testo normale**.
**Nota**  
I valori **Secrets Manager** e **SSM Parameter Store** nel menu a discesa servono a configurare le variabili di ambiente come segreti per archiviare dati sensibili, come credenziali e chiavi API. Per ulteriori informazioni, consulta [Utilizzo di Elastic Gestione dei segreti AWS AWS Systems Manager Beanstalk con e Parameter Store](AWSHowTo.secrets.md). 

1. **Immettere le coppie del **nome della variabile di ambiente e del valore della variabile** di ambiente.**

1. Se è necessario aggiungere altre variabili, ripetere i **passaggi da 6** a **8**.

1. Per salvare le modifiche scegli **Apply** (Applica) nella parte inferiore della pagina.

Infine, il progetto di esempio include un file di configurazione (`loadbalancer-sg.config`) che crea un gruppo di sicurezza e lo assegna al sistema di bilanciamento del carico dell'ambiente, usando l'indirizzo IP configurato in `dev.config` per limitare l'accesso HTTP sulla porta 80 alle connessioni dalla tua rete. In caso contrario, una terza parte potrebbe connettersi al tuo sito prima del completamento dell'installazione di Drupal e della configurazione del tuo account amministratore.

**Per aggiornare la configurazione di Drupal e rimuovere le restrizioni di accesso**

1. Elimina il file `.ebextensions/loadbalancer-sg.config` dalla directory del progetto.

   ```
   ~/drupal-beanstalk$ rm .ebextensions/loadbalancer-sg.config
   ```

1. Copia il file `settings.php` personalizzato nella cartella dei siti.

   ```
   ~/drupal-beanstalk$ cp beanstalk-settings.php sites/default/settings.php
   ```

1. Crea un bundle di origine.

   ```
   ~/eb-drupal$ zip ../drupal-beanstalk-v2.zip -r * .[^.]* -x "vendor/*"
   ```

Carica il bundle di origine in Elastic Beanstalk per distribuire Drupal nel tuo ambiente.

**Per distribuire un bundle di origine**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Nella pagina della panoramica dell'ambiente scegliere **Upload and deploy** (Carica e distribuisci).

1. Utilizzare la finestra di dialogo su schermo per caricare il bundle di origine.

1. Selezionare **Deploy (Distribuisci)**.

1. Al termine della distribuzione, è possibile scegliere l'URL del sito per aprire il sito Web in una nuova scheda.

## Configurazione del gruppo Auto Scaling
<a name="php-hadrupal-tutorial-autoscaling"></a>

Infine, configura il gruppo Auto Scaling dell'ambiente con un conteggio delle istanze minime più elevato. Esegui almeno due istanze in qualsiasi momento per evitare che i server Web nell'ambiente rappresentino una singola possibilità di errore e per consentire di distribuire le modifiche senza interrompere il funzionamento del servizio.

**Configurazione del gruppo Auto Scaling dell'ambiente per elevata disponibilità**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Nel riquadro di navigazione, selezionare **Configuration (Configurazione)**.

1. Nella categoria di configurazione **Capacity (Capacità)**, scegliere **Edit (Modifica)**.

1. Nella sezione **Auto Scaling Group (Gruppo Auto Scaling)**, impostare **Min instances (Istanze min)** su **2**.

1. Per salvare le modifiche scegli **Apply** (Applica) nella parte inferiore della pagina.

Per supportare i caricamenti di contenuto in più istanze, il progetto di esempio utilizza Amazon Elastic File System per creare un file system condiviso. Crea un post sul sito e carica i contenuti per memorizzarli sul file system condiviso. Visualizza il post e aggiorna la pagina più volte per accedere a entrambe le istanze e verificare che il file system condiviso sia in fase di elaborazione.

## Pulizia
<a name="php-hadrupal-tutorial-cleanup"></a>

Dopo aver finito di utilizzare il codice demo, puoi chiudere il tuo ambiente. [Elastic Beanstalk elimina tutte le risorse AWS correlate, [come istanze EC2 Amazon](using-features.managing.ec2.md), [istanze di database, sistemi di bilanciamento del carico, gruppi](using-features.managing.db.md) di sicurezza e [allarmi](using-features.managing.elb.md).](using-features.alarms.md#using-features.alarms.title) 

La rimozione delle risorse non elimina l'applicazione Elastic Beanstalk, quindi puoi creare nuovi ambienti per la tua applicazione in qualsiasi momento.

**Per terminare l'ambiente Elastic Beanstalk dalla console**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Seleziona **Actions** (Operazioni), quindi **Terminate environment** (Termina ambiente).

1. Utilizza la finestra di dialogo su schermo per confermare la terminazione dell'ambiente.

Inoltre, puoi terminare le risorse di database create al di fuori dell'ambiente Elastic Beanstalk. Quando termini un'istanza database Amazon RDS, puoi acquisire uno snapshot e successivamente ripristinare i dati in un'altra istanza.

**Per terminare l'istanza database RDS**

1. Apri la [console Amazon RDS](https://console.aws.amazon.com/rds).

1. Scegli **Databases** (Database).

1. Scegli l'istanza database.

1. Scegli **Actions** (Operazioni), quindi **Delete** (Elimina).

1. Scegliere se creare una snapshot, quindi selezionare **Delete** (Elimina).

## Fasi successive
<a name="php-hadrupal-tutorial-nextsteps"></a>

Mentre continui a sviluppare l'applicazione, potrebbe essere necessario un metodo per gestire gli ambienti e distribuire l'applicazione senza creare manualmente un file .zip e caricarlo sulla console Elastic Beanstalk. L'[Elastic Beanstalk Command Line](eb-cli3.md) Interface (EB CLI easy-to-use) fornisce comandi per creare, configurare e distribuire applicazioni in ambienti Elastic Beanstalk dalla riga di comando.

L'applicazione di esempio utilizza i file di configurazione per configurare le impostazioni PHP e creare una tabella nel database, se non esiste già. È inoltre possibile utilizzare un file di configurazione per configurare le impostazioni del gruppo di sicurezza delle istanze durante la creazione dell'ambiente per evitare gli aggiornamenti di configurazione onerosi in termini di tempo. Per ulteriori informazioni, consultare [Personalizzazione avanzata dell'ambiente con i file di configurazione (`.ebextensions`)](ebextensions.md).

Per sviluppo e test, puoi usare la funzionalità di Elastic Beanstalk per l'aggiunta di un'istanza database gestita direttamente nell'ambiente. Per istruzioni sulla configurazione di un database nell'ambiente, consultare [Aggiunta di un database all'ambiente Elastic Beanstalk](using-features.managing.db.md).

Se è necessario un database ad alte prestazioni, prendi in considerazione [Amazon Aurora](https://aws.amazon.com/rds/aurora/). Amazon Aurora è un motore di database compatibile con MySQL che offre caratteristiche di database commerciali a basso costo. Per connettere l'applicazione a un altro database, ripeti la procedura di [configurazione del gruppo di sicurezza](php-ha-tutorial.md#php-hawrds-tutorial-database) e [aggiorna le proprietà dell'ambiente relative a RDS](php-ha-tutorial.md#php-hawrds-tutorial-configure). 

Infine, se prevedi di usare l'applicazione in un ambiente di produzione, devi [configurare un nome di dominio personalizzato](customdomains.md) per l'ambiente e [abilitare HTTPS](configuring-https.md) per le connessioni sicure.