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 Laravel su Elastic Beanstalk
Laravel è un framework open source, () per. model-view-controller MVC 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 (RDSAmazon).
Sections
Prerequisiti
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 Guida introduttiva a Elastic Beanstalk 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 ($) 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
Laravel 6 richiede 7.2 o versione successiva. PHP Richiede anche le PHP estensioni elencate nell'argomento dei requisiti del server
Per informazioni sul supporto e sulla manutenzione di Laravel, vedere l'argomento relativo alle policy di supporto
Avvio di un ambiente Elastic Beanstalk
Utilizza la console Elastic Beanstalk per creare un ambiente Elastic Beanstalk. Scegli la PHPpiattaforma e accetta le impostazioni predefinite e il codice di esempio.
Per avviare un ambiente (console)
-
Per Platform (Piattaforma), selezionare il ramo della piattaforma e la piattaforma che corrispondono al linguaggio utilizzato dall'applicazione.
-
In Application code (Codice applicazione), scegli Sample application (Applicazione di esempio).
-
Selezionare Review and launch (Controlla e avvia).
-
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:
-
EC2istanza: una macchina virtuale Amazon Elastic Compute Cloud (AmazonEC2) 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 che si trova davanti all'app Web, inoltra le richieste, fornisce risorse statiche e genera log di accesso 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 HTTP traffico proveniente dal sistema di bilanciamento del carico di raggiungere l'EC2istanza 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 consente al HTTP 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.
-
AWS CloudFormation stack: Elastic AWS 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 AWS CloudFormation
. -
Nome di dominio: un nome di dominio che indirizza alla tua app Web nel modulo
subdomain
.region
.elasticbeanstalk.com.Sicurezza del dominio
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 cookienella 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.
Installazione di Laravel e creazione di un sito Web
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.
Distribuzione dell'applicazione
Crea un bundle di origine 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
Apri la console Elastic Beanstalk
e, nell'elenco Regioni, seleziona la tua. Regione AWS -
Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.
Nota
Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.
-
Nella pagina della panoramica dell'ambiente scegliere Upload and deploy (Carica e distribuisci).
-
Utilizzare la finestra di dialogo su schermo per caricare il bundle di origine.
-
Selezionare Deploy (Distribuisci).
-
Una volta completata la distribuzione, puoi scegliere il sito in cui URL aprire il tuo sito Web in una nuova scheda.
Nota
Per ottimizzare ulteriormente il bundle di origine, inizializza un repository Git e utilizza il comando git
archive 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
Al termine della distribuzione, fai clic su URL per aprire l'applicazione Laravel nel browser:
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 verificarlo aggiungendo /public
a. 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
Apri la console Elastic Beanstalk
e, nell'elenco Regioni, seleziona la tua. Regione AWS -
Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.
Nota
Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.
Nel riquadro di navigazione, seleziona Configuration (Configurazione).
-
Nella categoria di configurazione Updates, monitoring, and logging (Aggiornamenti, monitoraggio e registrazione), scegli Edit (Modifica).
-
In Document root (Radice documento), immettere
/public
. -
Per salvare le modifiche scegli Apply (Applica) nella parte inferiore della pagina.
-
Una volta completato l'aggiornamento, fai clic su URL per riaprire il sito nel browser.
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
Avvia un'istanza RDS DB nel tuo ambiente Elastic Beanstalk. Puoi usare i SQL database My SQL o Postgree con Laravel su Elastic Beanstalk. SQLServer Per questo esempio, useremo My. SQL
Per aggiungere un'istanza RDS DB all'ambiente Elastic Beanstalk
Apri la console Elastic Beanstalk
e, nell'elenco Regioni, seleziona la tua. Regione AWS -
Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.
Nota
Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.
Nel pannello di navigazione, selezionare Configuration (Configurazione).
-
Nella categoria di configurazione del Database, scegliere Edit (Modifica).
-
In Engine (Motore), selezionare mysql.
-
Digitare username (Nome utente) e password (Password) principali. Elastic Beanstalk fornirà questi valori alla tua applicazione utilizzando le proprietà dell'ambiente.
-
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.
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:
Esempio ~/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:
Esempio ~/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
-
Creare un nuovo bundle di origine:
~/eb-laravel$
zip ../laravel-v2-rds.zip -r * .[^.]* -x "vendor/*"
Apri la console Elastic Beanstalk
e, nell'elenco Regioni, seleziona la tua. Regione AWS -
Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.
Nota
Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.
-
Selezionare Upload and Deploy (Carica e distribuisci).
-
Selezionare Browse (Sfoglia) e caricare
laravel-v2-rds.zip
. -
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:
Pulizia
Dopo aver usato Elastic Beanstalk, puoi terminare l'ambiente. Elastic Beanstalk AWS interrompe tutte le risorse associate all'ambiente, come istanze EC2 Amazon, istanze di database, sistemi di bilanciamento del carico, gruppi di sicurezza e allarmi.
Per terminare l'ambiente Elastic Beanstalk dalla console
Apri la console Elastic Beanstalk
e, nell'elenco Regioni, seleziona la tua. Regione AWS -
Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.
Nota
Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.
-
Seleziona Actions (Operazioni), quindi Terminate environment (Termina ambiente).
-
Utilizza la finestra di dialogo su schermo per confermare la terminazione dell'ambiente.
Con Elastic Beanstalk puoi creare facilmente un nuovo ambiente per l'applicazione in qualsiasi momento.
Inoltre, puoi terminare le risorse di database create al di fuori dell'ambiente Elastic Beanstalk. Quando interrompi un'istanza Amazon RDS DB, puoi scattare uno snapshot e ripristinare i dati su un'altra istanza in un secondo momento.
Per terminare la tua istanza DB RDS
-
Apri la RDSconsole Amazon
. -
Scegli Databases (Database).
-
Scegli l'istanza database.
-
Scegli Actions (Operazioni), quindi Delete (Elimina).
-
Scegliere se creare una snapshot, quindi selezionare Delete (Elimina).
Passaggi successivi
Per ulteriori informazioni su Laravel, visita il sito Web ufficiale di Laravel su 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 Interface CLI (EB 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.
Esempio .ebextensions/composer.config
option_settings: aws:elasticbeanstalk:container:php:phpini: document_root: /public
Per ulteriori informazioni, consulta Personalizzazione avanzata dell'ambiente con i file di configurazione (.ebextensions).
L'esecuzione di un'istanza Amazon RDS DB nel tuo ambiente Elastic Beanstalk è ottima per lo sviluppo e i test, ma lega il ciclo di vita del database all'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.