Rails App Server AWS OpsWorks Stacks Layer - AWS OpsWorks

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Rails App Server AWS OpsWorks Stacks Layer

Important

Le AWS OpsWorks Stacks service a atteint sa fin de vie le 26 mai 2024 et a été désactivé pour les nouveaux clients et les clients existants. Nous recommandons vivement aux clients de migrer leurs charges de travail vers d'autres solutions dès que possible. Si vous avez des questions sur la migration, contactez l' AWS Support équipe sur AWS Re:Post ou via le AWS Support Premium.

Note

Cette couche est disponible uniquement pour les piles Linux.

La couche Rails App Server est une couche AWS OpsWorks Stacks qui fournit un modèle pour les instances qui fonctionnent comme des serveurs d'applications Rails.

Installation : AWS OpsWorks Stacks utilise le programme d'installation des packages de l'instance pour installer les packages du serveur à leur emplacement par défaut. Pour plus d'informations sur l'installation d'Apache/Passenger, consultez Phusion Passenger. Pour plus d'informations sur la journalisation, consultez Fichiers journaux. Pour plus d'informations sur l'installation de Nginx/Licorne, consultez Unicorn.

La page Add Layer (Ajouter une couche) fournit les options de configuration suivantes, toutes étant facultatives.

Ruby Version (Version de Ruby)

Version de Ruby qui sera utilisée par vos applications. La valeur par défaut est 2.3.

Vous pouvez aussi spécifier votre version Ruby préférée en remplaçant l'attribut [:opsworks][:ruby_version].

Note

AWS OpsWorks Stacks installe un package Ruby distinct à utiliser par les recettes et l'agent d'instance. Pour plus d’informations, consultez Versions de Ruby.

Rails Stack (Pile Rails)

La pile Rails par défaut est Apache2 avec Phusion Passenger. Vous pouvez aussi utiliser Nginx avec Unicorn.

Note

Si vous utilisez Nginx et Unicorn, vous devez ajouter le GEM Unicorn au fichier Gemfile de votre application, comme dans l'exemple suivant :

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

Si vous avez spécifié Apache2/Passenger, vous devez spécifier la version de Passenger. La valeur par défaut est 5.0.28.

Rubygems Version (Version de Rubygems)

La version de Rubygems par défaut est 2.5.1.

Install and Manage Bundler (Installer et gérer Bundler)

Permet de choisir s'il convient d'installer et de gérer Bundler. La valeur par défaut est Yes (Oui).

Bundler version (Version de Bundler)

La version Bundler par défaut est 1.12.5.

Custom security groups

Ce paramètre apparaît si vous avez choisi de ne pas associer automatiquement un groupe de sécurité AWS OpsWorks Stacks intégré à vos couches. Vous devez spécifier le groupe de sécurité à associer à la couche. Pour plus d’informations, consultez Créer une pile.

Elastic Load Balancer

Vous pouvez associer un équilibreur de charge Elastic Load Balancing aux instances de la couche.

Vous pouvez modifier certains paramètres de configuration en utilisant JSON personnalisé ou un fichier d'attributs personnalisé. Pour plus d’informations, consultez Remplacement des attributs. Pour obtenir la liste des attributs Apache, Nginx, Phusion Passenger et Unicorn qui peuvent être remplacés, consultez Attributs des livres de recettes intégrés.

Important

Si votre application Ruby on Rails utilise SSL, nous vous recommandons de désactiver SSLv3 si possible, afin de prendre en compte les vulnérabilités décrites dans CVE-2014-3566. Pour plus d’informations, consultez Désactivation de SSLv3 pour les serveurs Rails.

Désactivation de SSLv3 pour les serveurs Rails

Pour désactiver SSLv3 pour les serveurs Rails, mettez à jour le paramètre Ruby Version (Version de Ruby) de la couche avec la valeur 2.1 ou supérieure, ce qui installe Ruby 2.1.4 ou version ultérieure en tant que version utilisée par les applications.

  • Mettez à jour le paramètre Ruby Version (Version de Ruby) avec la valeur 2.1 ou supérieure.

  • Mettez à jour le fichier de configuration de votre pile Rails comme suit.

Apache avec Phusion Passenger

Mettez à jour le paramètre SSLProtocol du fichier ssl.conf du serveur Apache, comme décrit dans Désactivation de SSLv3 pour les serveurs Apache.

Nginx avec Unicorn

Ajoutez une directive ssl_protocols explicite au fichier nginx.conf du serveur Nginx. Pour désactiver SSLv3, remplacez le fichier nginx.conf.erb modèle du livre de recettes nginx intégré, que les recettes de configuration de la couche Rails App Server utilisent pour créer, et ajoutez la directive suivante : nginx.conf

ssl_protocols TLSv1.2;

Pour plus d'informations sur la configuration de nginx.conf, consultez Configuration des serveurs HTTPS. Pour plus d'informations sur le remplacement d'un modèle intégré, consultez Utilisation de modèles personnalisés.

Connexion à une base de données

Lorsque vous déployez une application, AWS OpsWorks Stacks crée un nouveau database.yml fichier en utilisant les informations provenant des deployattributs de l'application. Si vous attachez une instance MySQL ou Amazon RDS à l'application, AWS OpsWorks Stacks ajoute les informations de connexion aux deploy attributs, afin qu'elles contiennent database.yml automatiquement les données de connexion correctes.

Si aucune base de données n'est attachée à une application, par défaut, AWS OpsWorks Stacks n'ajoute aucune information de connexion aux deploy attributs et ne crée database.yml pas. Si vous souhaitez utiliser une autre base de données, vous pouvez utiliser JSON personnalisé pour ajouter les attributs de base de données aux attributs deploy de l'application avec les informations de connexion. Les attributs se trouvent tous en dessous["deploy"]["appshortname"]["database"], où appshortname est le nom abrégé de l'application, que AWS OpsWorks Stacks génère à partir du nom de l'application. Les valeurs que vous spécifiez dans JSON personnalisé remplacent les paramètres par défaut. Pour plus d’informations, consultez Ajout d'applications.

AWS OpsWorks Stacks intègre les valeurs [:...][:database]d'attribut suivantes dans. database.yml Les attributs requis dépendent de la base de données en question, mais vous devez avoir un host attribut, sinon AWS OpsWorks Stacks n'en créera database.yml pas.

  • [:adapter] (String)— L'adaptateur de base de données, tel quemysql.

  • [:database](String) — Nom de la base de données.

  • [:encoding](String) — Le codage, qui est généralement défini surutf8.

  • [:host](String) — L'URL de l'hôte, telle querailsexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com.

  • [:reconnect](Boolean) — Indique si l'application doit se reconnecter si la connexion n'existe plus.

  • [:password](String) — Le mot de passe de la base de données.

  • [:port] (Numéro). — Le numéro de port de la base de données. Utilisez cet attribut pour remplacer le numéro de port par défaut, qui est défini par l'adaptateur.

  • [:username](String) — Nom d'utilisateur de la base de données.

L'exemple suivant montre JSON personnalisé pour une application dont le nom court est myapp.

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

Pour plus d'informations sur la spécification du JSON personnalisé, consultez Utilisation du JSON personnalisé. Pour voir le modèle utilisé pour créer database.yml (database.yml.erb), accédez au référentiel du livre de recettes intégré.

Déploiement des applications Ruby on Rails

Vous pouvez déployer les applications Ruby on Rails à partir de n'importe lequel des référentiels pris en charge. Ce qui suit montre comment déployer un exemple d'application Ruby on Rails sur un serveur exécutant une pile Rails Apache/Passenger. L'exemple de code est stocké dans un GitHub référentiel public, mais la procédure de base est la même pour les autres référentiels pris en charge. Pour plus d'informations sur la façon de créer et de déployer des applications, consultez Applications. Pour consulter le code de l'exemple, qui inclut de nombreux commentaires, rendez-vous sur https://github.com/awslabs/ opsworks-demo-rails-photo -share-app.

Pour déployer une application Ruby on Rails à partir d'un GitHub référentiel
  1. Créez une pile avec une couche Rails App Server avec Apache/Passenger comme pile Rails, ajoutez une instance 24 h/24 et 7 j/7 à la couche et démarrez-la.

  2. Une fois que l'instance est en ligne, ajoutez une application à la pile et spécifiez les paramètres suivants :

    • Nom — Le nom que vous préférez ; l'exemple utilisePhotoPoll.

      AWS OpsWorks Stacks utilise ce nom à des fins d'affichage et génère un nom abrégé pour un usage interne et pour identifier l'application dans la configuration de la pile et les attributs de déploiement. Par exemple, le nom PhotoPoll abrégé est photopoll.

    • Type d'application : Ruby on Rails.

    • Environnement Rails : les environnements disponibles sont déterminés par l'application.

      L'exemple d'application en possède trois : development, test et production. Pour cet exemple, définissez l'environnement avec la valeur development. Consultez l'exemple de code pour une description de chaque environnement.

    • Type de référentiel : tous les types de référentiels pris en charge. Spécifiez Git pour cet exemple.

    • URL du référentiel : référentiel à partir duquel le code doit être déployé.

      Pour cet exemple, définissez l'URL avec la valeur git://github.com/awslabs/opsworks-demo-rails-photo-share-app.

    Utilisez les valeurs par défaut pour les paramètres restants, puis cliquez sur Ajouter une application pour créer l'application.

  3. Déployez l'application sur l'instance Rails App Server.

  4. Lorsque le déploiement est terminé, accédez à la page Instances et cliquez sur l'adresse IP publique de l'instance Rails App Server. Vous devez voir ce qui suit :