Distribuzione di un'applicazione Rails su Elastic Beanstalk - AWS Elastic Beanstalk

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

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 ottenere una versione integrata con Windows di Ubuntu e Bash.

Dipendenze Rails

Il framework Rails 6.1.4.1 ha le seguenti dipendenze. Assicurati di averli tutti installati.

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)
  1. Apri la console Elastic Beanstalk utilizzando questo link preconfigurato: console.aws.amazon. com/elasticbeanstalk/home#/newApplication? applicationNameenvironmentType=tutorial& = LoadBalanced

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

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

  4. Selezionare Review and launch (Controlla e avvia).

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

    Per aumentare la sicurezza delle tue applicazioni Elastic Beanstalk, il dominio elasticbeanstalk.com è registrato nella Public Suffix List (). PSL

    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 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, 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. Se c'è una mancata corrispondenza tra le due versioni di Puma, usa una delle seguenti opzioni:

  • Utilizza la versione Puma installata dal comando rails new precedente. In questo caso, devi aggiungere un Procfile 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 bundle sul 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.

Pagina di sviluppo del sito Rails predefinito.

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
  1. Apri la console Elastic Beanstalk e, nell'elenco Regioni, seleziona la tua. Regione AWS

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

  3. Nel riquadro di navigazione, seleziona Configuration (Configurazione).

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

  5. Scorri verso il basso fino a Proprietà dell'ambiente.

  6. Seleziona Aggiungi proprietà dell'ambiente.

  7. Inserisci la coppia di Nome e Valore della proprietà.

  8. Se è necessario aggiungere altre variabili, ripeti il Passaggio 6 e il Passaggio 7.

  9. 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
  1. Apri la console Elastic Beanstalk e, nell'elenco Regioni, seleziona la tua. Regione AWS

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

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

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

  5. Selezionare Deploy (Distribuisci).

  6. 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
  1. Apri la console Elastic Beanstalk e, nell'elenco Regioni, seleziona la tua. Regione AWS

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

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

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

Infine, se prevedi di utilizzare l'applicazione in un ambiente di produzione, ti consigliamo di configurare un nome di dominio personalizzato per il tuo ambiente e abilitare connessioni sicure. HTTPS