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 Rails su Elastic Beanstalk
Rails è un framework open source model-view-controller (MVC) per Ruby. Questo tutorial illustra il processo di generazione di un'applicazione Rails e la sua distribuzione in un ambiente. AWS Elastic Beanstalk
Sections
Prerequisiti
Nota
AWS gli account creati dopo il 1° ottobre 2024 dovranno temporaneamente impostare un'opzione per creare correttamente un nuovo ambiente. Come per i nuovi account, ma solo per le regioni in cui l'account non dispone già di un ambiente, gli account esistenti dovranno intraprendere la stessa azione. Per ulteriori informazioni, consulta Modelli di avvio.
Conoscenza di base di Elastic Beanstalk
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.
Riga di comando
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
Dipendenze Rails
Il framework Rails 6.1.4.1 ha le seguenti dipendenze. Assicurati di averli tutti installati.
-
Ruby 2.5.0 o versioni successive: per istruzioni di installazione, consulta Configurazione dell'ambiente di sviluppo Ruby per Elastic Beanstalk.
In questo tutorial utilizziamo Ruby 3.0.2 e la versione della piattaforma Elastic Beanstalk corrispondente.
-
Node.js: per istruzioni di installazione, consulta Installazione di Node.js tramite il programma di gestione dei pacchetti
. -
Yarn: per istruzioni di installazione, consulta Installazione
sul sito Web Yarn.
Avvio di un ambiente Elastic Beanstalk
Utilizza la console Elastic Beanstalk per creare un ambiente Elastic Beanstalk. Scegli la piattaforma Ruby 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, consulta Utilizzo di Elastic Beanstalk con Amazon S3.
Installazione di Rails e generazione di un sito Web
Installa Rails e le relative dipendenze con il comando gem
.
~$ gem install rails
Fetching: concurrent-ruby-1.1.9.gem
Successfully installed concurrent-ruby-1.1.9
Fetching: rack-2.2.3.gem
Successfully installed rack-2.2.3
...
Testa l'installazione di Rails.
~$ rails --version
Rails 6.1.4.1
Utilizza rails new
con il nome dell'applicazione per creare un nuovo progetto Rails.
~$ rails new ~/eb-rails
Rails crea una directory con il nome specificato, genera tutti i file necessari per eseguire un progetto di esempio in locale, quindi esegue il bundler per installare tutte le dipendenze (Gems) definite nel Gemfile del progetto.
Nota
Questo processo installa l'ultima versione di Puma per il progetto. Questa versione potrebbe essere diversa dalla versione fornita da Elastic Beanstalk sulla versione della piattaforma Ruby del tuo ambiente. Per visualizzare le versioni Puma fornite da Elastic Beanstalk, consulta Cronologia della piattaforma Ruby nella Guida per AWS Elastic Beanstalk Platforms. Per ulteriori informazioni sulla versione più recente di Puma, consulta il sito Web PUMA.io
Utilizza la versione Puma installata dal comando
rails new
precedente. In questo caso, devi aggiungere unProcfile
per consentire alla piattaforma di utilizzare la versione del server Puma fornita. Per ulteriori informazioni, consulta Configurazione del processo di applicazione con un Procfile su Elastic Beanstalk..Aggiorna la versione di Puma in modo che sia coerente con la versione preinstallata sulla versione della piattaforma Ruby del tuo ambiente. Per farlo, modifica la versione di Puma nel Gemfile situato nella root della directory di origine del progetto. Quindi esegui
bundle update
. Per ulteriori informazioni, consulta la pagina dell'aggiornamento del bundlesul sito Web di Bundler.io.
Testa la tua installazione Rails eseguendo il progetto predefinito in locale.
~$ cd eb-rails
~/eb-rails$ rails server
=> Booting Puma
=> Rails 6.1.4.1 application starting in development
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.5.2 (ruby 3.0.2-p107) ("Zawgyi")
* Min threads: 5
* Max threads: 5
* Environment: development
* PID: 77857
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop
...
Apri http://localhost:3000
in un browser Web per visualizzare il progetto predefinito in azione.
Questa pagina può essere visualizzata solo in modalità di sviluppo. Aggiungi alcuni contenuti alla pagina iniziale dell'applicazione per supportare una distribuzione di produzione in Elastic Beanstalk. Usa rails generate
per creare un controller, una route e una visualizzazione per la pagina di benvenuto.
~/eb-rails$ rails generate controller WelcomePage welcome
create app/controllers/welcome_page_controller.rb
route get 'welcome_page/welcome'
invoke erb
create app/views/welcome_page
create app/views/welcome_page/welcome.html.erb
invoke test_unit
create test/controllers/welcome_page_controller_test.rb
invoke helper
create app/helpers/welcome_page_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/welcome_page.coffee
invoke scss
create app/assets/stylesheets/welcome_page.scss.
In questo modo, avrai tutto quello che ti serve per accedere alla pagina in /welcome_page/welcome
. Prima di pubblicare le modifiche, tuttavia, cambia i contenuti della visualizzazione e aggiungi un instradamento per far apparire questa pagina nella parte superiore del sito.
Usa un editor di testo per modificare i contenuti in app/views/welcome_page/welcome.html.erb
. Per questo esempio, potrai utilizzare cat
per sovrascrivere semplicemente il contenuto del file esistente.
Esempio app/views/welcome_page/welcome.html.erb
<h1>Welcome!</h1>
<p>This is the front page of my first Rails application on Elastic Beanstalk.</p>
Infine, aggiungi il seguente instradamento a config/routes.rb
:
Esempio config/routes.rb
Rails.application.routes.draw do
get 'welcome_page/welcome'
root 'welcome_page#welcome'
In questo modo, Rails instrada le richieste alla directory principale del sito Web al metodo di benvenuto del controller della pagina di benvenuto che trasforma il contenuto nella visualizzazione di benvenuto (welcome.html.erb
).
Affinché Elastic Beanstalk distribuisca correttamente l'applicazione sulla piattaforma Ruby, è necessario aggiornare Gemfile.lock
. Alcune dipendenze di Gemfile.lock
potrebbero essere specifiche per la piattaforma. Pertanto, dobbiamo aggiungere platform ruby
a Gemfile.lock
in modo che tutte le dipendenze richieste vengano installate con la distribuzione.
~/eb-rails$ bundle lock --add-platform ruby
Fetching gem metadata from https://rubygems.org/............
Resolving dependencies...
Writing lockfile to /Users/janedoe/EBDPT/RubyApps/eb-rails-doc-app/Gemfile.lock
Configurazione delle impostazioni di Rails
Usa la console Elastic Beanstalk per configurare Rails con proprietà dell'ambiente. Imposta la proprietà dell'ambiente SECRET_KEY_BASE
su una stringa di massimo 256 caratteri alfanumerici.
Rails utilizza questa proprietà per creare le chiavi. Pertanto è necessario tenerla segreta e non memorizzarla nel controllo del codice sorgente in testo normale. La fornisci al codice Rails nel tuo ambiente attraverso una proprietà di ambiente.
Per configurare le proprietà dell'ambiente nella console 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 riquadro di navigazione, seleziona Configuration (Configurazione).
-
Nella categoria di configurazione Updates, monitoring, and logging (Aggiornamenti, monitoraggio e registrazione), scegli Edit (Modifica).
-
Scorri verso il basso fino a Proprietà dell'ambiente.
-
Seleziona Aggiungi proprietà dell'ambiente.
-
Inserisci la coppia di Nome e Valore della proprietà.
-
Se è necessario aggiungere altre variabili, ripeti il Passaggio 6 e il Passaggio 7.
-
Per salvare le modifiche scegli Apply (Applica) nella parte inferiore della pagina.
A questo punto puoi distribuire il sito nell'ambiente.
Distribuzione dell'applicazione
Crea un bundle di origine che contiene i file creati da Rails. Il comando seguente crea un bundle di origine denominato rails-default.zip
.
~/eb-rails$ zip ../rails-default.zip -r * .[^.]*
Carica il bundle di origine in Elastic Beanstalk per distribuire Rails nel tuo 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.
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.
Passaggi successivi
Per ulteriori informazioni su Rails, visita il sito rubyonrails.org
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.