

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

# Esempi avanzati di PHP in Elastic Beanstalk
<a name="php-samples"></a>

Per iniziare a utilizzare le applicazioni PHP AWS Elastic Beanstalk, è necessario un [pacchetto di sorgenti](applications-sourcebundle.md) dell'applicazione da caricare come prima versione dell'applicazione da distribuire in un ambiente. 

Ti consigliamo [QuickStart per PHP](php-quickstart.md) di iniziare con una semplice applicazione PHP distribuita con l'EB CLI.

**Topics**
+ [Aggiunta di un database](create_deploy_PHP.rds.md)
+ [Tutorial - Laravel](php-laravel-tutorial.md)
+ [Tutorial - CakePHP](php-cakephp-tutorial.md)
+ [Tutorial - Symfony](php-symfony-tutorial.md)
+ [Tutorial - Produzione HA](php-ha-tutorial.md)
+ [Tutorial - HA WordPress](php-hawordpress-tutorial.md)
+ [Tutorial - HA Drupal](php-hadrupal-tutorial.md)

# Aggiungere un'istanza Amazon RDS DB al tuo ambiente PHP Elastic Beanstalk
<a name="create_deploy_PHP.rds"></a>

Questo argomento fornisce istruzioni per creare un Amazon RDS utilizzando la console Elastic Beanstalk. Puoi utilizzare un'istanza database Amazon Relational Database Service (Amazon RDS) per archiviare i dati raccolti e modificati dall'applicazione. Il database può essere accoppiato all'ambiente e gestito da Elastic Beanstalk oppure può essere creato e gestito esternamente da un altro servizio. In queste istruzioni il database è accoppiato all'ambiente e gestito da Elastic Beanstalk. Per ulteriori informazioni sull'integrazione di un Amazon RDS con Elastic Beanstalk, consulta [Aggiunta di un database all'ambiente Elastic Beanstalk](using-features.managing.db.md).

**Topics**
+ [Aggiunta di un'istanza database all'ambiente](#php-rds-create)
+ [Download di un driver](#php-rds-drivers)
+ [Connessione a un database con PDO o My SQLi](#php-rds-connect)
+ [Connessione a un database con Symfony](#php-rds-symfony)

## Aggiunta di un'istanza database all'ambiente
<a name="php-rds-create"></a>

**Per aggiungere un'istanza database al tuo ambiente**

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, selezionare **Configuration** (Configurazione).

1. Nella categoria di configurazione del **Database**, scegliere **Edit (Modifica)**.

1. Scegliere un motore di database e immettere un nome utente e una password.

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

L'aggiunta di un'istanza database richiede circa 10 minuti. Quando l'aggiornamento dell'ambiente è completo, il nome host dell'istanza database e altre informazioni di connessione sono disponibili per la tua applicazione tramite le seguenti proprietà dell'ambiente:


| Nome proprietà | Descrizione | Valore proprietà | 
| --- | --- | --- | 
|  `RDS_HOSTNAME`  |  Il nome host dell'istanza DB.  |  Nella scheda **Connectivity & security** (Connettività e sicurezza) della console Amazon RDS: **Endpoint**.  | 
|  `RDS_PORT`  |  La porta su cui l'istanza database accetta le connessioni. Il valore predefinito varia tra i motori di database.  |  Nella scheda **Connectivity & security (Connettività e sicurezza)** della console Amazon RDS: **Port (Porta)**.  | 
|  `RDS_DB_NAME`  |  Il nome del database, **ebdb**.  |  Nella scheda **Configuration (Configurazione)** della console Amazon RDS: **DB Name (Nome DB)**.  | 
|  `RDS_USERNAME`  |  Il nome utente configurato per il database.  |  Nella scheda **Configuration (Configurazione)** della console Amazon RDS: **Master username (Nome utente master)**.  | 
|  `RDS_PASSWORD`  |  La password configurata per il database.  |  Non disponibile per riferimento nella console Amazon RDS.  | 

Per ulteriori informazioni sulla configurazione di un'istanza di database accoppiata a un ambiente Elastic Beanstalk, consulta [Aggiunta di un database all'ambiente Elastic Beanstalk](using-features.managing.db.md).

## Download di un driver
<a name="php-rds-drivers"></a>

Per usare PHP Data Objects (PDO) per la connessione al database, installa il driver corrispondente al motore di database scelto.
+ **MySQL** – [http://php.net/manual/en/ref.pdo-mysql.php](http://php.net/manual/en/ref.pdo-mysql.php)
+ **PostgreSQL** – [http://php.net/manual/en/ref.pdo-pgsql.php](http://php.net/manual/en/ref.pdo-pgsql.php)
+ **Oracle**: [http://php.net/manual/en/ref.pdo-oci.php](http://php.net/manual/en/ref.pdo-oci.php)
+ **SQL Server** – [http://php.net/manual/en/ref.pdo-sqlsrv.php](http://php.net/manual/en/ref.pdo-sqlsrv.php)

Per ulteriori informazioni, consulta [http://php.net/manual/en/pdo.installation.php](http://php.net/manual/en/pdo.installation.php).

## Connessione a un database con PDO o My SQLi
<a name="php-rds-connect"></a>

Puoi utilizzare `$_SERVER[`VARIABLE`]` per leggere le informazioni di connessione dall'ambiente.

Per un PDO, crea un nome di origine dati (DSN) dall'host, dalla porta e dal nome. Trasferisci il DSN al [costruttore per il PDO](https://php.net/manual/en/pdo.construct.php) con il nome utente e la password del database.

**Example Connessione a un database RDS con PDO - MySQL**  

```
<?php
$dbhost = $_SERVER['RDS_HOSTNAME'];
$dbport = $_SERVER['RDS_PORT'];
$dbname = $_SERVER['RDS_DB_NAME'];
$charset = 'utf8' ;

$dsn = "mysql:host={$dbhost};port={$dbport};dbname={$dbname};charset={$charset}";
$username = $_SERVER['RDS_USERNAME'];
$password = $_SERVER['RDS_PASSWORD'];

$pdo = new PDO($dsn, $username, $password);
?>
```

Per gli altri driver, sostituisci `mysql` con il nome del tuo driver: `pgsql`, `oci` o `sqlsrv`.

Per MySQLi, passa il nome host, il nome utente, la password, il nome del database e la porta al `mysqli` costruttore.

**Example Connessione a un database RDS con mysqli\$1connect()**  

```
$link = new mysqli($_SERVER['RDS_HOSTNAME'], $_SERVER['RDS_USERNAME'], $_SERVER['RDS_PASSWORD'], $_SERVER['RDS_DB_NAME'], $_SERVER['RDS_PORT']);
```

## Connessione a un database con Symfony
<a name="php-rds-symfony"></a>

Per Symfony 3.2 e versioni successive, puoi utilizzare `%env(PROPERTY_NAME)%` per impostare i parametri di database in un file di configurazione in base alle proprietà dell'ambiente stabilite da Elastic Beanstalk.

**Example app/config/parameters.yml**  

```
parameters:
    database_driver:   pdo_mysql
    database_host:     '%env(RDS_HOSTNAME)%'
    database_port:     '%env(RDS_PORT)%'
    database_name:     '%env(RDS_DB_NAME)%'
    database_user:     '%env(RDS_USERNAME)%'
    database_password: '%env(RDS_PASSWORD)%'
```

Per ulteriori informazioni, consultare la sezione sui [parametri esterni (Symfony 3.4)](http://symfony.com/doc/3.4/configuration/external_parameters.html).

Per le versioni precedenti di Symfony, le variabili di ambiente sono accessibili solo se iniziano con `SYMFONY__`. Questo significa che le proprietà di ambiente definite da Elastic Beanstalk non sono accessibili e che occorre definire delle proprietà di ambiente personalizzate per trasmettere le informazioni di connessione a Symfony.

Per connetterti a un database con Symfony 2, [crea una proprietà dell'ambiente](create_deploy_PHP.container.md#php-console-properties) per ciascun parametro. Successivamente, utilizza `%property.name%` per accedere alla variabile trasformata per Symfony in un file di configurazione. Ad esempio, si può accedere a una proprietà di ambiente denominata `SYMFONY__DATABASE__USER` come `database.user`.

```
    database_user:     "%database.user%"
```

Per ulteriori informazioni, consultare la sezione sui [parametri esterni (Symfony 2.8)](http://symfony.com/doc/2.8/configuration/external_parameters.html).

# Distribuzione di un'applicazione Laravel su Elastic Beanstalk
<a name="php-laravel-tutorial"></a>

Laravel è un framework open source model-view-controller (MVC) per PHP. Questo tutorial illustra il processo di generazione di un'applicazione Laravel, la sua distribuzione in un AWS Elastic Beanstalk ambiente e la configurazione per la connessione a un'istanza di database Amazon Relational Database Service (Amazon RDS).

**Topics**
+ [Prerequisiti](#php-laravel-tutorial-prereqs)
+ [Avvio di un ambiente Elastic Beanstalk](#php-laravel-tutorial-launch)
+ [Installazione di Laravel e creazione di un sito Web](#php-laravel-tutorial-generate)
+ [Distribuzione dell'applicazione](#php-laravel-tutorial-deploy)
+ [Configurazione delle impostazioni di Composer](#php-laravel-tutorial-configure)
+ [Aggiunta di un database all'ambiente](#php-laravel-tutorial-database)
+ [Pulizia](#php-laravel-tutorial-cleanup)
+ [Fasi successive](#php-laravel-tutorial-nextsteps)

## Prerequisiti
<a name="php-laravel-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 ottenere una versione integrata per](https://docs.microsoft.com/en-us/windows/wsl/install-win10) Windows di Ubuntu e Bash.

Laravel 6 richiede PHP 7.2 o versioni successive. Richiede anche le estensioni PHP riportate nella sezione dei [requisiti del server](https://laravel.com/docs/6.x/installation#server-requirements) nella documentazione ufficiale di Laravel. Segui le istruzioni per installare PHP e Composer.

Per informazioni sul supporto e sulla manutenzione di Laravel, vedere l'argomento relativo alle [policy di supporto](https://laravel.com/docs/master/releases#support-policy) nella documentazione ufficiale di Laravel.

## Avvio di un ambiente Elastic Beanstalk
<a name="php-laravel-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.

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

**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).

## Installazione di Laravel e creazione di un sito Web
<a name="php-laravel-tutorial-generate"></a>

Composer è in grado di installare Laravel e di creare un progetto funzionante con un unico comando:

```
~$ composer create-project --prefer-dist laravel/laravel eb-laravel
```

Composer installa Laravel e le relative dipendenze e genera un progetto predefinito.

[Se riscontri problemi durante l'installazione di Laravel, vai all'argomento di installazione nella documentazione ufficiale: 6.x. https://laravel.com/docs/](https://laravel.com/docs/6.x) 

## Distribuzione dell'applicazione
<a name="php-laravel-tutorial-deploy"></a>

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

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

Carica il bundle di origine in Elastic Beanstalk per distribuire Laravel nell'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.

**Nota**  
Per ottimizzare ulteriormente il bundle di origine, inizializza un repository Git e utilizza il [comando `git archive`](applications-sourcebundle.md#using-features.deployment.source.git) per creare il bundle di origine. Il progetto predefinito di Laravel include un file `.gitignore` che indica a Git di escludere la cartella `vendor` e gli altri file non necessari per la distribuzione.

## Configurazione delle impostazioni di Composer
<a name="php-laravel-tutorial-configure"></a>

Al termine della distribuzione, fai clic sull'URL per aprire la tua applicazione Laravel nel browser:

![\[Error message indicating no permission to access or on this server.\]](http://docs.aws.amazon.com/it_it/elasticbeanstalk/latest/dg/images/php-laravel-403.png)


Di cosa si tratta? Per impostazione predefinita, Elastic Beanstalk fornisce la radice del progetto al percorso root del sito Web. In questo caso, tuttavia, la pagina predefinita (`index.php`) è a un livello inferiore nella cartella `public`. Puoi eseguire una verifica aggiungendo `/public` all'URL. Ad esempio, `http://laravel.us-east-2.elasticbeanstalk.com/public`.

Per distribuire l'applicazione Laravel nel percorso root, utilizza la console Elastic Beanstalk per configurare la *radice del documento* per il sito Web.

**Per configurare la radice del documento del sito Web**

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. In **Document root (Radice documento)**, immettere **/public**.

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

1. Al termine dell'aggiornamento, fai clic sull'URL per riaprire il tuo sito all'interno del browser.

![\[Laravel logo with navigation menu items: Documentation, Laracasts, News, Forge, GitHub.\]](http://docs.aws.amazon.com/it_it/elasticbeanstalk/latest/dg/images/php-laravel-defaultnodb.png)


Fino qui, tutto bene. Nella fase successiva potrai aggiungere un database all'ambiente e configurare Laravel in modo che si connetta a esso.

## Aggiunta di un database all'ambiente
<a name="php-laravel-tutorial-database"></a>

Avvia un'istanza database RDS nel tuo ambiente Elastic Beanstalk. Puoi usare database MySQL o PostgreSQL con SQLServer Laravel su Elastic Beanstalk. Per questo esempio, utilizziamo MySQL.

**Per aggiungere un'istanza database RDS al tuo ambiente 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, selezionare **Configuration** (Configurazione).

1. Nella categoria di configurazione del **Database**, scegliere **Edit (Modifica)**.

1. In **Engine (Motore)**, selezionare **mysql**.

1. Digitare **username** (Nome utente) e **password** (Password) principali. Elastic Beanstalk fornirà questi valori alla tua applicazione utilizzando le proprietà dell'ambiente.

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

La creazione di un'istanza di database richiede circa 10 minuti. Per ulteriori informazioni sui database associati a un ambiente Elastic Beanstalk, consultare [Aggiunta di un database all'ambiente Elastic Beanstalk](using-features.managing.db.md).

Nel frattempo, è possibile aggiornare il codice sorgente per leggere le informazioni di connessione dall'ambiente. Elastic Beanstalk fornisce i dettagli di connessione tramite variabili di ambiente, ad esempio `RDS_HOSTNAME`, a cui puoi accedere dalla tua applicazione.

La configurazione del database Laravel è memorizzata in un file denominato `database.php` nella cartella `config` del tuo codice di progetto. Individua la voce `mysql` e modifica le variabili `host`, `database`, `username` e `and password` per leggere i valori corrispondenti da Elastic Beanstalk:

**Example \$1/Eb- .php laravel/config/database**  

```
...
    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('RDS_HOSTNAME', '127.0.0.1'),
            'port' => env('RDS_PORT', '3306'),
            'database' => env('RDS_DB_NAME', 'forge'),
            'username' => env('RDS_USERNAME', 'forge'),
            'password' => env('RDS_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
...
```

Per verificare che la connessione al database sia configurata correttamente, aggiungi il codice a `index.php` per connetterti al database e aggiungi un codice per la risposta predefinita:

**Example \$1/Eb- laravel/public/index .php**  

```
...
if(DB::connection()->getDatabaseName())
{
   echo "Connected to database ".DB::connection()->getDatabaseName();
}
$response->send();
...
```

Quando l'istanza database ha terminato l'avvio, raggruppa e distribuisci l'applicazione aggiornata nel tuo ambiente.

**Per aggiornare l'ambiente Elastic Beanstalk**

1. Creare un nuovo bundle di origine:

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

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. Selezionare **Upload and Deploy (Carica e distribuisci)**.

1. Selezionare **Browse (Sfoglia)** e caricare `laravel-v2-rds.zip`.

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

La distribuzione di una nuova versione dell'applicazione richiede meno di un minuto. Al termine della distribuzione, aggiorna la pagina Web di nuovo per verificare che la connessione al database sia riuscita:

![\[Laravel website header with navigation menu items for Documentation, Laracasts, News, Forge, and GitHub.\]](http://docs.aws.amazon.com/it_it/elasticbeanstalk/latest/dg/images/php-laravel-defaultwdb.png)


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

Dopo aver finito di utilizzare il codice demo, puoi chiudere l'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-laravel-tutorial-nextsteps"></a>

Per ulteriori informazioni su Laravel, visita il sito Web ufficiale di Laravel su [laravel.com](https://laravel.com/).

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.

In questo tutorial, hai utilizzato la console Elastic Beanstalk per configurare le opzioni Composer. Per rendere questa configurazione parte della tua origine delle applicazioni, puoi utilizzare un file di configurazione come il seguente.

**Example .ebextensions/composer.config**  

```
option_settings:
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
```

Per ulteriori informazioni, consultare [Personalizzazione avanzata dell'ambiente con i file di configurazione (`.ebextensions`)](ebextensions.md).

L'esecuzione di un'istanza database Amazon RDS nell'ambiente Elastic Beanstalk è perfetta per le attività di sviluppo e test, ma vincola il ciclo di vita del database al tuo ambiente. Per istruzioni sulla connessione a un database in esecuzione al di fuori del tuo ambiente, consulta [Aggiungere un'istanza Amazon RDS DB al tuo ambiente PHP Elastic Beanstalk](create_deploy_PHP.rds.md).

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.

# Distribuzione di un'applicazione CakePHP su Elastic Beanstalk
<a name="php-cakephp-tutorial"></a>

CakePHP è un framework open source, MVC per PHP. Questo tutorial ti guiderà attraverso il processo di creazione di un progetto CakePHP, la distribuzione in un ambiente Elastic Beanstalk e la configurazione per connetterlo a un'istanza database Amazon RDS.

**Topics**
+ [Prerequisiti](#php-cakephp-tutorial-prereqs)
+ [Avvio di un ambiente Elastic Beanstalk](#php-cakephp-tutorial-launch)
+ [Installazione di CakePHP e creazione di un sito Web](#php-cakephp-tutorial-generate)
+ [Distribuzione dell'applicazione](#php-cakephp-tutorial-deploy)
+ [Aggiunta di un database all'ambiente](#php-cakephp-tutorial-database)
+ [Pulizia](#php-cakephp-tutorial-cleanup)
+ [Fasi successive](#php-cakephp-tutorial-nextsteps)

## Prerequisiti
<a name="php-cakephp-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.

CakePHP 4 richiede PHP 7.4 o successivo. Richiede anche le estensioni PHP elencate nella documentazione ufficiale di [installazione di CakePHP](https://book.cakephp.org/4/en/installation.html) . È necessario installare sia PHP che Composer.

## Avvio di un ambiente Elastic Beanstalk
<a name="php-cakephp-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.

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

**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).

## Installazione di CakePHP e creazione di un sito Web
<a name="php-cakephp-tutorial-generate"></a>

Composer è in grado di installare CakePHP e di creare un progetto funzionante con un unico comando:

```
~$ composer create-project --prefer-dist cakephp/app eb-cake
```

Composer installa CakePHP e circa 20 dipendenze e genera un progetto predefinito.

In caso di problemi durante l'installazione di CakePHP, visita l'argomento relativo all'installazione nella documentazione ufficiale: [http://book.cakephp.org/4.0/en/installation.html](http://book.cakephp.org/4.0/en/installation.html)

## Distribuzione dell'applicazione
<a name="php-cakephp-tutorial-deploy"></a>

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

```
eb-cake zip ../cake-default.zip -r * .[^.]* -x "vendor/*"
```

Carica il bundle di origine in Elastic Beanstalk per distribuire CakePHP nell'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.

**Nota**  
Per ottimizzare ulteriormente il bundle di origine, inizializza un repository Git e utilizza il [comando `git archive`](applications-sourcebundle.md#using-features.deployment.source.git) per creare il bundle di origine. Il progetto predefinito di Symfony include un file `.gitignore` che indica a Git di escludere la cartella `vendor` e gli altri file non necessari per la distribuzione.

Una volta completato il processo, fai clic sull'URL per aprire la tua applicazione CakePHP nel browser.

Fino qui, tutto bene. Nella fase successiva potrai aggiungere un database all'ambiente e configurare CakePHP in modo che si connetta a esso.

## Aggiunta di un database all'ambiente
<a name="php-cakephp-tutorial-database"></a>

Avvia un'istanza database Amazon RDS nel tuo ambiente Elastic Beanstalk. Puoi usare database MySQL o PostgreSQL con SQLServer CakePHP su Elastic Beanstalk. Per questo esempio, utilizziamo PostgreSQL.

**Per aggiungere un'istanza database Amazon RDS al tuo ambiente 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. In **Database**, scegliere **Edit (Modifica)**.

1. In **DB engine (Motore DB)**, scegliere **postgres**.

1. Digitare **username** (Nome utente) e **password** (Password) principali. Elastic Beanstalk fornirà questi valori alla tua applicazione utilizzando le proprietà dell'ambiente.

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

La creazione di un'istanza di database richiede circa 10 minuti. Nel frattempo, è possibile aggiornare il codice sorgente per leggere le informazioni di connessione dall'ambiente. Elastic Beanstalk fornisce i dettagli di connessione tramite variabili di ambiente, ad esempio `RDS_HOSTNAME`, a cui puoi accedere dalla tua applicazione.

La configurazione del database CakePHP è memorizzata in un file denominato `app.php` nella cartella `config` del tuo codice di progetto. Apri il file e aggiungi un codice che legga le variabili di ambiente da `$_SERVER` e le assegna a variabili locali. Inserisci le righe evidenziate nell'esempio qui di seguito, dopo la prima linea (`<?php`):

**Example \$1/Eb- .php cake/config/app**  

```
<?php
if (!defined('RDS_HOSTNAME')) {
  define('RDS_HOSTNAME', $_SERVER['RDS_HOSTNAME']);
  define('RDS_USERNAME', $_SERVER['RDS_USERNAME']);
  define('RDS_PASSWORD', $_SERVER['RDS_PASSWORD']);
  define('RDS_DB_NAME', $_SERVER['RDS_DB_NAME']);
}
return [
...
```

La connessione al database viene configurata ulteriormente nel file `app.php`. Trova la sezione seguente e modifica la configurazione di origine dati predefinita con il nome del driver corrispondente al motore di database (`Mysql`, `Sqlserver` o `Postgres`) e imposta le variabili `host`, `username`, `password` e `database` per leggere i valori corrispondenti da Elastic Beanstalk:

**Example \$1/Eb- cake/config/app .php**  

```
...
     /**
     * Connection information used by the ORM to connect
     * to your application's datastores.
     * Drivers include Mysql Postgres Sqlite Sqlserver
     * See vendor\cakephp\cakephp\src\Database\Driver for complete list
     */
    'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Postgres',
            'persistent' => false,
            'host' => RDS_HOSTNAME,
            /*
             * CakePHP will use the default DB port based on the driver selected
             * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
             * the following line and set the port accordingly
             */
            //'port' => 'non_standard_port_number',
            'username' => RDS_USERNAME,
            'password' => RDS_PASSWORD,
            'database' => RDS_DB_NAME,
            /*
             * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6).
             */
            //'encoding' => 'utf8mb4',
            'timezone' => 'UTC',
            'flags' => [],
            'cacheMetadata' => true,
            'log' => false,
...
```

Quando l'istanza database ha terminato l'avvio, raggruppa e distribuisci l'applicazione aggiornata nel tuo ambiente:

**Per aggiornare l'ambiente Elastic Beanstalk**

1. Creare un nuovo bundle di origine:

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

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. Selezionare **Upload and Deploy (Carica e distribuisci)**.

1. Selezionare **Browse (Sfoglia)** e carica `cake-v2-rds.zip`.

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

La distribuzione di una nuova versione dell'applicazione richiede meno di un minuto. Al termine della distribuzione, aggiorna la pagina Web di nuovo per verificare che la connessione al database sia riuscita:

![\[Green checkmark icon indicating successful database connection for CakePHP.\]](http://docs.aws.amazon.com/it_it/elasticbeanstalk/latest/dg/images/php-cakephp-defaultwdb.png)


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

Dopo aver finito di utilizzare il codice demo, puoi chiudere l'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-cakephp-tutorial-nextsteps"></a>

Per ulteriori informazioni su CakePHP, leggi il manuale all'indirizzo [book.cakephp.org](http://book.cakephp.org/4.0/en/index.html).

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'esecuzione di un'istanza database Amazon RDS nell'ambiente Elastic Beanstalk è perfetta per le attività di sviluppo e test, ma vincola il ciclo di vita del database al tuo ambiente. Per istruzioni sulla connessione a un database in esecuzione al di fuori del tuo ambiente, consulta [Aggiungere un'istanza Amazon RDS DB al tuo ambiente PHP Elastic Beanstalk](create_deploy_PHP.rds.md).

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.

# Distribuzione di un'applicazione Symfony su Elastic Beanstalk
<a name="php-symfony-tutorial"></a>

[Symfony](http://symfony.com/) è un framework open source per lo sviluppo di applicazioni Web PHP dinamiche. Questo tutorial illustra il processo di generazione di un'applicazione Symfony e la sua distribuzione in un ambiente. AWS Elastic Beanstalk 

**Topics**
+ [Prerequisiti](#php-symfony-tutorial-prereqs)
+ [Avvio di un ambiente Elastic Beanstalk](#php-symfony-tutorial-launch)
+ [Installazione di Symfony e creazione di un sito Web](#php-symfony-tutorial-generate)
+ [Distribuzione dell'applicazione](#php-symfony-tutorial-deploy)
+ [Configurazione delle impostazioni di Composer](#php-symfony-tutorial-configure)
+ [Pulizia](#php-symfony-tutorial-cleanup)
+ [Fasi successive](#php-symfony-tutorial-nextsteps)

## Prerequisiti
<a name="php-symfony-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 è possibile [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.

Symfony 4.4.9 richiede PHP 7.1.3 o versioni successive. Richiede anche le estensioni PHP elencate nell'argomento dei [requisiti tecnici](https://symfony.com/doc/4.4/setup.html ) nella documentazione ufficiale di installazione di Symfony. In questo tutorial viene utilizzato PHP 7.2 e la [versione della piattaforma](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) Elastic Beanstalk corrispondente. Prima di procedere, è necessario installare sia PHP che Composer.

Per informazioni sul supporto e sulla manutenzione di Symfony, consulta l'argomento relativo alle [versioni di Symfony](https://symfony.com/releases) sul sito Web di Symfony. Per ulteriori informazioni sugli aggiornamenti relativi al supporto della versione PHP per Symfony 4.4.9, consulta [Note di rilascio di Symfony 4.4.9](https://symfony.com/blog/symfony-4-4-9-released) sul sito Web di Symfony.

## Avvio di un ambiente Elastic Beanstalk
<a name="php-symfony-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.

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

**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).

## Installazione di Symfony e creazione di un sito Web
<a name="php-symfony-tutorial-generate"></a>

Composer è in grado di installare Symfony e di creare un progetto funzionante con un unico comando:

```
~$ composer create-project symfony/website-skeleton eb-symfony
```

Composer installa Symfony e le relative dipendenze e genera un progetto predefinito.

In caso di problemi durante l'installazione di Symfony, consulta l'argomento relativo all'[installazione](https://symfony.com/doc/4.4/setup.html) nella documentazione ufficiale di Symfony.

## Distribuzione dell'applicazione
<a name="php-symfony-tutorial-deploy"></a>

Passare alla directory del progetto.

```
~$ cd eb-symfony
```

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

```
eb-symfony$ zip ../symfony-default.zip -r * .[^.]* -x "vendor/*"
```

Carica il bundle di origine in Elastic Beanstalk per distribuire Symfony 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.

**Nota**  
Per ottimizzare ulteriormente il bundle di origine, inizializza un repository Git e utilizza il [comando `git archive`](applications-sourcebundle.md#using-features.deployment.source.git) per creare il bundle di origine. Il progetto predefinito di Symfony include un file `.gitignore` che indica a Git di escludere la cartella `vendor` e gli altri file non necessari per la distribuzione.

## Configurazione delle impostazioni di Composer
<a name="php-symfony-tutorial-configure"></a>

Al termine della distribuzione, fai clic sull'URL per aprire la tua applicazione Symfony nel browser.

Di cosa si tratta? Per impostazione predefinita, Elastic Beanstalk fornisce la radice del progetto al percorso principale del sito Web. In questo caso, tuttavia, la pagina predefinita (`app.php`) è a un livello inferiore nella cartella `web`. Puoi eseguire una verifica aggiungendo `/public` all'URL. Ad esempio, `http://symfony.us-east-2.elasticbeanstalk.com/public`.

Per distribuire l'applicazione Symfony nel percorso root, utilizza la console Elastic Beanstalk per configurare la *radice del documento* del sito Web.

**Per configurare la radice del documento del sito Web**

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. In **Document root (Radice documento)**, immettere **/public**.

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

1. Al termine dell'aggiornamento, fai clic sull'URL per riaprire il tuo sito all'interno del browser.

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

Dopo aver finito di utilizzare il codice demo, puoi chiudere l'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.

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

Per ulteriori informazioni su Symfony, consulta la [presentazione di Symfony](https://symfony.com/what-is-symfony) su symfony.com.

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.

In questo tutorial, hai utilizzato la console Elastic Beanstalk per configurare le opzioni Composer. Per rendere questa configurazione parte della tua origine delle applicazioni, puoi utilizzare un file di configurazione come il seguente.

**Example .ebextensions/composer.config**  

```
option_settings:
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
```

Per ulteriori informazioni, consultare [Personalizzazione avanzata dell'ambiente con i file di configurazione (`.ebextensions`)](ebextensions.md).

Symfony utilizza i propri file di configurazione per configurare le connessioni del database. Per istruzioni sulla connessione a un database con Symfony, consulta [Connessione a un database con Symfony](create_deploy_PHP.rds.md#php-rds-symfony).

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.

# Distribuzione di un'applicazione PHP a elevata disponibilità con un database Amazon RDS esterno in Elastic Beanstalk
<a name="php-ha-tutorial"></a>

Questo tutorial illustra il processo di [avvio di un'istanza DB RDS](AWSHowTo.RDS.md) esterna e la configurazione di un ambiente ad alta disponibilità che esegue un'applicazione PHP per connettersi ad essa. AWS Elastic Beanstalk L'esecuzione di un'istanza database esterna a Elastic Beanstalk separa il database dal ciclo di vita dell'ambiente. Ciò consente di connettersi allo stesso database da più ambienti, sostituire un database per un altro o eseguire una distribuzione blu/verde senza influire sul database.

Il tutorial fa riferimento a un'[applicazione PHP di esempio](https://github.com/awslabs/eb-demo-php-simple-app) che utilizza un database MySQL per archiviare i dati di testo fornite dall'utente. L'applicazione di esempio utilizza i [file di configurazione](ebextensions.md) per configurare le [impostazioni PHP](create_deploy_PHP.container.md#php-namespaces) e creare una tabella nel database che l'applicazione può utilizzare. Mostra inoltre come utilizzare un [file Composer](create_deploy_PHP.container.md#php-configuration-composer) per installare i pacchetti durante la distribuzione.

**Topics**
+ [Prerequisiti](#php-hawrds-tutorial-prereqs)
+ [Avvio di un'istanza database in Amazon RDS](#php-hawrds-tutorial-database)
+ [Creazione di un ambiente Elastic Beanstalk](#php-hawrds-tutorial-create)
+ [Configurazione di gruppi di sicurezza, proprietà dell'ambiente e dimensionamento](#php-hawrds-tutorial-configure)
+ [Distribuzione di un'applicazione di esempio](#php-hawrds-tutorial-deploy)
+ [Pulizia](#php-hawrds-tutorial-cleanup)
+ [Fasi successive](#php-hawrds-tutorial-nextsteps)

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

[Prima di iniziare, scarica il pacchetto sorgente dell'applicazione di esempio da: -app-1.3.zip GitHub eb-demo-php-simple](https://github.com/aws-samples/eb-demo-php-simple-app/releases/download/v1.3/eb-demo-php-simple-app-v1.3.zip)

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.

## Avvio di un'istanza database in Amazon RDS
<a name="php-hawrds-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, crea il tuo ambiente Elastic Beanstalk.

## Creazione di un ambiente Elastic Beanstalk
<a name="php-hawrds-tutorial-create"></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 configurare l'ambiente per la connessione al database, quindi distribuire l'applicazione di esempio da cui hai scaricato. GitHub

**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 di gruppi di sicurezza, proprietà dell'ambiente e dimensionamento
<a name="php-hawrds-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-ha-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.

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.

## Distribuzione di un'applicazione di esempio
<a name="php-hawrds-tutorial-deploy"></a>

Ora l'ambiente è pronto per eseguire l'applicazione di esempio e connettersi ad Amazon RDS. Distribuisci l'applicazione di esempio nel tuo ambiente.

**Nota**  
[Scarica il pacchetto sorgente da GitHub, se non l'hai già fatto: -app-1.3.zip eb-demo-php-simple](https://github.com/aws-samples/eb-demo-php-simple-app/releases/download/v1.3/eb-demo-php-simple-app-v1.3.zip)

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

Il sito raccoglie i commenti degli utenti e utilizza un database MySQL per archiviare i dati. Per aggiungere un commento, scegli **Share Your Thought (Condividi la tua opinione)**, immetti un commento, quindi seleziona **Submit Your Thought (Invia la tua opinione)**. L'applicazione web scrive il commento sul database, in modo che qualsiasi istanza nell'ambiente possa leggerlo; in questo modo, inoltre, il commento non andrà perso se le istanze diventano inutilizzabili.

![\[User interface for sharing thoughts, with a posted comment about Elastic Beanstalk on AWS.\]](http://docs.aws.amazon.com/it_it/elasticbeanstalk/latest/dg/images/php-ha-tutorial-app.png)


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

Dopo aver finito di utilizzare il codice demo, puoi chiudere l'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-hawrds-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-hawrds-tutorial-database) e [aggiorna le proprietà dell'ambiente relative a RDS](#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.

# Implementazione di un WordPress sito Web ad alta disponibilità con un database Amazon RDS esterno su Elastic Beanstalk
<a name="php-hawordpress-tutorial"></a>

Questo tutorial descrive come [avviare un'istanza database Amazon RDS](AWSHowTo.RDS.md) esterna a AWS Elastic Beanstalk, quindi come configurare un ambiente ad alta disponibilità che esegue un WordPress sito Web per connettersi ad esso. Il sito Web utilizza Amazon Elastic File System (Amazon EFS) come storage condiviso per i file caricati.

L'esecuzione di un'istanza database esterna a Elastic Beanstalk separa il database dal ciclo di vita dell'ambiente. Ciò consente di connettersi allo stesso database da più ambienti, sostituire un database per un altro o eseguire una [distribuzione blu/verde](using-features.CNAMESwap.md) senza influire sul database.

**Nota**  
Per informazioni aggiornate sulla compatibilità delle versioni di PHP con WordPress le versioni, consulta [Compatibilità e WordPress versioni di PHP](https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versions/) sul sito Web. WordPress È necessario fare riferimento a queste informazioni prima di eseguire l'aggiornamento a una nuova versione di PHP per le proprie implementazioni. WordPress 

**Topics**
+ [Prerequisiti](#php-wordpress-tutorial-prereqs)
+ [Avvio di un'istanza database in Amazon RDS](#php-hawordpress-tutorial-database)
+ [Scarica WordPress](#php-hawordpress-tutorial-download)
+ [Avvio di un ambiente Elastic Beanstalk](#php-hawordpress-tutorial-launch)
+ [Configurazione di gruppi di sicurezza e proprietà dell'ambiente](#php-wordpress-tutorial-configure)
+ [Configurazione e distribuzione dell'applicazione](#php-wordpress-tutorial-deploy)
+ [Installa WordPress](#php-hawordpress-tutorial-install)
+ [Aggiornamento di chiavi e salt](#php-hawordpress-tutorial-updatesalts)
+ [Rimozione delle limitazioni di accesso](#php-hawordpress-tutorial-updateenv)
+ [Configurazione del gruppo Auto Scaling](#php-hawordpress-tutorial-autoscaling)
+ [Aggiorna WordPress](#php-hawordpress-tutorial-upgrade)
+ [Eliminazione](#php-hawordpress-tutorial-cleanup)
+ [Fasi successive](#php-hawordpress-tutorial-nextsteps)

## Prerequisiti
<a name="php-wordpress-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.

**VPC di default**  
Le procedure Amazon Relational Database Service (Amazon RDS) descritte in questo tutorial 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 ogni AWS 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.

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

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

Quando avvii un'istanza con Amazon RDS, è completamente indipendente da Elastic Beanstalk e dagli ambienti Elastic Beanstalk, e non verrà terminata né monitorata da Elastic Beanstalk.

Nelle fasi seguenti, si utilizzerà la console Amazon RDS per:
+ Lanciare un database con il motore **MySQL**.
+ Attivare una **implementazione Multi-AZ**. Questo crea uno standby in una zona di disponibilità (AZ) diversa per fornire ridondanza dei dati, eliminare i I/O blocchi e ridurre al minimo i picchi di latenza durante i backup di sistema.

**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)**.

Dopo aver creato l'istanza DB, modificare il gruppo di sicurezza ad essa collegato in modo da consentire il traffico in ingresso sulla porta appropriata.

**Nota**  
Questo è lo stesso gruppo di sicurezza che collegherai successivamente all'ambiente Elastic Beanstalk, perciò la regola che aggiungi ora 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, scarica WordPress e crea il tuo ambiente Elastic Beanstalk.

## Scarica WordPress
<a name="php-hawordpress-tutorial-download"></a>

Per prepararsi alla distribuzione WordPress AWS Elastic Beanstalk, è necessario copiare WordPress i file sul computer e fornire le informazioni di configurazione corrette.

**Per creare un progetto WordPress**

1. Scarica WordPress da [wordpress.org](https://wordpress.org/download/).

   ```
   ~$curl https://wordpress.org/wordpress-6.2.tar.gz -o wordpress.tar.gz
   ```

1. Scarica i file di configurazione dal repository di esempio:

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

1. Estrai WordPress e modifica il nome della cartella.

   ```
    ~$ tar -xvf wordpress.tar.gz
    ~$ mv wordpress wordpress-beanstalk
    ~$ cd wordpress-beanstalk
   ```

1. Estrai i file di configurazione durante l' WordPress installazione.

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

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

Utilizza la console Elastic Beanstalk per creare un ambiente Elastic Beanstalk. Dopo aver avviato l'ambiente, puoi configurarlo per connetterti al database, quindi distribuire il WordPress codice nell'ambiente.

Nelle fasi seguenti, si utilizzerà la console Elastic Beanstalk per:
+ Creare un'applicazione Elastic Beanstalk utilizzando la piattaforma **PHP** gestita.
+ Accettare le impostazioni predefinite e il codice di esempio.

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

### Risorse Elastic Beanstalk create
<a name="php-hawordpress-tutorial-launch.EB-resources"></a>
+ **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.

Poiché l'istanza Amazon RDS avviata è al di fuori del tuo ambiente, 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 di gruppi di sicurezza e proprietà dell'ambiente
<a name="php-wordpress-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' WordPress applicazione utilizza un set predefinito di proprietà che corrispondono a quelle configurate da Elastic Beanstalk quando si effettua il provisioning di un database all'interno del proprio 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-hawordpress-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.

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

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

```
wordpress-beanstalk$ tree -aL 1
.
├── .ebextensions
├── index.php
├── LICENSE
├── license.txt
├── readme.html
├── README.md
├── wp-activate.php
├── wp-admin
├── wp-blog-header.php
├── wp-comments-post.php
├── wp-config.php
├── wp-config-sample.php
├── wp-content
├── wp-cron.php
├── wp-includes
├── wp-links-opml.php
├── wp-load.php
├── wp-login.php
├── wp-mail.php
├── wp-settings.php
├── wp-signup.php
├── wp-trackback.php
└── xmlrpc.php
```

Il file `wp-config.php` personalizzato 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 IDs e crea un pacchetto sorgente.

**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 per proteggerlo durante il processo di installazione. WordPress Sostituisci l'indirizzo IP segnaposto nella parte superiore del file con l'indirizzo IP pubblico del computer che utilizzerai per accedere al sito Web dell'ambiente e completare l'installazione. WordPress 
**Nota**  
In base alla rete, potrebbe essere necessario utilizzare un blocco dell'indirizzo IP.
   + `.ebextensions/efs-create.config`— Crea un file system EFS e punti di montaggio in ogni Availability Zone/subnet del tuo 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 `wordpress-beanstalk.zip`.

   ```
   ~/eb-wordpress$ zip ../wordpress-beanstalk.zip -r * .[^.]*
   ```

Carica il pacchetto sorgente su Elastic WordPress Beanstalk per distribuirlo 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 WordPress
<a name="php-hawordpress-tutorial-install"></a>

**Per completare l' WordPress installazione**

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. Verrai reindirizzato a una procedura guidata di WordPress installazione perché non hai ancora configurato il sito.

1. Esegui un'installazione standard. Il file `wp-config.php` è già presente nel codice sorgente e configurato per leggere le informazioni di connessione al database dall'ambiente, pertanto il sistema non dovrebbe richiedere la configurazione della connessione.

L'installazione richiede circa un minuto.

## Aggiornamento di chiavi e salt
<a name="php-hawordpress-tutorial-updatesalts"></a>

Il file WordPress di configurazione legge `wp-config.php` anche i valori delle chiavi e dei sali dalle proprietà dell'ambiente. Al momento, queste proprietà sono tutte impostate su `test` dal file `wordpress.config` nella cartella `.ebextensions`.

Il salt di hash può essere un qualsiasi valore che soddisfi i [requisiti di proprietà dell'ambiente](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console), che però non deve essere memorizzato nel controllo del codice sorgente. Utilizza la console Elastic Beanstalk per impostare queste proprietà direttamente nell'ambiente.

**Aggiornamento delle proprietà di ambiente**

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. In **Software**, selezionare **Edit (Modifica)**.

1. Modificare le seguenti proprietà per `Environment properties`:
   + `AUTH_KEY`: il valore scelto per `AUTH_KEY`.
   + `SECURE_AUTH_KEY`: il valore scelto per `SECURE_AUTH_KEY`.
   + `LOGGED_IN_KEY`: il valore scelto per `LOGGED_IN_KEY`.
   + `NONCE_KEY`: il valore scelto per `NONCE_KEY`.
   + `AUTH_SALT`: il valore scelto per `AUTH_SALT`.
   + `SECURE_AUTH_SALT`: il valore scelto per `SECURE_AUTH_SALT`.
   + `LOGGED_IN_SALT`: il valore scelto per `LOGGED_IN_SALT`.
   + `NONCE_SALT`: il valore scelto per `NONCE_SALT`.

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

**Nota**  
Impostando le proprietà direttamente nell'ambiente, si sovrascrivono i valori in `wordpress.config`.

## Rimozione delle limitazioni di accesso
<a name="php-hawordpress-tutorial-updateenv"></a>

Il progetto di esempio include il file di configurazione `loadbalancer-sg.config`. Crea un gruppo di sicurezza e lo assegna al sistema di bilanciamento del carico dell'ambiente, utilizzando l'indirizzo IP configurato in `dev.config`. Limita l'accesso HTTP sulla porta 80 alle connessioni dalla rete. In caso contrario, una parte esterna potrebbe connettersi al tuo sito prima che tu abbia installato WordPress e configurato il tuo account amministratore.

Ora che hai installato WordPress, rimuovi il file di configurazione per aprire il sito al mondo.

**Per rimuovere le limitazioni e aggiornare l'ambiente**

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

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

1. Crea un bundle di origine.

   ```
   ~/eb-wordpress$ zip ../wordpress-beanstalk-v2.zip -r * .[^.]*
   ```

Carica il pacchetto sorgente su Elastic WordPress Beanstalk per distribuirlo 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-hawordpress-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 il server Web nel tuo ambiente diventi un singolo punto di errore. Ciò consente anche di distribuire le modifiche senza rendere inattivo il tuo sito.

**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 EFS 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.

## Aggiorna WordPress
<a name="php-hawordpress-tutorial-upgrade"></a>

Per eseguire l'aggiornamento a una nuova versione di WordPress, esegui il backup del sito e distribuiscilo in un nuovo ambiente.

**Importante**  
Non utilizzate la funzionalità di aggiornamento inclusa WordPress né aggiornate i file sorgente per utilizzare una nuova versione. Entrambe queste azioni possono far sì che il post URLs restituisca errori 404 anche se questi sono ancora presenti nel database e nel file system.

**Per eseguire l'aggiornamento WordPress**

1. Nella console di WordPress amministrazione, utilizza lo strumento di esportazione per esportare i post in un file XML.

1. Distribuisci e installa la nuova versione di WordPress Elastic Beanstalk seguendo gli stessi passaggi utilizzati per installare la versione precedente. Per evitare tempi di inattività, crea un ambiente con la nuova versione.

1. Nella nuova versione, installa lo strumento WordPress Importer nella console di amministrazione e usalo per importare il file XML contenente i tuoi post. Se i post sono stati creati da un utente amministratore in una vecchia versione, assegnali all'utente amministratore del nuovo sito anziché cercare di importare l'utente admin.

1. Se hai distribuito la nuova versione in un ambiente distinto, esegui uno [scambio di CNAME](using-features.CNAMESwap.md) per reindirizzare gli utenti dal vecchio sito al nuovo.

## Eliminazione
<a name="php-hawordpress-tutorial-cleanup"></a>

Dopo aver finito di lavorare con 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-hawordpress-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.

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