

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.

# Déploiement d'une application rails sur Elastic Beanstalk
<a name="ruby-rails-tutorial"></a>

Rails est un framework open source model-view-controller (MVC) pour Ruby. Ce didacticiel vous explique le processus de génération d'une application Rails et de son déploiement AWS Elastic Beanstalk dans un environnement.

**Topics**
+ [Conditions préalables](#ruby-rails-tutorial-prereqs)
+ [Connaissances de base sur Elastic Beanstalk](#ruby-rails-tutorial-prereqs-basic)
+ [Lancer un environnement Elastic Beanstalk](#ruby-rails-tutorial-launch)
+ [Installation de Rails et génération d'un site web](#ruby-rails-tutorial-generate)
+ [Configuration des paramètres Rails](#ruby-rails-tutorial-configure)
+ [Déploiement de votre application](#ruby-rails-tutorial-deploy)
+ [Nettoyage](#ruby-rails-tutorial-cleanup)
+ [Étapes suivantes](#ruby-rails-tutorial-nextsteps)

## Conditions préalables
<a name="ruby-rails-tutorial-prereqs"></a>

## Connaissances de base sur Elastic Beanstalk
<a name="ruby-rails-tutorial-prereqs-basic"></a>

Ce tutoriel suppose que vous connaissez les opérations de base Elastic Beanstalk et la console Elastic Beanstalk. Si ce n'est pas déjà fait, suivez les instructions dans [Découvrez comment démarrer avec Elastic Beanstalk](GettingStarted.md) pour lancer votre premier environnement Elastic Beanstalk.

### Ligne de commande
<a name="ruby-rails-tutorial-prereqs-cmdline"></a>

Pour suivre les procédures décrites dans ce guide, vous aurez besoin d'un shell ou d'un terminal de ligne de commande pour exécuter des commandes. Dans les listes, les commandes sont précédées d'un symbole d'invite (\$1) et du nom du répertoire actuel, le cas échéant.

```
~/eb-project$ this is a command
this is output
```

Sous Linux et macOS, vous pouvez utiliser le shell et le gestionnaire de package de votre choix. Sur Windows, vous pouvez [installer le sous-système Windows pour Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) afin d'obtenir une version intégrée à Windows d'Ubuntu et de Bash.

### Dépendances Rails
<a name="ruby-rails-tutorial-prereqs-railsreqs"></a>

L'infrastructure Rails 6.1.4.1 a les dépendances suivantes. Veillez à ce qu'elles soient toutes installées.
+ **Ruby 2.5.0 ou version ultérieure** – Pour obtenir les instructions d'installation, consultez [Configuration de votre environnement de développement Ruby pour Elastic Beanstalk](ruby-development-environment.md).

  Dans ce tutoriel, nous utilisons Ruby 3.0.2 et la version correspondante de la plateforme Elastic Beanstalk.
+ **Node.js** – Pour obtenir des instructions d'installation, consultez [Installation de Node.js via le gestionnaire de package](https://nodejs.org/en/download/package-manager/).
+ **Yarn** – Pour obtenir des instructions d'installation, veuillez consulter [Installation](https://yarnpkg.com/lang/en/docs/install/) sur le site web *Yarn*.

## Lancer un environnement Elastic Beanstalk
<a name="ruby-rails-tutorial-launch"></a>

Utilisez la console Elastic Beanstalk pour créer un environnement Elastic Beanstalk. Choisissez la plateforme **Ruby** et acceptez les paramètres par défaut et l'exemple de code.

**Pour lancer un environnement (console)**

1. [Ouvrez la console Elastic Beanstalk à l'aide de ce lien préconfiguré : console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? Nom de l'application = Tutoriels](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced) et type d'environnement = LoadBalanced

1. Pour **Platform (Plateforme)**, sélectionnez la plateforme et la branche de plateforme qui correspondent au langage utilisé par votre application.

1. Pour l'option **Code de l'application**, choisissez **Exemple d'application**.

1. Choisissez **Vérifier et lancer**.

1. Passez en revue les options disponibles. Choisissez l'option disponible que vous souhaitez utiliser et, une fois que vous êtes prêt, choisissez **Create app** (Créer une application).

La création d'un environnement prend environ 5 minutes et crée les ressources suivantes :
+ **EC2 instance** — Une machine virtuelle Amazon Elastic Compute Cloud (Amazon EC2) configurée pour exécuter des applications Web sur la plateforme de votre choix.

  Chaque plateforme exécute un ensemble spécifique de logiciels, de fichiers de configuration et de scripts pour prendre en charge une version de langage, une infrastructure ou un conteneur web spécifiques, ou une combinaison de ces éléments. La plupart des plateformes utilisent Apache ou nginx comme proxy inverse situé devant votre application web, qui lui transmet des demandes, traite des ressources statiques et génère des journaux d'accès et d'erreur.
+ **Groupe de sécurité d'instance** : groupe EC2 de sécurité Amazon configuré pour autoriser le trafic entrant sur le port 80. Cette ressource permet au trafic HTTP provenant de l'équilibreur de charge d'atteindre l' EC2 instance qui exécute votre application Web. Par défaut, le trafic n'est pas autorisé sur les autres ports.
+ **Équilibreur de charge** – Équilibreur de charge Elastic Load Balancing configuré pour répartir les demandes vers les instances exécutant votre application. De plus, l'équilibreur de charge vous évite d'exposer directement vos instances sur Internet.
+ Groupe de **sécurité d'équilibrage de charge : groupe** EC2 de sécurité Amazon configuré pour autoriser le trafic entrant sur le port 80. Cette ressource autorise le trafic HTTP provenant d'Internet à atteindre l'équilibreur de charge. Par défaut, le trafic n'est pas autorisé sur les autres ports.
+ **Groupe Auto Scaling** – Groupe Auto Scaling configuré pour remplacer une instance si elle est résiliée ou devient indisponible.
+ **Compartiment Amazon S3** – Emplacement de stockage pour votre code source, les journaux et autres artefacts qui sont créés lorsque vous utilisez Elastic Beanstalk.
+ ** CloudWatch Alarmes Amazon** : deux CloudWatch alarmes qui surveillent la charge sur les instances de votre environnement et qui sont déclenchées si la charge est trop élevée ou trop faible. Lorsqu'une alarme est déclenchée, votre groupe Auto Scaling s'adapte en fonction, à la hausse ou à la baisse.
+ **CloudFormation stack** — Elastic CloudFormation Beanstalk utilise pour lancer les ressources de votre environnement et propager les modifications de configuration. Les ressources sont définies dans un modèle, que vous pouvez afficher dans la [console CloudFormation](https://console.aws.amazon.com/cloudformation).
+ **Nom de domaine** : nom de domaine qui permet d'accéder à votre application Web dans le formulaire **subdomain*. *region*.elasticbeanstalk.com*.
**Sécurité du domaine**  
Pour renforcer la sécurité de vos applications Elastic Beanstalk, le domaine *elasticbeanstalk.com* est enregistré dans la [liste des suffixes publics (PSL)](https://publicsuffix.org/).  
Si vous devez définir des cookies sensibles dans le nom de domaine par défaut de vos applications Elastic Beanstalk, nous vous recommandons d'utiliser des cookies `__Host-` avec un préfixe pour une sécurité accrue. Cette pratique protège votre domaine contre les tentatives de falsification de requêtes intersites (CSRF). Pour plus d'informations, consultez la page [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) du Mozilla Developer Network.

Toutes ces ressources sont gérées par Elastic Beanstalk. Lorsque vous arrêtez votre environnement, Elastic Beanstalk arrête toutes les ressources qu'il contient.

**Note**  
Le compartiment Amazon S3 créé par Elastic Beanstalk est partagé entre les environnements et n'est pas supprimé lors de l'arrêt de l'environnement. Pour de plus amples informations, veuillez consulter [Utilisation d'Elastic Beanstalk avec Amazon S3](AWSHowTo.S3.md).

## Installation de Rails et génération d'un site web
<a name="ruby-rails-tutorial-generate"></a>

Installez Rails et ses dépendances avec la commande `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
...
```

Testez votre installation Rails.

```
~$ rails --version
Rails 6.1.4.1
```

Utilisez `rails new` avec le nom de l'application pour créer un projet Rails.

```
~$ rails new ~/eb-rails
```

Rails crée un répertoire avec le nom spécifié, génère tous les fichiers nécessaires pour exécuter un exemple de projet localement et exécute ensuite Bundler pour installer toutes les dépendances (Gems) définies dans le Gemfile du projet.

**Note**  
Ce processus installe la dernière version de Puma pour le projet. Cette version peut être différente de celle fournie par Elastic Beanstalk sur la version de la plateforme Ruby de votre environnement. Pour consulter les versions Puma fournies par Elastic Beanstalk, veuillez consulter la section [Historique de la plateforme Ruby](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-ruby.html) dans le *Guide des plateformes AWS Elastic Beanstalk *. Pour plus d'informations sur la version la plus récente de Puma, consultez le site Web [Puma.io](http://puma.io). En cas de décalage entre les deux versions de Puma, utilisez l'une des options suivantes :  
Utiliser la version Puma installée par la commande `rails new` précédente. Dans ce cas, vous devez ajouter un `Procfile` pour que la plateforme utilise la version du serveur Puma fournie par vos soins. Pour de plus amples informations, veuillez consulter [Configuration du processus de candidature avec un Procfile sur Elastic Beanstalk.](ruby-platform-procfile.md).
Mettre à jour la version Puma pour qu'elle soit cohérente avec celle qui est préinstallée sur la version de la plateforme Ruby de votre environnement. Pour ce faire, modifiez la version Puma dans le [Gemfile](ruby-platform-gemfile.md#ruby-platform-gemfile.title) situé à la racine du répertoire source de votre projet. Ensuite, exécutez `bundle update`. Pour plus d'informations, veuillez consulter la page [bundle update](https://bundler.io/man/bundle-update.1.html) sur le site Web Bundler.io. 

Testez votre installation Rails en exécutant le projet par défaut localement.

```
~$ 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
...
```

Ouvrez `http://localhost:3000` dans un navigateur web pour afficher le projet par défaut en action.

![\[Page de développement du site Rails par défaut.\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/ruby-rails-default.png)


Cette page est uniquement visible en mode développement. Ajoutez du contenu à la première page de l'application afin de prendre en charge le déploiement de production sur Elastic Beanstalk. Utilisez `rails generate` pour créer un contrôleur, un itinéraire et une vue pour votre page d'accueil. 

```
~/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.
```

Cela vous permet de disposer de tout ce dont vous avez besoin pour accéder à la page à l'adresse `/welcome_page/welcome`. Avant de publier les modifications, toutefois, modifiez le contenu dans la vue et ajoutez un itinéraire pour que cette page s'affiche au niveau supérieur du site. 

Utilisez un éditeur de texte pour modifier le contenu dans `app/views/welcome_page/welcome.html.erb`. Pour cet exemple, vous utiliserez `cat` pour remplacer simplement le contenu du fichier existant. 

**Example app/views/welcome\$1page/welcome.html.erb**  

```
<h1>Welcome!</h1>
<p>This is the front page of my first Rails application on Elastic Beanstalk.</p>
```

 Enfin, ajoutez l'itinéraire suivant à `config/routes.rb` : 

**Example config/routes.rb**  

```
Rails.application.routes.draw do
  get 'welcome_page/welcome'
  root 'welcome_page#welcome'
```

Cela indique à Rails d'acheminer les demandes à la racine du site web à la méthode de bienvenue du contrôleur de la page d'accueil, qui affiche le contenu dans la vue d'accueil (`welcome.html.erb`).

Pour que Elastic Beanstalk puisse déployer correctement l'application sur la plateforme Ruby, nous devons mettre à jour `Gemfile.lock`. Certaines dépendances de `Gemfile.lock ` peuvent être spécifiques à la plateforme. Par conséquent, nous devons ajouter **platform ruby** à `Gemfile.lock` afin que toutes les dépendances requises soient installées avec le déploiement.

**Example**  

```
~/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
```

## Configuration des paramètres Rails
<a name="ruby-rails-tutorial-configure"></a>

Utilisez la console Elastic Beanstalk pour configurer Rails avec les propriétés d'environnement. Définissez la propriété d'environnement `SECRET_KEY_BASE` sous la forme d'une chaîne de 256 caractères alphanumériques au plus.

Rails utilise cette propriété pour créer des clés. Par conséquent, vous devez la garder secrète et ne pas la stocker dans le contrôle de code source en texte brut. Au lieu de cela, vous la fournissez au code Rails dans votre environnement via une propriété d'environnement.

**Pour configurer les variables d'environnement dans la console Elastic Beanstalk**

1. Ouvrez la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk), puis **dans la liste des régions, sélectionnez votre**. Région AWS

1. Dans le panneau de navigation, choisissez **Environments** (Environnements), puis choisissez le nom de votre environnement dans la liste.

1. Dans le panneau de navigation, choisissez **Configuration**.

1. Dans la catégorie de configuration **Mises à jour, surveillance et journalisation**, sélectionnez **Modifier**.

1. Faites défiler la page jusqu'à **Variables d'environnement d'exécution**.

1. Sélectionnez **Ajouter une variable d'environnement**.

1. Pour **Source**, sélectionnez **Texte brut**.
**Note**  
Les valeurs **Secrets Manager** et **SSM Parameter Store** de la liste déroulante permettent de configurer les variables d'environnement en tant que secrets pour stocker des données sensibles, telles que les informations d'identification et les clés d'API. Pour de plus amples informations, veuillez consulter [Utilisation d'Elastic AWS Secrets Manager AWS Systems Manager Beanstalk avec et Parameter Store](AWSHowTo.secrets.md). 

1. Entrez le **nom de la variable d'environnement** **et les paires de valeurs de la variable** d'environnement.

1. Si vous devez ajouter d'autres variables, répétez les **étapes 6** **à 8**.

1. Pour enregistrer les modifications, cliquez sur **Appliquer** en bas de la page.

Maintenant, vous êtes prêt à déployer le site dans votre environnement.

## Déploiement de votre application
<a name="ruby-rails-tutorial-deploy"></a>

Créez un [bundle source](applications-sourcebundle.md) contenant les fichiers créés par Rails. La commande suivante permet de créer une solution groupée source nommée `rails-default.zip`.

```
~/eb-rails$ zip ../rails-default.zip -r * .[^.]*
```

Téléchargez le bundle source sur Elastic Beanstalk pour déployer Rails dans votre environnement.

**Pour déployer un groupe source**

1. Ouvrez la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk), puis **dans la liste des régions, sélectionnez votre**. Région AWS

1. Dans le panneau de navigation, choisissez **Environments** (Environnements), puis choisissez le nom de votre environnement dans la liste.

1. Sur la page de présentation de l'environnement, choisissez **Upload and deploy (Charger et déployer)**.

1. Utilisez la boîte de dialogue à l'écran pour charger le bundle source.

1. Choisissez **Deploy (Déployer)**.

1. Lorsque le déploiement est terminé, vous pouvez sélectionner l'URL de site pour ouvrir votre site web dans un nouvel onglet.

## Nettoyage
<a name="ruby-rails-tutorial-cleanup"></a>

Une fois que vous avez fini d'utiliser le code de démonstration, vous pouvez mettre fin à votre environnement. [Elastic Beanstalk supprime toutes les ressources AWS associées, [telles que les instances EC2 Amazon](using-features.managing.ec2.md)[, les instances de base de données, les équilibreurs de charge, les](using-features.managing.db.md)[groupes de sécurité](using-features.managing.elb.md) et les alarmes.](using-features.alarms.md#using-features.alarms.title) 

La suppression de ressources n'entraîne pas la suppression de l'application Elastic Beanstalk. Vous pouvez donc créer de nouveaux environnements pour votre application à tout moment.

**Pour mettre fin à votre environnement Elastic Beanstalk depuis la console**

1. Ouvrez la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk), puis **dans la liste des régions, sélectionnez votre**. Région AWS

1. Dans le panneau de navigation, choisissez **Environments** (Environnements), puis choisissez le nom de votre environnement dans la liste.

1. Choisissez **Actions** (Actions), puis **Terminate Environment** (Résilier l’environnement).

1. Utilisez la boîte de dialogue à l'écran pour confirmer la résiliation de l'environnement.

## Étapes suivantes
<a name="ruby-rails-tutorial-nextsteps"></a>

Pour plus d'informations sur Rails, visitez [rubyonrails.org](https://rubyonrails.org/).

À mesure que vous continuez à développer votre application, vous souhaiterez probablement disposer d'une solution pour gérer des environnements et déployer votre application sans devoir créer un fichier .zip et le charger manuellement sur la console Elastic Beanstalk. L'interface de [ligne de commande Elastic Beanstalk](eb-cli3.md) (EB CLI easy-to-use) fournit des commandes pour créer, configurer et déployer des applications dans les environnements Elastic Beanstalk à partir de la ligne de commande.

Enfin, si vous prévoyez d'utiliser votre application dans un environnement de production, vous devez [configurer un nom de domaine personnalisé](customdomains.md) pour votre environnement et [activer HTTPS](configuring-https.md) pour des connexions sécurisées.