Rails App Server Stacks Layer AWS OpsWorks - AWS OpsWorks

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

Rails App Server Stacks Layer AWS OpsWorks

Importante

Il AWS OpsWorks Stacks servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disabilitato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il AWS Support Team su AWS re:post o tramite Premium AWS Support.

Nota

Questo livello è disponibile solo per stack basati su Linux.

Il livello Rails App Server è un livello AWS OpsWorks Stacks che fornisce un modello per le istanze che funzionano come server di applicazioni Rails.

Installazione: AWS OpsWorks Stacks utilizza il programma di installazione dei pacchetti dell'istanza per installare i pacchetti del server nelle loro posizioni predefinite. Per ulteriori informazioni sull'installazione di Apache/Passenger, consulta Phusion Passenger. Per ulteriori informazioni sulla registrazione, consulta la pagina relativa ai file di log. Per ulteriori informazioni sull'installazione di Nginx/Unicorn, consulta Unicorn.

La pagina Add Layer (Aggiungi livello) include le opzioni di configurazione facoltative seguenti.

Ruby Version (Versione Ruby)

La versione di Ruby che verrà utilizzata dalle applicazioni. Il valore predefinito è 2.3.

Puoi anche specificare la tua versione preferita di Ruby sostituendo l'attributo [:opsworks][:ruby_version].

Nota

AWS OpsWorks Stacks installa un pacchetto Ruby separato che deve essere utilizzato dalle ricette e dall'agent dell'istanza. Per ulteriori informazioni, consulta Versioni di Ruby.

Stack Rails

Lo stack Rails predefinito è Apache2 con Phusion Passenger. Puoi utilizzare anche Nginx con Unicorn.

Nota

Se utilizzi Nginx e Unicorn, devi aggiungere il gem unicorn al Gemfile dell'app, come illustrato nell'esempio seguente:

source 'https://rubygems.org' gem 'rails', '3.2.15' ... # Use unicorn as the app server gem 'unicorn' ...
Passenger Version (Versione Passenger)

Se hai specificato Apache2/Passenger, devi specificare la versione di Passenger. Il valore predefinito è 5.0.28.

Rubygems Version (Versione Rubygems)

La versione predefinita di Rubygems è la 2.5.1.

Install and Manage Bundler (Installa e gestisci Bundler)

Consente di scegliere se installare e gestire Bundler. Il valore predefinito è Yes (Sì).

Bundler version (Versione Bundler)

La versione predefinita di Bundler è la 1.12.5.

Gruppi di sicurezza personalizzati

Questa impostazione viene visualizzata se hai scelto di non associare automaticamente un gruppo di sicurezza AWS OpsWorks Stacks integrato ai tuoi livelli. Devi specificare il gruppo di sicurezza da associare al livello. Per ulteriori informazioni, consulta Creare un nuovo stack.

Elastic Load Balancer

Puoi collegare un load balancer Elastic Load Balancing alle istanze del layer.

Puoi modificare alcune impostazioni di configurazione utilizzando un JSON personalizzato o un file di attributi personalizzato. Per ulteriori informazioni, consulta Sostituzione degli attributi. Per un elenco degli attributi Apache, Nginx, Passenger e Unicorn Phusion che possono essere sostituiti, consulta Attributi dei libri di ricette predefiniti.

Importante

Se la tua applicazione Ruby on Rails usa il protocollo SSL, ti consigliamo di disabilitare SSLv3, se possibile, per risolvere le vulnerabilità descritte in CVE-2014-3566. Per ulteriori informazioni, consulta Disabilitazione di SSLv3 per i server Rails.

Disabilitazione di SSLv3 per i server Rails

Per disabilitare SSLv3 per i server Rails, aggiorna l'impostazione Ruby Version (Versione Ruby) del livello su 2.1 o versione successiva, per installare Ruby 2.1.4 o versione successiva come versione utilizzata dalle applicazioni.

  • Aggiorna l'impostazione Ruby Version (Versione Ruby) del livello su 2.1 o versione successiva.

  • Aggiorna il file di configurazione per il tuo stack Rails, come segue.

Apache con Phusion Passenger

Aggiorna l'impostazione SSLProtocol nel file ssl.conf del server Apache, come descritto in Disabilitazione di SSLv3 per i server Apache.

Nginx con Unicorn

Aggiungi una direttiva ssl_protocols esplicita al file nginx.conf del server Nginx. Per disabilitare SSLv3, sovrascrivi il file nginx.conf.erb modello del ricettario nginx integrato, che le ricette di configurazione del livello Rails App Server utilizzano per creare, e aggiungi la seguente direttiva: nginx.conf

ssl_protocols TLSv1.2;

Per ulteriori informazioni su come configurare nginx.conf, consulta la pagina relativa alla configurazione di server HTTPS. Per ulteriori informazioni su come sostituire un modello integrato, consulta Utilizzo di modelli personalizzati .

Connessione a un database

Quando distribuisci un'app, AWS OpsWorks Stacks crea un nuovo file utilizzando le informazioni degli attributi dell'app. database.ymldeploy Se colleghi un'istanza MySQL o Amazon RDS all' AWS OpsWorks app, Stacks aggiunge le informazioni deploy di connessione agli attributi, in database.yml modo che contengano automaticamente i dati di connessione corretti.

Se un'app non dispone di un database allegato, per impostazione predefinita, AWS OpsWorks Stacks non aggiunge alcuna informazione di connessione agli deploy attributi e non crea. database.yml Se desideri utilizzare un database diverso, puoi usare un JSON personalizzato per aggiungere attributi di database agli attributi deploy dell'app con le informazioni di connessione. Gli attributi sono tutti sotto["deploy"]["appshortname"]["database"], dove appshortname è il nome breve dell'app, che AWS OpsWorks Stacks genera dal nome dell'app. I valori specificati in un JSON personalizzato sostituiscono le impostazioni predefinite. Per ulteriori informazioni, consulta Aggiunta di app.

AWS OpsWorks Stacks incorpora i seguenti valori di attributo in. [:...][:database]database.yml Gli attributi richiesti dipendono dal particolare database, ma è necessario disporre di un host attributo altrimenti AWS OpsWorks Stacks non verrà creato. database.yml

  • [:adapter] (String)— L'adattatore del database, ad esempiomysql.

  • [:database](String) — Il nome del database.

  • [:encoding](String) — La codifica, che in genere è impostata su. utf8

  • [:host](String) — L'URL dell'host, ad esempiorailsexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com.

  • [:reconnect](Boolean) — Indica se l'applicazione deve riconnettersi se la connessione non esiste più.

  • [:password](String) — La password del database.

  • [:port] (numero). — Il numero di porta del database. Utilizza questo attributo per sostituire il numero di porta predefinito, che viene impostato dall'adattatore.

  • [:username](String) — Il nome utente del database.

L'esempio seguente mostra un JSON personalizzato per un'app il cui nome breve è myapp.

{ "deploy" : { "myapp" : { "database" : { "adapter" : "adapter", "database" : "databasename", "host" : "host", "password" : "password", "port" : portnumber "reconnect" : true/false, "username" : "username" } } } }

Per ulteriori informazioni su come specificare un JSON personalizzato, consulta Utilizzo di un JSON personalizzato. Per visualizzare il modello utilizzato per creare database.yml (database.yml.erb), vai al repository del libro di ricette integrato.

Distribuzione di app Ruby on Rails

Puoi distribuire app Ruby on Rails da uno qualsiasi dei repository supportati. Di seguito viene mostrato come distribuire un'app Ruby on Rails di esempio in un server che esegue uno stack Rails Apache/Passenger. Il codice di esempio è archiviato in un GitHub archivio pubblico, ma la procedura di base è la stessa per gli altri repository supportati. Per ulteriori informazioni su come creare e distribuire app, consulta App. Per visualizzare il codice di esempio, che include commenti dettagliati, vai a https://github.com/awslabs/ opsworks-demo-rails-photo -share-app.

Per distribuire un'app Ruby on Rails da un repository GitHub
  1. Crea uno stack con un livello Rails App Server con Apache/Passenger come stack Rails, aggiungi un'istanza 24/7 al layer e avvialo.

  2. Una volta che l'istanza è online, aggiungere un'app allo stack e specificare le impostazioni seguenti:

    • Name (Nome) - Il nome preferito. Nell'esempio viene utilizzato PhotoPoll.

      AWS OpsWorks Stacks utilizza questo nome per scopi di visualizzazione e genera un nome breve per uso interno e per identificare l'app negli attributi di configurazione e distribuzione dello stack. Ad esempio, il nome PhotoPoll breve è photopoll.

    • App type (Tipo di app) - Ruby on Rails.

    • Rails environment (Ambiente Rails) - Gli ambienti disponibili sono determinati dall'applicazione.

      L'app di esempio ne ha tre: development, test e production. In questo esempio impostare l'ambiente su development. Vedere il codice di esempio per le descrizioni di ciascun ambiente.

    • Tipo di repository: qualsiasi tipo di repository supportato. Specificare Git per questo esempio

    • Repository URL (URL repository) - Il repository da cui dovrebbe essere distribuito il codice.

      In questo esempio impostare l'URL su git://github.com/awslabs/opsworks-demo-rails-photo-share-app.

    Utilizzare i valori predefiniti delle impostazioni restanti e fare clic su Add App (Aggiungi app) per creare l'app.

  3. Distribuisci l'app sull'istanza di Rails App Server.

  4. Al termine della distribuzione, vai alla pagina Istanze e fai clic sull'indirizzo IP pubblico dell'istanza di Rails App Server. Verrà visualizzato un codice analogo al seguente: