

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

# Distribuzione di un'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.