

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'applications PHP avec Elastic Beanstalk
<a name="create_deploy_PHP_eb"></a>

Vous pouvez déployer une application PHP en quelques minutes à l'aide de l'interface de ligne de commande Elastic Beanstalk (EB CLI) ou de la console Elastic Beanstalk. Pour savoir comment procéder, commencez par le QuickStart didacticiel, puis consultez les exemples avancés.

Ressources pour déployer des applications PHP sur Elastic Beanstalk
+ [QuickStart pour PHP](php-quickstart.md)— Step-by-step instructions pour déployer une application PHP *Hello World* à l'aide de l'interface de ligne de commande EB.
+ [Utilisation de la plateforme PHP Elastic Beanstalk](create_deploy_PHP.container.md)— Comment utiliser les fonctionnalités de la plateforme spécifiquement pour PHP.
+ [Exemples avancés](php-samples.md)— Tutoriels pratiques pour les frameworks et applications PHP courants, et comment ajouter une base de données Amazon RDS à votre environnement.

Pour plus d'informations sur le développement avec PHP dans PHP AWS, consultez les ressources suivantes :
+ [GitHub](https://github.com/aws/aws-sdk-php/)— Installez le AWS SDK pour PHP GitHub à l'aide de.
+ [Centre de développement PHP](https://aws.amazon.com/php/) — Outils, documentation et exemples de code pour développer des applications PHP sur AWS.
+ [AWS SDK for FAQs](https://docs.aws.amazon.com/aws-sdk-php/guide/latest/faq.html) PHP : obtenez des réponses aux questions fréquemment posées.

# QuickStart: Déployer une application PHP sur Elastic Beanstalk
<a name="php-quickstart"></a>

Dans le didacticiel suivant, vous allez apprendre à créer et à déployer un exemple d'application PHP dans un AWS Elastic Beanstalk environnement à l'aide de la CLI EB.

**Non destiné à une utilisation en production**  
Les exemples sont destinés uniquement à des fins de démonstration. N'utilisez pas d'exemples d'applications en production.

**Topics**
+ [Votre AWS compte](#php-quickstart-aws-account)
+ [Conditions préalables](#php-quickstart-prereq)
+ [Étape 1 : Création d'une application PHP](#php-quickstart-create-app)
+ [Étape 2 : Exécutez votre application localement](#php-quickstart-run-local)
+ [Étape 3 : Initialisation et déploiement de votre application PHP](#php-quickstart-deploy)
+ [Étape 4 : Parcourez votre application cloud](#php-quickstart-run-eb-ap)
+ [Étape 5 : Mettez à jour et redéployez votre application](#php-quickstart-run-eb-ap)
+ [Nettoyage](#php-quickstart-cleanup)
+ [Étapes suivantes](#php-quickstart-next-steps)

## Votre AWS compte
<a name="php-quickstart-aws-account"></a>

Si vous n'êtes pas encore AWS client, vous devez créer un AWS compte pour utiliser Elastic Beanstalk.

### Créez un AWS compte
<a name="php-quickstart-aws-account-procedure"></a>

#### Inscrivez-vous pour un Compte AWS
<a name="sign-up-for-aws"></a>

Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.

**Pour vous inscrire à un Compte AWS**

1. Ouvrez l'[https://portal.aws.amazon.com/billing/inscription.](https://portal.aws.amazon.com/billing/signup)

1. Suivez les instructions en ligne.

   Dans le cadre de la procédure d’inscription, vous recevrez un appel téléphonique ou un SMS et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.

   Lorsque vous vous inscrivez à un Compte AWS, un *Utilisateur racine d'un compte AWS*est créé. Par défaut, seul l’utilisateur racine a accès à l’ensemble des Services AWS et des ressources de ce compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l’utilisateur racine pour effectuer les [tâches nécessitant un accès utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. À tout moment, vous pouvez consulter l'activité actuelle de votre compte et gérer votre compte en accédant à [https://aws.amazon.com/](https://aws.amazon.com/)et en choisissant **Mon compte**.

#### Création d’un utilisateur doté d’un accès administratif
<a name="create-an-admin"></a>

Après vous être inscrit à un Compte AWS, sécurisez Utilisateur racine d'un compte AWS AWS IAM Identity Center, activez et créez un utilisateur administratif afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.

**Sécurisez votre Utilisateur racine d'un compte AWS**

1.  Connectez-vous en [AWS Management Console](https://console.aws.amazon.com/)tant que propriétaire du compte en choisissant **Utilisateur root** et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe.

   Pour obtenir de l’aide pour vous connecter en utilisant l’utilisateur racine, consultez [Connexion en tant qu’utilisateur racine](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) dans le *Guide de l’utilisateur Connexion à AWS *.

1. Activez l’authentification multifactorielle (MFA) pour votre utilisateur racine.

   Pour obtenir des instructions, voir [Activer un périphérique MFA virtuel pour votre utilisateur Compte AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) dans le guide de l'utilisateur *IAM*.

**Création d’un utilisateur doté d’un accès administratif**

1. Activez IAM Identity Center.

   Pour obtenir des instructions, consultez [Activation d’ AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Dans IAM Identity Center, octroyez un accès administratif à un utilisateur.

   Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir [Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) dans le *Guide de AWS IAM Identity Center l'utilisateur*.

**Connexion en tant qu’utilisateur doté d’un accès administratif**
+ Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l’URL de connexion qui a été envoyée à votre adresse e-mail lorsque vous avez créé l’utilisateur IAM Identity Center.

  Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAM Identity Center, consultez la section [Connexion au portail AWS d'accès](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) dans le *guide de l'Connexion à AWS utilisateur*.

**Attribution d’un accès à d’autres utilisateurs**

1. Dans IAM Identity Center, créez un ensemble d’autorisations qui respecte la bonne pratique consistant à appliquer les autorisations de moindre privilège.

   Pour obtenir des instructions, consultez [Création d’un ensemble d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.

   Pour obtenir des instructions, consultez [Ajout de groupes](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

## Conditions préalables
<a name="php-quickstart-prereq"></a>
+ Interface de ligne de commande Elastic Beanstalk - Pour l'installation, voir. [Installation de la CLI EB avec un script de configuration (recommandé)](eb-cli3.md#eb-cli3-install)
+ PHP - Installez PHP sur votre machine locale en suivant les instructions [d'installation et de configuration](https://www.php.net/manual/en/install.php) sur le site Web de PHP.

## Étape 1 : Création d'une application PHP
<a name="php-quickstart-create-app"></a>

Pour ce démarrage rapide, vous allez créer une application PHP *Hello World*.

Créez un répertoire de projet.

```
~$ mkdir eb-php
~$ cd eb-php
```

Créez ensuite un `index.php` fichier dans le répertoire du projet et ajoutez le code suivant.

**Example `index.php`**  

```
<?php
  echo "Hello from a PHP application running in Elastic Beanstalk!";
?>
```

## Étape 2 : Exécutez votre application localement
<a name="php-quickstart-run-local"></a>

Utilisez la commande suivante pour exécuter votre application localement.

```
~$ php -S localhost:5000
```

Ouvrez un navigateur pour [http://localhost:5000](http://localhost:5000).

Vous devriez voir votre message d'accueil dans le navigateur et les messages de journal dans votre terminal.

Arrêtez le serveur local en entrant`Control+c`, afin de pouvoir déployer Elastic Beanstalk.

## Étape 3 : Initialisation et déploiement de votre application PHP
<a name="php-quickstart-deploy"></a>

Vous allez ensuite déployer votre application dans un *environnement* à l'aide de la console Elastic Beanstalk ou de l'EB CLI. Dans ce didacticiel, vous allez utiliser l'interface de ligne de commande EB avec l'option interactive pour initialiser un environnement. 

**Pour initialiser votre environnement et créer un environnement**

1. Exécutez la commande suivante **init**.

   ```
   ~$ eb init -i
   ```

   La commande init crée une application de manière interactive. Le nom de l'application sera par défaut le dossier local qui est`eb-php`.

   Pour toutes les demandes, à l'exception de l'accès SSH, acceptez les valeurs par défaut pour créer un environnement avec la dernière version de la plateforme PHP. Pour le dépannage des instances, vous pouvez configurer l'accès SSH en réexécutant la `eb init -i` commande ultérieurement ou en vous connectant à l'aide d'Amazon EC2 Instance Connect ou de Session Manager.

1. Créez un environnement et déployez votre application

   Exécutez la commande suivante pour créer un environnement nommé`blue-env`.

   ```
   ~$ eb create blue-env
   ```

   *Lorsque vous exécutez la **eb create** commande pour la première fois, Elastic Beanstalk crée automatiquement un fichier zip de votre application, appelé bundle source.* Elastic Beanstalk crée ensuite un environnement avec une ou plusieurs instances Amazon EC2, puis déploie l'application dans l'environnement.

   Le déploiement de votre application sur Elastic Beanstalk peut prendre jusqu'à cinq minutes.

## Étape 4 : Parcourez votre application cloud
<a name="php-quickstart-run-eb-ap"></a>

Lorsque le processus de création de votre environnement est terminé, votre application devrait être en cours d'exécution et écouter les demandes sur le port 5000. Connectez-vous à votre application à l'aide de la commande suivante :

```
~$ eb open
```

La `eb open` commande ouvre un onglet de navigateur vers un sous-domaine personnalisé créé pour votre application.

## Étape 5 : Mettez à jour et redéployez votre application
<a name="php-quickstart-run-eb-ap"></a>

Après avoir créé une application et l'avoir déployée dans un environnement, vous pouvez déployer une nouvelle version de l'application ou une autre application à tout moment. Le déploiement d'une nouvelle version d'application est plus rapide car il ne nécessite ni le provisionnement ni le redémarrage des instances Amazon EC2.

Mettez à jour votre code PHP pour inclure la valeur REQUEST\$1TIME provenant de l'environnement du serveur :

```
<?php
  echo "Hello from a PHP application running in Elastic Beanstalk!";
  
  $timestamp = $_SERVER['REQUEST_TIME'];
  echo '<br/>Request time: ' . date('Y/m/d H:i:s', $timestamp);
?>
```

Redéployez votre code PHP sur Elastic Beanstalk à l'aide de la commande suivante :

```
~$ eb deploy
```

Lorsque vous exécutez **eb deploy**, l'interface de ligne de commande (CLI) EB crée un bundle avec le contenu de votre répertoire de projet et le déploie dans votre environnement.

Une fois le déploiement terminé, actualisez la page ou reconnectez-vous à votre application avec`eb open`. Vous devriez voir vos mises à jour. Si ce n'est pas le cas, réexécutez votre serveur local pour vérifier vos modifications.

****Félicitations \$1****  
Vous avez créé, déployé et mis à jour une application PHP avec Elastic Beanstalk \$1

## Nettoyage
<a name="php-quickstart-cleanup"></a>

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

Vous pouvez également mettre fin à votre environnement à l'aide de la CLI EB à l'aide de la commande suivante :

```
~$ eb terminate
```

## Étapes suivantes
<a name="php-quickstart-next-steps"></a>

Vous pouvez explorer l'environnement de votre application à l'aide de la console Elastic Beanstalk. Pour plus d'informations, consultez la section [Explorez votre environnement](GettingStarted.md#GettingStarted.Explore).

Pour des exemples avancés utilisant PHP, consultez[Exemples avancés de PHP dans Elastic Beanstalk](php-samples.md).

# Utilisation de la plateforme PHP Elastic Beanstalk
<a name="create_deploy_PHP.container"></a>

AWS Elastic Beanstalk fournit et prend en charge diverses **branches de plate-forme** pour différentes versions de PHP. Les plateformes prennent en charge les applications Web PHP qui s'exécutent de manière autonome ou sous Composer. Voir [PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) dans le document *AWS Elastic Beanstalk Platforms* pour une liste complète des branches de plateforme prises en charge.

Elastic [Beanstalk propose](command-options.md) des options de configuration que vous pouvez utiliser pour personnaliser le logiciel qui s'exécute sur les instances Amazon EC2 de votre environnement Elastic Beanstalk. Vous pouvez [configurer les variables d'environnement](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console) requises par votre application, activer la rotation des journaux sur Amazon S3, mapper les dossiers de la source de votre application contenant les fichiers statiques avec les chemins desservis par le serveur proxy, et définir les paramètres d'initialisation PHP communs.

Des options de configuration sont disponibles dans la console Elastic Beanstalk pour [modifier la configuration d'un environnement en cours d'exécution](environment-configuration-methods-after.md). Pour éviter de perdre la configuration de votre environnement en le résiliant, vous pouvez utiliser des [configurations enregistrées](environment-configuration-savedconfig.md) pour enregistrer vos paramètres et les appliquer par la suite à un autre environnement.

Pour enregistrer les paramètres dans votre code source, vous pouvez inclure des [fichiers de configuration](ebextensions.md). Les paramètres des fichiers de configuration sont appliquées chaque fois que vous créez un environnement ou que vous déployez votre application. Vous pouvez également utiliser des fichiers de configuration pour installer des packages, exécuter des scripts ou effectuer d'autres opérations de personnalisation d'instance lors des déploiements.

Si vous utilisez Composer, vous pouvez [inclure un fichier`composer.json`](#php-configuration-composer) dans votre bundle source afin d'installer des packages pendant le déploiement.

Pour des paramètres avancés PHP et de configuration PHP non fournis en tant qu'options de configuration, vous pouvez [utiliser des fichiers de configuration pour fournir un fichier `INI`](#php-configuration-phpini) qui peut étendre et remplacer les paramètres par défaut appliqués par Elastic Beanstalk, ou installer des extensions supplémentaires.

Les paramètres appliqués dans la console Elastic Beanstalk remplacent les mêmes paramètres des fichiers de configuration, s'ils existent. Cela vous permet d'utiliser les paramètres par défaut dans les fichiers de configuration et de les remplacer par des paramètres spécifiques à l'environnement dans la console. Pour plus d'informations sur la priorité et les autres méthodes de modification des paramètres, consultez [Options de configuration](command-options.md).

Pour plus d'informations sur les différentes manières d'étendre une plateforme Elastic Beanstalk basée sur Linux, consultez [Extension des plateformes Linux Elastic Beanstalk](platforms-linux-extend.md).

**Topics**
+ [Installation du AWS SDK pour PHP](#php-development-environment-sdk)
+ [Considérations relatives à PHP 8.1 sur Amazon Linux 2](#php-8-1-considerations)
+ [Configuration de votre environnement PHP](#php-console)
+ [Espaces de noms pour la configuration](#php-namespaces)
+ [Installation des dépendances](#php-configuration-composer)
+ [Mise à jour de Composer](#php-configuration-composerupdate)
+ [Extension de php.ini](#php-configuration-phpini)

## Installation du AWS SDK pour PHP
<a name="php-development-environment-sdk"></a>

Si vous devez gérer AWS des ressources depuis votre application, installez le AWS SDK pour PHP. Par exemple, avec le kit SDK pour PHP, vous pouvez utiliser Amazon DynamoDB (DynamoDB) pour stocker les informations relatives à l'utilisateur et à la session sans créer de base de données relationnelle.

Pour installer le SDK pour PHP avec Composer

```
$ composer require aws/aws-sdk-php
```

Pour plus d'informations, consultez la [AWS SDK for PHP](https://aws.amazon.com/sdk-for-php/)page d'accueil. Pour obtenir des instructions, voir [Installer le AWS SDK for PHP](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_installation.html).

## Considérations relatives à PHP 8.1 sur Amazon Linux 2
<a name="php-8-1-considerations"></a>

Veuillez lire cette section si vous utilisez la branche de plateforme *PHP 8.1 sur Amazon Linux 2*.

### Considérations relatives à PHP 8.1 sur Amazon Linux 2
<a name="php-8-1-considerations-detail"></a>

**Note**  
Les informations de cette rubrique s'appliquent uniquement à la branche de plateforme *PHP 8.1 sur Amazon Linux 2*. Cela ne s'applique pas aux branches de la plateforme PHP basées sur AL2023. Elles ne s'appliquent pas non plus à la branche de plateforme *PHP 8.0 Amazon Linux 2*. 

Elastic Beanstalk stocke les packages RPM associés à PHP 8.1 pour la branche de plateforme *PHP 8.1 sur Amazon Linux 2* sur les instances EC2 dans un répertoire local, au lieu du référentiel Amazon Linux. Vous pouvez utiliser **rpm -i ** afin d'installer des packages. À partir de la [version 3.5.0 de la plateforme PHP 8.1](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-10-03-linux.html), Elastic Beanstalk stocke les packages RPM associés à PHP 8.1 dans le répertoire EC2 local suivant.

 `/opt/elasticbeanstalk/RPMS` 

L'exemple suivant permet d'installer le package *php-debuginfo*.

```
$rpm -i /opt/elasticbeanstalk/RPMS/php-debuginfo-8.1.8-1.amzn2.x86_64.rpm
```

La version dans le nom du package varie en fonction de celle répertoriée dans le répertoire local EC2 `/opt/elasticbeanstalk/RPMS`. Utilisez la même syntaxe afin d'installer d'autres packages RPM PHP 8.1.

Développez la section suivante afin d'afficher une liste des packages RPM que nous fournissons.

#### Packages RPM
<a name="php-8-1-considerations-detail-rpm-packages"></a>

La liste suivante présente les packages RMP fournis par la plateforme PHP 8.1 Elastic Beanstalk sur Amazon Linux 2. Ils se situent dans le répertoire local `/opt/elasticbeanstalk/RPMS`.

Les numéros de version *8.1.8-1* et *3.7.0-1* figurant dans les noms de packages listés ne sont qu'un exemple.
+ `php-8.1.8-1.amzn2.x86_64.rpm`
+ `php-bcmath-8.1.8-1.amzn2.x86_64.rpm`
+ `php-cli-8.1.8-1.amzn2.x86_64.rpm`
+ `php-common-8.1.8-1.amzn2.x86_64.rpm`
+ `php-dba-8.1.8-1.amzn2.x86_64.rpm`
+ `php-dbg-8.1.8-1.amzn2.x86_64.rpm`
+ `php-debuginfo-8.1.8-1.amzn2.x86_64.rpm`
+ `php-devel-8.1.8-1.amzn2.x86_64.rpm`
+ `php-embedded-8.1.8-1.amzn2.x86_64.rpm`
+ `php-enchant-8.1.8-1.amzn2.x86_64.rpm`
+ `php-fpm-8.1.8-1.amzn2.x86_64.rpm`
+ `php-gd-8.1.8-1.amzn2.x86_64.rpm`
+ `php-gmp-8.1.8-1.amzn2.x86_64.rpm`
+ `php-intl-8.1.8-1.amzn2.x86_64.rpm`
+ `php-ldap-8.1.8-1.amzn2.x86_64.rpm`
+ `php-mbstring-8.1.8-1.amzn2.x86_64.rpm`
+ `php-mysqlnd-8.1.8-1.amzn2.x86_64.rpm`
+ `php-odbc-8.1.8-1.amzn2.x86_64.rpm`
+ `php-opcache-8.1.8-1.amzn2.x86_64.rpm`
+ `php-pdo-8.1.8-1.amzn2.x86_64.rpm`
+ `php-pear-1.10.13-1.amzn2.noarch.rpm`
+ `php-pgsql-8.1.8-1.amzn2.x86_64.rpm`
+ `php-process-8.1.8-1.amzn2.x86_64.rpm`
+ `php-pspell-8.1.8-1.amzn2.x86_64.rpm`
+ `php-snmp-8.1.8-1.amzn2.x86_64.rpm`
+ `php-soap-8.1.8-1.amzn2.x86_64.rpm`
+ `php-sodium-8.1.8-1.amzn2.x86_64.rpm`
+ `php-xml-8.1.8-1.amzn2.x86_64.rpm`
+ `php-pecl-imagick-3.7.0-1.amzn2.x86_64.rpm`
+ `php-pecl-imagick-debuginfo-3.7.0-1.amzn2.x86_64.rpm`
+ `php-pecl-imagick-devel-3.7.0-1.amzn2.noarch.rpm`

Vous pouvez utiliser les packages PEAR et PECL afin d'installer des extensions courantes. Pour plus d'informations sur PEAR, veuillez consulter le site Web [PEAR - PHP Extension and Application Repository](https://pear.php.net) (PEAR : référentiel d'applications et extension PHP) (français non garanti). Pour plus d'informations sur PECL, veuillez consulter le site Web de [PECL extension](https://pecl.php.net) (L'extension PECL) (français non garanti).

Les exemples de commandes suivants permettent d'installer les extensions Memcached.

```
$pecl install memcache
```

Vous pouvez également utiliser ce qui suit :

```
$pear install pecl/memcache
```

Les exemples de commandes suivants permettent d'installer les extensions Redis.

```
$pecl install redis
```

Vous pouvez également utiliser ce qui suit :

```
$pear install pecl/redis
```

## Configuration de votre environnement PHP
<a name="php-console"></a>

Vous pouvez utiliser la console Elastic Beanstalk pour activer la rotation de journal sur Amazon S3, configurer des variables que votre application peut lire depuis l'environnement et modifier des paramètres PHP.

**Pour configurer votre environnement PHP 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**.

### Paramètres PHP
<a name="php-console-settings"></a>
+ **Proxy server (Serveur proxy)** – Serveur proxy à utiliser sur vos instances d'environnement. Le serveur nginx est utilisé par défaut.
+ **Racine du document** – Dossier qui contient la page par défaut de votre site. Si votre page d'accueil n'est pas à la racine de votre groupe source, spécifiez le dossier qui la contient par rapport aux chemin d'accès racine. Par exemple, `/public` si la page d'accueil est dans un dossier nommé `public`.
+ **Limite de mémoire** – Volume maximum de mémoire qu'un script est autorisé à allouer. Par exemple, `512M`.
+ **Compression de sortie Zlib** – Définissez sur `On` pour compresser les réponses.
+ **Permettre de faire un fopen d'une URL** – Définissez cette option sur `Off` pour empêcher les scripts de télécharger des fichiers à partir d'emplacements distants.
+ **Afficher les erreurs** – Définissez cette option sur `On` pour afficher les messages d'erreur internes à des fins de débogage.
+ **Durée d'exécution maximum** – La durée maximale en secondes pendant laquelle un script est autorisé à s'exécuter avant que l'environnement ne l'arrête.

### Options du journal
<a name="php-console-logs"></a>

La section Options du journal a deux paramètres :
+ **Instance profile (Profil d'instance)** – Spécifie le profil d'instance qui est autorisé à accéder au compartiment Amazon S3 associé à votre application.
+ **Enable log file rotation to Amazon S3** (Permettre la rotation du fichier journal sur Amazon S3) – Indique si les fichiers journaux des instances Amazon EC2 de votre application doivent être copiés dans le compartiment Amazon S3 associé à votre application.

### Fichiers statiques
<a name="php-console-staticfiles"></a>

Pour améliorer les performances, la section des **Fichiers statiques** vous permet de configurer le serveur proxy pour proposer des fichiers statiques (HTML ou images, par exemple) à partir d'un ensemble de répertoires dans votre application web. Pour chaque répertoire, vous définissez le chemin virtuel sur le mappage de répertoires. Lorsque le serveur proxy reçoit une demande pour un fichier dans le chemin spécifié, il fournit le fichier directement au lieu d'acheminer la demande vers votre application.

Pour en savoir plus sur la configuration des fichiers statiques à l'aide des fichiers de configuration ou de la console Elastic Beanstalk, consultez [Service de fichiers statiques](environment-cfg-staticfiles.md).

### Propriétés de l'environnement
<a name="php-console-properties"></a>

La section **Propriétés de l'environnement** vous permet de spécifier des paramètres de configuration de l'environnement sur les instances Amazon EC2 exécutant votre application. Ces paramètres sont passés en tant que paires clé-valeur à l'application. 

Votre code d'application peut accéder aux propriétés de l'environnement à l'aide de `$_SERVER` ou à la fonction `get_cfg_var`.

```
$endpoint = $_SERVER['API_ENDPOINT'];
```

Pour plus d’informations, consultez [Variables d'environnement et autres paramètres du logiciel](environments-cfg-softwaresettings.md).

## Espaces de noms pour la configuration
<a name="php-namespaces"></a>

Vous pouvez utiliser un [fichier de configuration](ebextensions.md) pour définir des options de configuration et exécuter d'autres tâches de configuration d'instance pendant les déploiements. Les options de configuration peuvent être [spécifiques à la plate-forme](command-options-specific.md) ou s'appliquer à [toutes les plateformes](command-options-general.md) du service Elastic Beanstalk dans son ensemble. Les options de configuration sont organisées en *espaces de noms.*

Les espaces de noms suivants configurent à la fois votre service proxy et les options spécifiques à PHP :
+ [`aws:elasticbeanstalk:environment:proxy:staticfiles`](command-options-general.md#command-options-general-environmentproxystaticfiles)— configurez le proxy d'environnement pour servir les fichiers statiques. Vous définissez les mappages des chemins virtuels vers les répertoires d'applications.
+ [`aws:elasticbeanstalk:environment:proxy`](command-options-specific.md#command-options-php)— spécifiez le serveur proxy de l'environnement. 
+ [`aws:elasticbeanstalk:container:php:phpini`](command-options-specific.md#command-options-php)— configure les options spécifiques à PHP. Cet espace de noms inclut `composer_options` ce qui n'est pas disponible sur la console Elastic Beanstalk. Cette option définit les options personnalisées à utiliser lors de l'installation de dépendances à l'aide de Composer via la `composer.phar install` commande. Pour plus d'informations sur cette commande, y compris les options disponibles, consultez la section [installation](https://getcomposer.org/doc/03-cli.md#install-i) sur le site Web *getcomposer.org*.

L'exemple de [fichier de configuration](ebextensions.md) suivant spécifie une option de fichiers statiques qui mappe un répertoire nommé `staticimages` au chemin `/images`, d'accès et affiche les paramètres de chacune des options disponibles dans l'espace de noms `aws:elasticbeanstalk:container:php:phpini` :

**Example .ebextensions/php-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: apache
  aws:elasticbeanstalk:environment:proxy:staticfiles:
    /images: staticimages
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
    memory_limit: 128M
    zlib.output_compression: "Off"
    allow_url_fopen: "On"
    display_errors: "Off"
    max_execution_time: 60
    composer_options: vendor/package
```

**Note**  
L'espace de noms `aws:elasticbeanstalk:environment:proxy:staticfiles` n'est pas défini sur les branches PHP de l'AMI Amazon Linux (précédant Amazon Linux 2).

Elastic Beanstalk fournit de nombreuses options de configuration pour personnaliser votre environnement. En plus des fichiers de configuration, vous pouvez également définir des options de configuration à l'aide de la console, de configurations enregistrées, de la CLI EB ou d' AWS CLI. Pour plus d’informations, consultez [Options de configuration](command-options.md).

## Installation des dépendances de votre application PHP Elastic Beanstalk
<a name="php-configuration-composer"></a>

Cette rubrique décrit comment configurer votre application pour installer les autres packages PHP dont elle a besoin. Votre application peut avoir des dépendances sur d'autres packages PHP. Vous pouvez configurer votre application pour installer ces dépendances sur les instances Amazon Elastic Compute Cloud (Amazon EC2) de l'environnement. Vous pouvez également inclure les dépendances de votre application dans le bundle source et les déployer avec l'application. La section ci-après décrit chacune de ces méthodes.

### Utilisation d'un fichier Composer pour installer des dépendances sur les instances
<a name="php-configuration-composer.oninstances"></a>

Utilisez un fichier `composer.json` à la racine de votre source de projet afin d'utiliser Composer pour installer les packages dont votre application a besoin sur les instances Amazon EC2 de votre environnement.

**Example composer.json**  

```
{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}
```

Lorsqu'un fichier `composer.json` est présent, Elastic Beanstalk exécute `composer.phar install` pour installer les dépendances. Vous pouvez ajouter des options à joindre à la commande en définissant l'option [`composer_options`](#php-namespaces) dans l'espace de noms `aws:elasticbeanstalk:container:php:phpini`.

### Inclusion des dépendances dans la solution groupée source
<a name="php-configuration-composer.inbundle"></a>

Si votre application possède un grand nombre de dépendances, leur installation peut prendre beaucoup de temps. Il peut en résulter un nombre accru d'opérations de déploiement et de mise à l'échelle, car les dépendances sont installées sur chaque nouvelle instance.

Pour éviter d'accroître le temps de déploiement, utilisez Composer dans votre environnement de développement afin de résoudre les dépendances et de les installer dans le dossier `vendor`.

**Pour inclure des dépendances dans le bundle source de votre application**

1. Exécutez la commande suivante :

   ```
   % composer install
   ```

1. Incluez le dossier `vendor` généré dans la racine du bundle source de votre application.

Lorsque Elastic Beanstalk trouve un dossier `vendor` sur l'instance, il ignore le fichier `composer.json` (même s'il existe). Votre application utilise alors les dépendances issues du dossier `vendor`.

## Mettre à jour Composer sur Elastic Beanstalk
<a name="php-configuration-composerupdate"></a>

Cette rubrique décrit comment configurer Elastic Beanstalk pour maintenir Composer à jour. Vous devrez peut-être mettre à jour Composer si un message d'erreur s'affiche lorsque vous essayez d'installer des packages avec un fichier Composer, ou si vous ne parvenez pas à utiliser la dernière version de la plateforme. Entre les mises à jour de la plateforme, vous pouvez mettre à jour Composer dans les instances de votre environnement en utilisant les fichiers de configuration de votre [`.ebextensions`](ebextensions.md)dossier.

Vous pouvez mettre à jour automatiquement Composer avec la configuration suivante.

```
commands:
  01updateComposer:
    command: /usr/bin/composer.phar self-update 2.7.0
```

Le [paramètre d'option](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) suivant définit la variable d'`COMPOSER_HOME`environnement, qui configure l'emplacement du cache Composer.

```
option_settings:
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: COMPOSER_HOME
    value: /home/webapp/composer-home
```

Vous pouvez combiner les deux dans le même fichier de configuration de votre `.ebextensions` dossier.

**Example .ebextensions/composer.config**  

```
commands:
  01updateComposer:
    command: /usr/bin/composer.phar self-update 2.7.0
    
option_settings:
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: COMPOSER_HOME
    value: /home/webapp/composer-home
```

**Note**  
En raison des mises à jour apportées à l'installation de Composer dans les versions de AL2023 plateforme du [22 février 2024](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-22-al2023.html) et du [28 février 2024,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-28-al2.html) AL2 la mise à jour automatique de Composer peut échouer si elle `COMPOSER_HOME` est définie au moment de l'exécution de la mise à jour automatique.   
Les commandes combinées suivantes ne pourront pas être exécutées : `export COMPOSER_HOME=/home/webapp/composer-home && /usr/bin/composer.phar self-update 2.7.0`   
Cependant, l'exemple précédent fonctionnera. Dans l'exemple précédent, le paramètre d'option pour ne `COMPOSER_HOME` sera pas transmis à l'`01updateComposer`exécution, et il ne sera pas défini lors de l'exécution de la commande de mise à jour automatique.

**Important**  
Si vous n'indiquez pas le numéro de version dans la commande `composer.phar self-update`, Composer met à jour vers la dernière version disponible chaque fois que vous déployez votre code source et que de nouvelles instances sont provisionnées par Auto Scaling. Si une version de Composer est disponible qui est incompatible avec votre application, elle peut provoquer l'échec des opérations de dimensionnement et des déploiements.

Pour plus d'informations sur les plateformes PHP Elastic Beanstalk, ainsi que sur la version de Composer, consultez la section [Versions des plateformes PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) du document *Plateformes AWS Elastic Beanstalk *.

## Extension du fichier php.ini dans votre configuration Elastic Beanstalk
<a name="php-configuration-phpini"></a>

Utilisez un fichier de configuration avec un bloc `files` pour ajouter un fichier `.ini` à `/etc/php.d/` sur les instances de votre environnement. Le fichier de configuration principal, `php.ini`, recherche des paramètres dans des fichiers dans ce dossier dans l'ordre alphabétique. De nombreuses extensions sont activées par défaut par les fichiers dans ce dossier.

**Example .ebextensions/mongo.config**  

```
files:
  "/etc/php.d/99mongo.ini":
    mode: "000755"
    owner: root
    group: root
    content: |
      extension=mongo.so
```

# Exemples avancés de PHP dans Elastic Beanstalk
<a name="php-samples"></a>

Pour commencer à utiliser les applications PHP AWS Elastic Beanstalk, vous avez besoin d'un [bundle de sources](applications-sourcebundle.md) d'applications à télécharger en tant que première version d'application à déployer dans un environnement. 

Nous vous recommandons [QuickStart pour PHP](php-quickstart.md) de démarrer avec une simple application PHP déployée avec l'EB CLI.

**Topics**
+ [Ajout d'une base de données](create_deploy_PHP.rds.md)
+ [Didacticiel - Laravel](php-laravel-tutorial.md)
+ [Didacticiel - CakePHP](php-cakephp-tutorial.md)
+ [Didacticiel - Symfony](php-symfony-tutorial.md)
+ [Didacticiel - Production haute disponibilité](php-ha-tutorial.md)
+ [Tutoriel - HA WordPress](php-hawordpress-tutorial.md)
+ [Didacticiel - Drupal haute disponibilité](php-hadrupal-tutorial.md)

# Ajouter une instance de base de données Amazon RDS à votre environnement PHP Elastic Beanstalk
<a name="create_deploy_PHP.rds"></a>

Cette rubrique fournit des instructions pour créer un Amazon RDS à l'aide de la console Elastic Beanstalk. Vous pouvez utiliser une instance de base de données Amazon Relational Database Service (Amazon RDS) pour stocker les données collectées et modifiées par votre application. La base de données peut être liée à votre environnement et gérée par Elastic Beanstalk, ou elle peut être créée comme déliée et gérée en externe par un autre service. Dans ces instructions, la base de données est couplée à votre environnement et gérée par Elastic Beanstalk. Pour plus d'informations sur l'intégration d'un Amazon RDS avec Elastic Beanstalk, consultez [Ajout d'une base de données à votre environnement Elastic Beanstalk](using-features.managing.db.md).

**Topics**
+ [Ajout d'une instance de base de données à votre environnement](#php-rds-create)
+ [Téléchargement d'un pilote](#php-rds-drivers)
+ [Connexion à une base de données à l'aide d'un PDO ou d'un My SQLi](#php-rds-connect)
+ [Connexion à une base de données avec Symfony](#php-rds-symfony)

## Ajout d'une instance de base de données à votre environnement
<a name="php-rds-create"></a>

**Pour ajouter une instance DB à votre environnement**

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 **Database (Base de données)**, choisissez **Edit (Modifier)**.

1. Choisissez un moteur de base de données, puis saisissez un nom d'utilisateur et un mot de passe.

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

L'ajout d'une instance DB prend environ 10 minutes. Une fois la mise à jour de l'environnement terminée, le nom d'hôte de l'instance DB et les autres informations de connexion sont disponibles dans votre application, via les propriétés d'environnement suivantes :


| Nom de la propriété | Description | Valeur de la propriété | 
| --- | --- | --- | 
|  `RDS_HOSTNAME`  |  Nom d'hôte de l'instance DB.  |  Sous l'onglet **Connectivity & security** (Connectivité et sécurité) de la console Amazon RDS : **Endpoint** (Point de terminaison).  | 
|  `RDS_PORT`  |  Port sur lequel l'instance de base de données accepte des connexions. La valeur par défaut varie selon les moteurs de base de données.  |  Sous l'onglet **Connectivity & security (Connectivité et sécurité)** de la console Amazon RDS : **Port**.  | 
|  `RDS_DB_NAME`  |  Nom de la base de données, **ebdb**.  |  Sous l'onglet **Configuration** de la console Amazon RDS : **DB Name (Nom de base de données)**.  | 
|  `RDS_USERNAME`  |  Nom d'utilisateur que vous avez configuré pour votre base de données.  |  Sous l'onglet **Configuration** de la console Amazon RDS : **Master username (Identifiant principal)**.  | 
|  `RDS_PASSWORD`  |  Mot de passe que vous avez configuré pour votre base de données.  |  Non disponible pour référence dans la console Amazon RDS.  | 

Pour plus d'informations sur la configuration d'une instance de base de données liée à un environnement Elastic Beanstalk, consultez [Ajout d'une base de données à votre environnement Elastic Beanstalk](using-features.managing.db.md).

## Téléchargement d'un pilote
<a name="php-rds-drivers"></a>

Pour utiliser des objets de données PHP (PDO) pour la connexion à la base de données, installez le pilote correspondant au moteur de base de données que vous avez choisi.
+ **MySQL** – [http://php.net/manual/en/ref.pdo-mysql.php](http://php.net/manual/en/ref.pdo-mysql.php)
+ **PostgreSQL** – [http://php.net/manual/en/ref.pdo-pgsql.php](http://php.net/manual/en/ref.pdo-pgsql.php)
+ **Oracle** – [http://php.net/manual/en/ref.pdo-oci.php](http://php.net/manual/en/ref.pdo-oci.php)
+ **SQL Server** – [http://php.net/manual/en/ref.pdo-sqlsrv.php](http://php.net/manual/en/ref.pdo-sqlsrv.php)

Pour de plus amples informations, veuillez consulter [http://php.net/manual/en/pdo.installation.php](http://php.net/manual/en/pdo.installation.php).

## Connexion à une base de données à l'aide d'un PDO ou d'un My SQLi
<a name="php-rds-connect"></a>

Vous pouvez utiliser `$_SERVER[`VARIABLE`]` afin de lire les informations de connexion depuis l'environnement.

Pour un PDO, créez un nom de source de données (DSN) à partir de l'hôte, du port et du nom. Transmettez le DSN au [constructeur du PDO](https://php.net/manual/en/pdo.construct.php) avec le nom d'utilisateur de base de données et le mot de passe.

**Example Connexion à une base de données RDS avec PDO - MySQL**  

```
<?php
$dbhost = $_SERVER['RDS_HOSTNAME'];
$dbport = $_SERVER['RDS_PORT'];
$dbname = $_SERVER['RDS_DB_NAME'];
$charset = 'utf8' ;

$dsn = "mysql:host={$dbhost};port={$dbport};dbname={$dbname};charset={$charset}";
$username = $_SERVER['RDS_USERNAME'];
$password = $_SERVER['RDS_PASSWORD'];

$pdo = new PDO($dsn, $username, $password);
?>
```

Pour les autres pilotes, remplacez `mysql` par le nom de votre pilote – `pgsql`, `oci` ou `sqlsrv`.

Pour MySQLi, transmettez le nom d'hôte, le nom d'utilisateur, le mot de passe, le nom de base de données et le port au `mysqli` constructeur.

**Example Connexion à une base de données RDS avec mysqli\$1connect()**  

```
$link = new mysqli($_SERVER['RDS_HOSTNAME'], $_SERVER['RDS_USERNAME'], $_SERVER['RDS_PASSWORD'], $_SERVER['RDS_DB_NAME'], $_SERVER['RDS_PORT']);
```

## Connexion à une base de données avec Symfony
<a name="php-rds-symfony"></a>

Pour Symfony version 3.2 et versions ultérieures, vous pouvez utiliser `%env(PROPERTY_NAME)%` pour définir les paramètres de base de données dans un fichier de configuration en fonction des propriétés d'environnement définies par Elastic Beanstalk.

**Example app/config/parameters.yml**  

```
parameters:
    database_driver:   pdo_mysql
    database_host:     '%env(RDS_HOSTNAME)%'
    database_port:     '%env(RDS_PORT)%'
    database_name:     '%env(RDS_DB_NAME)%'
    database_user:     '%env(RDS_USERNAME)%'
    database_password: '%env(RDS_PASSWORD)%'
```

Pour plus d'informations, consultez [External Parameters (Symfony 3.4)](http://symfony.com/doc/3.4/configuration/external_parameters.html).

Pour les versions antérieures de Symfony, les variables d'environnement sont uniquement accessibles si elles commencent par `SYMFONY__`. Cela signifie que les propriétés d'environnement définies par Elastic Beanstalk ne sont pas accessibles, et vous devez définir vos propres propriétés d'environnement pour transmettre les informations de connexion à Symfony.

Pour vous connecter à une base de données avec Symfony 2, [créez une propriété d'environnement](create_deploy_PHP.container.md#php-console-properties) pour chaque paramètre. Ensuite, utilisez `%property.name%` pour accéder à la variable transformée par Symfony dans un fichier de configuration. Par exemple, une propriété d'environnement nommée `SYMFONY__DATABASE__USER` est accessible en tant que `database.user`.

```
    database_user:     "%database.user%"
```

Pour plus d'informations, consultez [External Parameters (Symfony 2.8)](http://symfony.com/doc/2.8/configuration/external_parameters.html).

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

Laravel est un framework open source model-view-controller (MVC) pour PHP. Ce didacticiel vous explique le processus de génération d'une application Laravel, de son déploiement dans un AWS Elastic Beanstalk environnement et de sa configuration pour se connecter à une instance de base de données Amazon Relational Database Service (Amazon RDS).

**Topics**
+ [Conditions préalables](#php-laravel-tutorial-prereqs)
+ [Lancer un environnement Elastic Beanstalk](#php-laravel-tutorial-launch)
+ [Installation de Laravel et génération d'un site web](#php-laravel-tutorial-generate)
+ [Déploiement de votre application](#php-laravel-tutorial-deploy)
+ [Configuration des paramètres Composer](#php-laravel-tutorial-configure)
+ [Ajout d'une base de données à votre environnement](#php-laravel-tutorial-database)
+ [Nettoyage](#php-laravel-tutorial-cleanup)
+ [Étapes suivantes](#php-laravel-tutorial-nextsteps)

## Conditions préalables
<a name="php-laravel-tutorial-prereqs"></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.

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.

Laravel 6 nécessite PHP 7.2 ou version ultérieure. Il requiert également les extensions PHP répertoriées dans la rubrique [Prérequis du serveur](https://laravel.com/docs/6.x/installation#server-requirements) de la documentation officielle de Laravel. Suivez les instructions pour installer PHP et Composer.

Pour plus d'informations sur la prise en charge et la maintenance de Laravel, consultez la rubrique [Stratégie de prise en charge](https://laravel.com/docs/master/releases#support-policy) de la documentation officielle de Laravel.

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

Utilisez la console Elastic Beanstalk pour créer un environnement Elastic Beanstalk. Choisissez la plateforme **PHP** 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 Laravel et génération d'un site web
<a name="php-laravel-tutorial-generate"></a>

Composer peut installer Laravel et créer un projet de travail avec une commande :

```
~$ composer create-project --prefer-dist laravel/laravel eb-laravel
```

Composer installe Laravel et ses dépendances et génère un projet par défaut.

Si vous rencontrez des problèmes lors de l'installation de Laravel, consultez le sujet d'installation dans la documentation officielle : [https://laravel.com/docs/6.x](https://laravel.com/docs/6.x). 

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

Créez un [bundle source](applications-sourcebundle.md) contenant les fichiers créés par Composer. La commande suivante permet de créer une solution groupée source nommée `laravel-default.zip`. Elle exclut les fichiers du dossier `vendor`, lesquels prennent beaucoup de place et ne sont pas nécessaires pour le déploiement de votre application dans Elastic Beanstalk.

```
~/eb-laravel$ zip ../laravel-default.zip -r * .[^.]* -x "vendor/*"
```

Téléchargez l'offre groupée source sur Elastic Beanstalk pour déployer Laravel 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.

**Note**  
En vue d'optimiser davantage le bundle source, initialisez un référentiel Git et utilisez la [commande `git archive`](applications-sourcebundle.md#using-features.deployment.source.git) pour créer le bundle source. Le projet Laravel par défaut inclut un fichier `.gitignore` qui indique à Git d'exclure le dossier `vendor` et d'autres fichiers qui ne sont pas nécessaires pour le déploiement.

## Configuration des paramètres Composer
<a name="php-laravel-tutorial-configure"></a>

Lorsque le déploiement est terminé, cliquez sur l'URL pour ouvrir votre application Laravel dans le navigateur :

![\[Error message indicating no permission to access or on this server.\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/php-laravel-403.png)


De quoi s'agit-il ? Par défaut, Elastic Beanstalk constitue la racine de votre projet sur le chemin d'accès racine du site Web. Dans ce cas, cependant, la page par défaut (`index.php`) est un niveau en-dessous dans le dossier `public`. Vous pouvez vérifier cela en ajoutant `/public` à l'URL. Par exemple, `http://laravel.us-east-2.elasticbeanstalk.com/public`.

Pour servir l'application Laravel à la racine, utilisez la console Elastic Beanstalk afin de configurer la *racine du document* du site Web.

**Pour configurer la racine du document de votre site Web**

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. Pour **Racine du document**, entrez **/public**.

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

1. Lorsque la mise à jour est terminée, cliquez sur l'URL pour rouvrir votre site dans le navigateur.

![\[Laravel logo with navigation menu items: Documentation, Laracasts, News, Forge, GitHub.\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/php-laravel-defaultnodb.png)


Jusqu'ici, tout va bien. Vous ajoutez ensuite une base de données à votre environnement et vous configurez Laravel pour s'y connecter.

## Ajout d'une base de données à votre environnement
<a name="php-laravel-tutorial-database"></a>

Lancez une instance de base de données RDS dans votre environnement Elastic Beanstalk. Vous pouvez utiliser des bases de données MySQL ou PostgreSQL avec Laravel sur Elastic Beanstalk. SQLServer Pour cet exemple, nous utiliserons MySQL.

**Pour ajouter une instance de base de données RDS à votre environnement 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 **Database (Base de données)**, choisissez **Edit (Modifier)**.

1. Pour **Moteur**, choisissez **mysql**.

1. Saisissez un **nom d'utilisateur** principal et un **mot de passe**. Elastic Beanstalk fournit ces valeurs à votre application en utilisant les propriétés d'environnement.

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

La création d'une instance de base de données prend environ 10 minutes. Pour plus d'informations sur les bases de données couplées à un environnement Elastic Beanstalk, consultez [Ajout d'une base de données à votre environnement Elastic Beanstalk](using-features.managing.db.md).

En attendant, vous pouvez mettre à jour votre code source afin de lire les informations de connexion depuis l'environnement. Elastic Beanstalk fournit des détails de connexion en utilisant les variables d'environnement telles que `RDS_HOSTNAME` auxquelles vous pouvez accéder depuis votre application.

La configuration de la base de données Laravel est stockée dans un fichier nommé `database.php` dans le dossier `config` dans votre code de projet. Recherchez l'entrée `mysql` et modifiez les variables `host`, `database`, `username` et `and password` pour lire les valeurs correspondantes à partir d'Elastic Beanstalk :

**Example \$1/Eb- .php laravel/config/database**  

```
...
    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('RDS_HOSTNAME', '127.0.0.1'),
            'port' => env('RDS_PORT', '3306'),
            'database' => env('RDS_DB_NAME', 'forge'),
            'username' => env('RDS_USERNAME', 'forge'),
            'password' => env('RDS_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
...
```

Pour vérifier que la connexion de base de données est configurée correctement, ajoutez le code à `index.php` pour vous connecter à la base de données et ajoutez du code à la réponse par défaut :

**Example \$1/Eb- .php laravel/public/index**  

```
...
if(DB::connection()->getDatabaseName())
{
   echo "Connected to database ".DB::connection()->getDatabaseName();
}
$response->send();
...
```

Lorsque l'instance DB a terminé son lancement, regroupez et déployez l'application mise à jour dans votre environnement.

**Pour mettre à jour votre environnement Elastic Beanstalk**

1. Créez un nouveau groupe source :

   ```
   ~/eb-laravel$ zip ../laravel-v2-rds.zip -r * .[^.]* -x "vendor/*"
   ```

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 **Upload and Deploy** (Charger et déployer).

1. Choisissez **Browse (Parcourir)** et chargez `laravel-v2-rds.zip`.

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

Le déploiement d'une nouvelle version de votre application prend moins d'une minute. Lorsque le déploiement est terminé, actualisez la page web à nouveau pour vérifier que la connexion de base de données a abouti :

![\[Laravel website header with navigation menu items for Documentation, Laracasts, News, Forge, and GitHub.\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/php-laravel-defaultwdb.png)


## Nettoyage
<a name="php-laravel-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.

Vous pouvez également arrêter les ressources de base de données que vous avez créées hors de votre environnement Elastic Beanstalk. Lorsque vous résiliez une instance de base de données Amazon RDS, vous pouvez prendre un instantané et restaurer les données dans une autre instance ultérieurement.

**Pour résilier votre instance DB RDS**

1. Ouvrez la [console Amazon RDS](https://console.aws.amazon.com/rds).

1. Choisissez **Databases** (Bases de données).

1. Sélectionnez votre instance DB.

1. Choisissez **Actions**, puis **Supprimer**.

1. Choisissez si vous souhaitez créer un instantané, puis choisissez **Delete** (Supprimer).

## Étapes suivantes
<a name="php-laravel-tutorial-nextsteps"></a>

Pour plus d'informations sur Laravel, consultez le site officiel à l'adresse [laravel.com](https://laravel.com/).

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

Dans ce tutoriel, vous avez utilisé la console Elastic Beanstalk pour configurer les options du composeur. Pour que cette configuration fasse partie de votre source d'application, vous pouvez utiliser un fichier de configuration comme celui qui suit.

**Example .ebextensions/composer.config**  

```
option_settings:
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
```

Pour de plus amples informations, veuillez consulter [Personnalisation d'environnement avancée avec fichiers de configuration (`.ebextensions`)](ebextensions.md).

L'exécution d'une instance de base de données Amazon RDS dans votre environnement Elastic Beanstalk est excellente pour le développement et les tests, mais elle lie le cycle de vie de votre base de données à votre environnement. Pour de plus amples informations sur la connexion à une base de données s'exécutant en dehors de votre environnement, consultez [Ajouter une instance de base de données Amazon RDS à votre environnement PHP Elastic Beanstalk](create_deploy_PHP.rds.md).

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.

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

CakePHP est une infrastructure MVC, open source pour PHP. Ce tutoriel vous guide à travers le processus permettant la génération d'un projet CakePHP, sont déploiement dans un environnement Elastic Beanstalk et sa configuration pour vous connecter à une instance de base de données Amazon RDS.

**Topics**
+ [Conditions préalables](#php-cakephp-tutorial-prereqs)
+ [Lancer un environnement Elastic Beanstalk](#php-cakephp-tutorial-launch)
+ [Installation de CakePHP et génération d'un site web](#php-cakephp-tutorial-generate)
+ [Déploiement de votre application](#php-cakephp-tutorial-deploy)
+ [Ajout d'une base de données à votre environnement](#php-cakephp-tutorial-database)
+ [Nettoyage](#php-cakephp-tutorial-cleanup)
+ [Étapes suivantes](#php-cakephp-tutorial-nextsteps)

## Conditions préalables
<a name="php-cakephp-tutorial-prereqs"></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.

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.

CakePHP 4 nécessite PHP 7.4 ou version ultérieure. Il requiert également les extensions PHP répertoriées dans la [documentation d'installation officielle de CakePHP](https://book.cakephp.org/4/en/installation.html). Vous devez installer PHP et Composer.

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

Utilisez la console Elastic Beanstalk pour créer un environnement Elastic Beanstalk. Choisissez la plateforme **PHP** 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 CakePHP et génération d'un site web
<a name="php-cakephp-tutorial-generate"></a>

Composer peut installer CakePHP et créer un projet de travail avec une commande :

```
~$ composer create-project --prefer-dist cakephp/app eb-cake
```

Composer installe CakePHP et environ 20 dépendances et génère un projet par défaut.

Si vous rencontrez des problèmes lors de l'installation de CakePHP, consultez la rubrique consacrée à l'installation dans la documentation officielle : [http://book.cakephp.org/4.0/en/installation.html](http://book.cakephp.org/4.0/en/installation.html)

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

Créez un [bundle source](applications-sourcebundle.md) contenant les fichiers créés par Composer. La commande suivante permet de créer une solution groupée source nommée `cake-default.zip`. Elle exclut les fichiers du dossier `vendor`, lesquels prennent beaucoup de place et ne sont pas nécessaires pour le déploiement de votre application dans Elastic Beanstalk.

```
eb-cake zip ../cake-default.zip -r * .[^.]* -x "vendor/*"
```

Téléchargez le bundle source sur Elastic Beanstalk pour déployer CakePHP 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.

**Note**  
En vue d'optimiser davantage le bundle source, initialisez un référentiel Git et utilisez la [commande `git archive`](applications-sourcebundle.md#using-features.deployment.source.git) pour créer le bundle source. Le projet Symfony par défaut inclut un fichier `.gitignore` qui indique à Git d'exclure le dossier `vendor` et d'autres fichiers qui ne sont pas nécessaires pour le déploiement.

Au terme du processus, cliquez sur l'URL pour ouvrir votre application CakePHP dans le navigateur.

Jusqu'ici, tout va bien. Vous ajoutez ensuite une base de données à votre environnement et vous configurez CakePHP pour s'y connecter.

## Ajout d'une base de données à votre environnement
<a name="php-cakephp-tutorial-database"></a>

Lancez une instance de base de données Amazon RDS dans votre environnement Elastic Beanstalk. Vous pouvez utiliser des bases de données MySQL ou PostgreSQL avec CakePHP sur Elastic Beanstalk. SQLServer Pour cet exemple, nous utiliserons PostgreSQL.

**Pour ajouter une instance de base de données Amazon RDS à votre environnement 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. Sous **Database (Base de données)**, choisissez **Edit (Modifier)**.

1. Pour **Moteur de base de données**, choisissez **postgres**.

1. Saisissez un **nom d'utilisateur** principal et un **mot de passe**. Elastic Beanstalk fournit ces valeurs à votre application en utilisant les propriétés d'environnement.

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

La création d'une instance de base de données prend environ 10 minutes. En attendant, vous pouvez mettre à jour votre code source afin de lire les informations de connexion depuis l'environnement. Elastic Beanstalk fournit des détails de connexion en utilisant les variables d'environnement telles que `RDS_HOSTNAME` auxquelles vous pouvez accéder depuis votre application.

La configuration de base de données de CakePHP est dans un fichier nommé `app.php` dans le dossier `config` dans votre code de projet. Ouvrez ce fichier et ajoutez du code qui lit les variables d'environnement de `$_SERVER` et les attribue à des variables locales. Insérez les lignes en surbrillance dans l'exemple ci-dessous, après la première ligne (`<?php`) :

**Example \$1/Eb- .php cake/config/app**  

```
<?php
if (!defined('RDS_HOSTNAME')) {
  define('RDS_HOSTNAME', $_SERVER['RDS_HOSTNAME']);
  define('RDS_USERNAME', $_SERVER['RDS_USERNAME']);
  define('RDS_PASSWORD', $_SERVER['RDS_PASSWORD']);
  define('RDS_DB_NAME', $_SERVER['RDS_DB_NAME']);
}
return [
...
```

La connexion de base de données est configurée plus bas dans `app.php`. Trouvez la section suivante et modifiez la configuration des sources de données par défaut avec le nom du pilote qui correspond à votre moteur de base de données (`Mysql`, `Sqlserver` ou `Postgres`) et configurez les variables `host`, `username`, `password` et `database` pour lire les valeurs correspondantes à partir d'Elastic Beanstalk :

**Example \$1/Eb- .php cake/config/app**  

```
...
     /**
     * Connection information used by the ORM to connect
     * to your application's datastores.
     * Drivers include Mysql Postgres Sqlite Sqlserver
     * See vendor\cakephp\cakephp\src\Database\Driver for complete list
     */
    'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Postgres',
            'persistent' => false,
            'host' => RDS_HOSTNAME,
            /*
             * CakePHP will use the default DB port based on the driver selected
             * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
             * the following line and set the port accordingly
             */
            //'port' => 'non_standard_port_number',
            'username' => RDS_USERNAME,
            'password' => RDS_PASSWORD,
            'database' => RDS_DB_NAME,
            /*
             * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6).
             */
            //'encoding' => 'utf8mb4',
            'timezone' => 'UTC',
            'flags' => [],
            'cacheMetadata' => true,
            'log' => false,
...
```

Lorsque l'instance DB a terminé son lancement, regroupez et déployez l'application mise à jour dans votre environnement :

**Pour mettre à jour votre environnement Elastic Beanstalk**

1. Créez un nouveau groupe source :

   ```
   ~/eb-cake$ zip ../cake-v2-rds.zip -r * .[^.]* -x "vendor/*"
   ```

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 **Upload and Deploy** (Charger et déployer).

1. Choisissez **Browse (Parcourir)** et chargez `cake-v2-rds.zip`.

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

Le déploiement d'une nouvelle version de votre application prend moins d'une minute. Lorsque le déploiement est terminé, actualisez la page web à nouveau pour vérifier que la connexion de base de données a abouti :

![\[Green checkmark icon indicating successful database connection for CakePHP.\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/php-cakephp-defaultwdb.png)


## Nettoyage
<a name="php-cakephp-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.

Vous pouvez également arrêter les ressources de base de données que vous avez créées hors de votre environnement Elastic Beanstalk. Lorsque vous résiliez une instance de base de données Amazon RDS, vous pouvez prendre un instantané et restaurer les données dans une autre instance ultérieurement.

**Pour résilier votre instance DB RDS**

1. Ouvrez la [console Amazon RDS](https://console.aws.amazon.com/rds).

1. Choisissez **Databases** (Bases de données).

1. Sélectionnez votre instance DB.

1. Choisissez **Actions**, puis **Supprimer**.

1. Choisissez si vous souhaitez créer un instantané, puis choisissez **Delete** (Supprimer).

## Étapes suivantes
<a name="php-cakephp-tutorial-nextsteps"></a>

Pour plus d'informations sur CakePHP, lisez l'ouvrage à l'adresse [book.cakephp.org](http://book.cakephp.org/4.0/en/index.html).

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

L'exécution d'une instance de base de données Amazon RDS dans votre environnement Elastic Beanstalk est excellente pour le développement et les tests, mais elle lie le cycle de vie de votre base de données à votre environnement. Pour de plus amples informations sur la connexion à une base de données s'exécutant en dehors de votre environnement, consultez [Ajouter une instance de base de données Amazon RDS à votre environnement PHP Elastic Beanstalk](create_deploy_PHP.rds.md).

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.

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

[Symfony](http://symfony.com/) est une infrastructure open source destinée au développement d'applications web PHP dynamiques. Ce tutoriel explique le processus de génération d'une application Symfony et de son déploiement dans un AWS Elastic Beanstalk environnement.

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

## Conditions préalables
<a name="php-symfony-tutorial-prereqs"></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.

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.

Symfony 4.4.9 nécessite PHP 7.1.3 ou version ultérieure. Il requiert également les extensions PHP répertoriées dans la rubrique [Exigences techniques](https://symfony.com/doc/4.4/setup.html ) de la documentation d'installation officielle de Symfony. Dans le cadre de ce tutoriel, nous utilisons PHP 7.2 et la [version](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) correspondante de la plateforme Elastic Beanstalk. Avant de continuer, vous devez installer PHP et Composer.

Pour plus d'informations sur la prise en charge et la maintenance de Symfony, consultez la rubrique [Versions de Symfony](https://symfony.com/releases) sur le site Web de Symfony. Pour plus d'informations sur les mises à jour liées à la prise en charge des versions de PHP pour Symfony 4.4.9, consultez la rubrique [Notes de mise à jour de Symfony 4.4.9](https://symfony.com/blog/symfony-4-4-9-released) sur le site Web de Symfony.

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

Utilisez la console Elastic Beanstalk pour créer un environnement Elastic Beanstalk. Choisissez la plateforme **PHP** 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 Symfony et génération d'un site web
<a name="php-symfony-tutorial-generate"></a>

Composer peut installer Symfony et créer un projet de travail avec une commande :

```
~$ composer create-project symfony/website-skeleton eb-symfony
```

Composer installe Symfony et ses dépendances et génère un projet par défaut.

Si vous rencontrez des problèmes lors de l'installation de Symfony, accédez à la rubrique consacrée à l'[installation](https://symfony.com/doc/4.4/setup.html) dans la documentation officielle de Symfony.

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

Accédez au répertoire du projet.

```
~$ cd eb-symfony
```

Créez un [bundle source](applications-sourcebundle.md) contenant les fichiers créés par Composer. La commande suivante permet de créer une solution groupée source nommée `symfony-default.zip`. Elle exclut les fichiers du dossier `vendor`, lesquels prennent beaucoup de place et ne sont pas nécessaires pour le déploiement de votre application dans Elastic Beanstalk.

```
eb-symfony$ zip ../symfony-default.zip -r * .[^.]* -x "vendor/*"
```

Chargez le bundle source sur Elastic Beanstalk pour déployer Symfony 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.

**Note**  
En vue d'optimiser davantage le bundle source, initialisez un référentiel Git et utilisez la [commande `git archive`](applications-sourcebundle.md#using-features.deployment.source.git) pour créer le bundle source. Le projet Symfony par défaut inclut un fichier `.gitignore` qui indique à Git d'exclure le dossier `vendor` et d'autres fichiers qui ne sont pas nécessaires pour le déploiement.

## Configuration des paramètres Composer
<a name="php-symfony-tutorial-configure"></a>

Au terme du déploiement, cliquez sur l'URL pour ouvrir votre application Symfony dans le navigateur.

De quoi s'agit-il ? Par défaut, Elastic Beanstalk constitue la racine de votre projet sur le chemin d'accès racine du site web. Dans ce cas, cependant, la page par défaut (`app.php`) est un niveau en-dessous dans le dossier `web`. Vous pouvez vérifier cela en ajoutant `/public` à l'URL. Par exemple, `http://symfony.us-east-2.elasticbeanstalk.com/public`.

Pour servir l'application Symfony dans le chemin d'accès racine, utilisez la console Elastic Beanstalk pour configurer le *document racine* du site web.

**Pour configurer la racine du document de votre site web**

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. Pour **Racine du document**, entrez **/public**.

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

1. Lorsque la mise à jour est terminée, cliquez sur l'URL pour rouvrir votre site dans le navigateur.

## Nettoyage
<a name="php-symfony-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="php-symfony-tutorial-nextsteps"></a>

Pour plus d'informations sur Symfony, consultez la rubrique [Qu'est-ce que Symfony ?](https://symfony.com/what-is-symfony) sur le site symfony.com.

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

Dans ce tutoriel, vous avez utilisé la console Elastic Beanstalk pour configurer les options du composeur. Pour que cette configuration fasse partie de votre source d'application, vous pouvez utiliser un fichier de configuration comme celui qui suit.

**Example .ebextensions/composer.config**  

```
option_settings:
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
```

Pour de plus amples informations, veuillez consulter [Personnalisation d'environnement avancée avec fichiers de configuration (`.ebextensions`)](ebextensions.md).

Symfony utilise ses propres fichiers de configuration pour configurer les connexions de base de données. Pour de plus amples informations sur la connexion à une base de données avec Symfony, veuillez consulter [Connexion à une base de données avec Symfony](create_deploy_PHP.rds.md#php-rds-symfony).

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.

# Déploiement d'une application PHP haute disponibilité avec une base de données Amazon RDS externe vers Elastic Beanstalk
<a name="php-ha-tutorial"></a>

Ce didacticiel explique le processus de [lancement d'une instance de base de données RDS](AWSHowTo.RDS.md) externe à AWS Elastic Beanstalk et de configuration d'un environnement de haute disponibilité exécutant une application PHP pour s'y connecter. L'exécution d'une instance de base de données externe à Elastic Beanstalk découple la base de données du cycle de vie de votre environnement. Cela vous permet de connecter la même base de données depuis plusieurs environnements, de remplacer une base de données par une autre ou d'effectuer un déploiement bleu/vert sans affecter votre base de données.

Ce didacticiel utilise un [exemple d'application PHP](https://github.com/awslabs/eb-demo-php-simple-app) qui utilise une base de données MySQL pour stocker les données de texte fournies par l'utilisateur. L'exemple d'application utilise des [fichiers de configuration](ebextensions.md) en vue de configurer les [paramètres PHP](create_deploy_PHP.container.md#php-namespaces) et de créer une table dans la base de données pour l'application à utiliser. Il montre également comment utiliser un [fichier Composer](create_deploy_PHP.container.md#php-configuration-composer) pour installer les packages au cours du déploiement.

**Topics**
+ [Conditions préalables](#php-hawrds-tutorial-prereqs)
+ [Lancement d'une instance de base de données dans Amazon RDS](#php-hawrds-tutorial-database)
+ [Créer un environnement Elastic Beanstalk](#php-hawrds-tutorial-create)
+ [Configuration des groupes de sécurité, des propriétés de l'environnement et de la mise à l'échelle](#php-hawrds-tutorial-configure)
+ [Déploiement de l'exemple d'application](#php-hawrds-tutorial-deploy)
+ [Nettoyage](#php-hawrds-tutorial-cleanup)
+ [Étapes suivantes](#php-hawrds-tutorial-nextsteps)

## Conditions préalables
<a name="php-hawrds-tutorial-prereqs"></a>

Avant de commencer, téléchargez l'exemple de bundle source de l'application depuis GitHub : [eb-demo-php-simple-app-1.3.zip](https://github.com/aws-samples/eb-demo-php-simple-app/releases/download/v1.3/eb-demo-php-simple-app-v1.3.zip)

Les procédures décrites dans ce tutoriel pour les tâches Amazon Relational Database Service (Amazon RDS) supposent que vous lanciez des ressources dans un [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) par défaut. Tous les nouveaux comptes incluent un VPC par défaut dans chaque région. Si vous n'avez pas de VPC par défaut, les procédures seront différentes. Consultez [Utilisation d'Elastic Beanstalk avec Amazon RDS](AWSHowTo.RDS.md) les instructions relatives aux EC2 plateformes VPC classiques et personnalisées.

## Lancement d'une instance de base de données dans Amazon RDS
<a name="php-hawrds-tutorial-database"></a>

Pour utiliser une base de données externe avec une application exécutée dans Elastic Beanstalk, lancez d'abord une instance de base de données avec Amazon RDS. Lorsque vous lancez une instance avec Amazon RDS, elle est totalement indépendante d'Elastic Beanstalk et de vos environnements Elastic Beanstalk et ne sera pas résiliée ou surveillée par Elastic Beanstalk.

Utilisez la console Amazon RDS pour lancer une instance de base de données DB **MySQL** Multi-AZ. Le choix d'un déploiement multi-AZ garantit que votre base de données basculera et qu'elle sera toujours disponible si l'instance de base de données source se retrouve suspendue.

**Pour lancer une instance DB RDS dans un VPC par défaut**

1. Ouvrez la [console RDS](https://console.aws.amazon.com/rds/home).

1. Dans le panneau de navigation, choisissez **Databases** (Bases de données).

1. Choisissez **Create database** (Créer une base de données).

1. Choisissez **Standard Create** (Création standard).
**Important**  
Ne choisissez pas **Easy Create** (Création facile). Si vous choisissez cette option, vous ne pouvez pas configurer les paramètres nécessaires pour lancer cette base de données RDS.

1. Sous **Additional Configuration (Configuration supplémentaire)**, pour **Initial database name** (Nom initial de la base de données), tapez **ebdb**. 

1. Vérifiez les paramètres par défaut et ajustez ces paramètres en fonction de vos exigences spécifiques. Prêtez attention aux options suivantes :
   + **DB instance class** (Classe d'instance de base de données) : choisissez une taille d'instance avec un niveau approprié de puissance d'UC et de mémoire pour votre charge de travail.
   + **Déploiement multi-AZ** : pour une haute disponibilité, définissez ce paramètre sur **Créer un Replica/Reader nœud Aurora dans une autre zone AZ**.
   + **Master username** (Identifiant principal) et **Master password** (Mot de passe principal) : nom d'utilisateur et mot de passe de la base de données. Notez les valeurs de ces paramètres, car vous en aurez besoin par la suite.

1. Vérifiez les paramètres par défaut pour les autres options, puis cliquez sur **Create database** (Créer une base de données).

Ensuite, modifiez le groupe de sécurité associé à votre instance DB pour autoriser le trafic entrant sur le port approprié. Il s'agit du même groupe de sécurité que celui que vous associerez plus tard à votre environnement Elastic Beanstalk. Par conséquent, la règle que vous ajoutez accordera une autorisation d'entrée aux autres ressources de ce même groupe de sécurité.

**Pour modifier les règles de trafic entrant sur le groupe de sécurité associé à votre instance RDS**

1. Ouvrez la [console Amazon RDS](https://console.aws.amazon.com/rds/home).

1. Choisissez **Databases** (Bases de données).

1. Choisissez le nom de votre instance de base de données pour en afficher les détails.

1. Dans la section **Connectivity** (Connectivité), prenez note des **Subnets** (Sous-réseaux), des **Security groups** (Groupes de sécurité) et du **Endpoint** (Point de terminaison) affichés sur cette page. Ainsi, vous pourrez utiliser ces informations ultérieurement.

1. Sous **Security** (Sécurité), vous voyez le groupe de sécurité associé à l'instance de base de données. Ouvrez le lien pour afficher le groupe de sécurité dans la EC2 console Amazon.

1. Dans les détails du groupe de sécurité, choisissez l'onglet **Inbound** (Entrant).

1. Choisissez **Edit** (Modifier).

1. Choisissez **Add Rule** (Ajouter une règle).

1. Pour **Type**, choisissez le moteur de base de données utilisé par votre application.

1. Pour **Source**, entrez **sg-** pour afficher la liste des groupes de sécurité disponibles. Choisissez le groupe de sécurité associé au groupe Auto Scaling utilisé avec votre environnement Elastic Beanstalk. Cela permet aux EC2 instances Amazon présentes dans l'environnement d'accéder à la base de données.  
![\[Image d'écran permettant de modifier les règles de trafic entrant pour un groupe de sécurité dans la EC2 console Amazon.\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/ec2-securitygroup-rds.png)

1. Choisissez **Enregistrer**.

La création d'une instance DB prend environ 10 minutes. En attendant, créez votre environnement Elastic Beanstalk.

## Créer un environnement Elastic Beanstalk
<a name="php-hawrds-tutorial-create"></a>

Utilisez la console Elastic Beanstalk pour créer un environnement Elastic Beanstalk. Choisissez la plateforme **PHP** et acceptez les paramètres par défaut et l'exemple de code. Après avoir lancé l'environnement, vous pouvez le configurer pour vous connecter à la base de données, puis déployer l'exemple d'application à partir duquel vous avez effectué le téléchargement GitHub.

**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. L'instance DB RDS que vous avez lancée se trouvant en dehors de votre environnement, vous êtes chargé de la gestion de son cycle de vie.

**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 plus d'informations, consultez [Utilisation d'Elastic Beanstalk avec Amazon S3](AWSHowTo.S3.md).

## Configuration des groupes de sécurité, des propriétés de l'environnement et de la mise à l'échelle
<a name="php-hawrds-tutorial-configure"></a>

Ajoutez le groupe de sécurité de votre instance DB à votre environnement en cours d'exécution. Cette procédure conduit Elastic Beanstalk à remettre en service toutes les instances de votre environnement avec le groupe de sécurité supplémentaire associé.

**Pour ajouter un groupe de sécurité à votre environnement**
+ Effectuez l’une des actions suivantes :
  + Pour ajouter un groupe de sécurité à l'aide de 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 **Instances**, choisissez **Edit (Modifier)**.

    1. Sous **groupes EC2 de sécurité**, choisissez le groupe de sécurité à associer aux instances, en plus du groupe de sécurité d'instance créé par Elastic Beanstalk.

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

    1. Lisez l'avertissement, puis choisissez **Confirm** (Confirmer).
  + Pour ajouter un groupe de sécurité à l'aide d'un [fichier de configuration](ebextensions.md), utilisez le fichier exemple [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config).

Ensuite, utilisez les propriétés de l'environnement pour transmettre les informations de connexion à votre environnement. L'exemple d'application utilise un ensemble de propriétés par défaut qui correspondent à celles qui sont configurées par Elastic Beanstalk lorsque vous mettez en service une base de données dans votre environnement.

**Pour configurer les propriétés d'environnement pour une instance de base de données Amazon RDS**

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. Dans la section **Environment properties** (Propriétés de l'environnement), définissez les variables lues par votre application pour créer une chaîne de connexion. Pour assurer la compatibilité avec les environnements disposant d'une instance DB RDS intégrée, utilisez les noms et valeurs suivants : Vous pouvez trouver toutes les valeurs, à l'exception de votre mot de passe, dans la [console RDS](https://console.aws.amazon.com/rds/home).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/php-ha-tutorial.html)  
![\[Section de configuration des propriétés d'environnement avec des propriétés RDS ajoutées\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/environment-cfg-envprops-rds.png)

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

Enfin, configurez le groupe Auto Scaling de votre environnement avec un nombre minimum d'instances plus élevé. Exécutez au moins deux instances en permanence afin d'empêcher que les serveurs web de votre environnement constituent un point de défaillance unique et pour vous permettre de déployer des modifications sans mettre votre site hors service.

**Pour configurer le groupe Auto Scaling de votre environnement pour une haute disponibilité**

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 **Capacity** (Capacité), choisissez **Edit** (Modifier).

1. Dans la section **Auto Scaling group** (Groupe Auto Scaling), définissez les **Min instances** (Instances min.) sur **2**.

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

## Déploiement de l'exemple d'application
<a name="php-hawrds-tutorial-deploy"></a>

Votre environnement est maintenant prêt à exécuter l'exemple d'application et à se connecter à Amazon RDS. Déployez l'exemple d'application dans votre environnement.

**Note**  
Téléchargez le bundle source depuis GitHub, si ce n'est pas déjà fait : [eb-demo-php-simple-app-1.3.zip](https://github.com/aws-samples/eb-demo-php-simple-app/releases/download/v1.3/eb-demo-php-simple-app-v1.3.zip)

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

Le site collecte les commentaires des utilisateurs et tire parti d'une base de données MySQL pour stocker les données. Pour ajouter un commentaire, cliquez sur **Share Your Thought**, saisissez un commentaire, puis sélectionnez **Submit Your Thought**. L'application web écrit le commentaire dans la base de données pour que n'importe quelle instance de l'environnement puisse le lire et qu'il ne soit pas perdu si les instances se retrouvent suspendues.

![\[User interface for sharing thoughts, with a posted comment about Elastic Beanstalk on AWS.\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/php-ha-tutorial-app.png)


## Nettoyage
<a name="php-hawrds-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.

Vous pouvez également arrêter les ressources de base de données que vous avez créées hors de votre environnement Elastic Beanstalk. Lorsque vous résiliez une instance de base de données Amazon RDS, vous pouvez prendre un instantané et restaurer les données dans une autre instance ultérieurement.

**Pour résilier votre instance DB RDS**

1. Ouvrez la [console Amazon RDS](https://console.aws.amazon.com/rds).

1. Choisissez **Databases** (Bases de données).

1. Sélectionnez votre instance DB.

1. Choisissez **Actions**, puis **Supprimer**.

1. Choisissez si vous souhaitez créer un instantané, puis choisissez **Delete** (Supprimer).

## Étapes suivantes
<a name="php-hawrds-tutorial-nextsteps"></a>

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

L'exemple d'application utilise des fichiers de configuration pour configurer les paramètres PHP et pour créer une table dans la base de données si elle n'existe pas déjà. Vous pouvez également utiliser un fichier de configuration pour configurer les paramètres de groupe de sécurité de vos instances lors de la création de l'environnement afin d'éviter les mises à jour de configuration, qui prennent du temps. Pour plus d’informations, consultez [Personnalisation d'environnement avancée avec fichiers de configuration (`.ebextensions`)](ebextensions.md).

Pour le développement et les tests, vous pouvez utiliser la fonctionnalité Elastic Beanstalk permettant d'ajouter directement une instance de base de données gérée à votre environnement. Pour savoir comment configurer une base de données dans votre environnement, consultez [Ajout d'une base de données à votre environnement Elastic Beanstalk](using-features.managing.db.md).

Si vous avez besoin d'une base de données hautes performances, envisagez d'utiliser [Amazon Aurora](https://aws.amazon.com/rds/aurora/). Amazon Aurora est un moteur de base de données compatible MySQL qui offre des fonctionnalités de base de données commerciales à faible coût. Pour connecter votre application à une autre base de données, répétez la procédure de [configuration du groupe de sécurité](#php-hawrds-tutorial-database) et [mettez à jour les propriétés d'environnement associées à RDS](#php-hawrds-tutorial-configure). 

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.

# Déploiement d'un WordPress site Web à haute disponibilité avec une base de données Amazon RDS externe sur Elastic Beanstalk
<a name="php-hawordpress-tutorial"></a>

Ce didacticiel explique comment [lancer une instance de base de données Amazon RDS](AWSHowTo.RDS.md) externe à AWS Elastic Beanstalk, puis comment configurer un environnement de haute disponibilité exécutant un WordPress site Web pour s'y connecter. Le site web utilise Amazon Elastic File System (Amazon EFS) comme stockage partagé pour les fichiers téléchargés.

L'exécution d'une instance de base de données externe à Elastic Beanstalk découple la base de données du cycle de vie de votre environnement. Cela vous permet de connecter la même base de données depuis plusieurs environnements, de remplacer une base de données par une autre ou d'effectuer un [déploiement bleu/vert](using-features.CNAMESwap.md) sans affecter votre base de données.

**Note**  
Pour les informations actuelles sur la compatibilité des versions de PHP avec WordPress les versions, consultez la section [Compatibilité et WordPress versions de PHP](https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versions/) sur le WordPress site Web. Vous devez vous référer à ces informations avant de passer à une nouvelle version de PHP pour vos WordPress implémentations.

**Topics**
+ [Conditions préalables](#php-wordpress-tutorial-prereqs)
+ [Lancement d'une instance de base de données dans Amazon RDS](#php-hawordpress-tutorial-database)
+ [Télécharger WordPress](#php-hawordpress-tutorial-download)
+ [Lancer un environnement Elastic Beanstalk](#php-hawordpress-tutorial-launch)
+ [Configuration des groupes de sécurité et des propriétés de l'environnement](#php-wordpress-tutorial-configure)
+ [Configuration et déploiement de votre application](#php-wordpress-tutorial-deploy)
+ [Installer WordPress](#php-hawordpress-tutorial-install)
+ [Mise à jour des clés et des valeurs salt](#php-hawordpress-tutorial-updatesalts)
+ [Retrait des restrictions d'accès](#php-hawordpress-tutorial-updateenv)
+ [Configuration de votre groupe Auto Scaling](#php-hawordpress-tutorial-autoscaling)
+ [Mise à niveau WordPress](#php-hawordpress-tutorial-upgrade)
+ [Nettoyage](#php-hawordpress-tutorial-cleanup)
+ [Étapes suivantes](#php-hawordpress-tutorial-nextsteps)

## Conditions préalables
<a name="php-wordpress-tutorial-prereqs"></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.

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.

**VPC par défaut**  
Les procédures Amazon Relational Database Service (Amazon RDS) décrites dans ce tutoriel supposent que vous lancez des ressources dans un [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/) par défaut. Tous les nouveaux comptes incluent un VPC par défaut dans chaque AWS région. Si vous n'avez pas de VPC par défaut, les procédures seront différentes. Consultez [Utilisation d'Elastic Beanstalk avec Amazon RDS](AWSHowTo.RDS.md) les instructions relatives aux EC2 plateformes VPC classiques et personnalisées.

**AWS Régions**  
L'exemple d'application utilise Amazon EFS, qui ne fonctionne que dans AWS les régions compatibles avec Amazon EFS. Pour en savoir plus sur AWS les régions prises en charge, consultez [Amazon Elastic File System Endpoints and Quotas](https://docs.aws.amazon.com/general/latest/gr/elasticfilesystem.html) dans le *Références générales AWS*.

## Lancement d'une instance de base de données dans Amazon RDS
<a name="php-hawordpress-tutorial-database"></a>

Lorsque vous lancez une instance avec Amazon RDS, elle est complètement indépendante d'Elastic Beanstalk et de vos environnements Elastic Beanstalk et ne sera pas résiliée ou surveillée par Elastic Beanstalk.

Dans les étapes suivantes, vous allez utiliser la console Amazon RDS pour :
+ Lancez une base de données avec le moteur **MySQL** .
+ Activez un **déploiement Multi-AZ**. Cela crée une veille dans une autre zone de disponibilité (AZ) afin d'assurer la redondance des données, d'éliminer les I/O blocages et de minimiser les pics de latence lors des sauvegardes du système.

**Pour lancer une instance DB RDS dans un VPC par défaut**

1. Ouvrez la [console RDS](https://console.aws.amazon.com/rds/home).

1. Dans le panneau de navigation, choisissez **Databases** (Bases de données).

1. Choisissez **Create database** (Créer une base de données).

1. Choisissez **Standard Create** (Création standard).
**Important**  
Ne choisissez pas **Easy Create** (Création facile). Si vous choisissez cette option, vous ne pouvez pas configurer les paramètres nécessaires pour lancer cette base de données RDS.

1. Sous **Additional Configuration (Configuration supplémentaire)**, pour **Initial database name** (Nom initial de la base de données), tapez **ebdb**. 

1. Vérifiez les paramètres par défaut et ajustez ces paramètres en fonction de vos exigences spécifiques. Prêtez attention aux options suivantes :
   + **DB instance class** (Classe d'instance de base de données) : choisissez une taille d'instance avec un niveau approprié de puissance d'UC et de mémoire pour votre charge de travail.
   + **Déploiement multi-AZ** : pour une haute disponibilité, définissez ce paramètre sur **Créer un Replica/Reader nœud Aurora dans une autre zone AZ**.
   + **Master username** (Identifiant principal) et **Master password** (Mot de passe principal) : nom d'utilisateur et mot de passe de la base de données. Notez les valeurs de ces paramètres, car vous en aurez besoin par la suite.

1. Vérifiez les paramètres par défaut pour les autres options, puis cliquez sur **Create database** (Créer une base de données).

Une fois votre instance de base de données créée, modifiez le groupe de sécurité qui lui est associé afin d'autoriser le trafic entrant sur le port approprié.

**Note**  
Il s'agit du même groupe de sécurité que celui que vous associerez plus tard à votre environnement Elastic Beanstalk. Par conséquent, la règle que vous ajoutez maintenant accordera une autorisation d'entrée aux autres ressources de ce même groupe de sécurité.

**Pour modifier les règles de trafic entrant sur le groupe de sécurité associé à votre instance RDS**

1. Ouvrez la [console Amazon RDS](https://console.aws.amazon.com/rds/home).

1. Choisissez **Databases** (Bases de données).

1. Choisissez le nom de votre instance de base de données pour en afficher les détails.

1. Dans la section **Connectivity** (Connectivité), prenez note des **Subnets** (Sous-réseaux), des **Security groups** (Groupes de sécurité) et du **Endpoint** (Point de terminaison) affichés sur cette page. Ainsi, vous pourrez utiliser ces informations ultérieurement.

1. Sous **Security** (Sécurité), vous voyez le groupe de sécurité associé à l'instance de base de données. Ouvrez le lien pour afficher le groupe de sécurité dans la EC2 console Amazon.

1. Dans les détails du groupe de sécurité, choisissez l'onglet **Inbound** (Entrant).

1. Choisissez **Edit** (Modifier).

1. Choisissez **Add Rule** (Ajouter une règle).

1. Pour **Type**, choisissez le moteur de base de données utilisé par votre application.

1. Pour **Source**, entrez **sg-** pour afficher la liste des groupes de sécurité disponibles. Choisissez le groupe de sécurité associé au groupe Auto Scaling utilisé avec votre environnement Elastic Beanstalk. Cela permet aux EC2 instances Amazon présentes dans l'environnement d'accéder à la base de données.  
![\[Image d'écran permettant de modifier les règles de trafic entrant pour un groupe de sécurité dans la EC2 console Amazon.\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/ec2-securitygroup-rds.png)

1. Choisissez **Enregistrer**.

La création d'une instance DB prend environ 10 minutes. En attendant, téléchargez WordPress et créez votre environnement Elastic Beanstalk.

## Télécharger WordPress
<a name="php-hawordpress-tutorial-download"></a>

Pour préparer le déploiement WordPress en utilisant AWS Elastic Beanstalk, vous devez copier les WordPress fichiers sur votre ordinateur et fournir les informations de configuration correctes.

**Pour créer un WordPress projet**

1. Téléchargez WordPress sur [wordpress.org](https://wordpress.org/download/).

   ```
   ~$curl https://wordpress.org/wordpress-6.2.tar.gz -o wordpress.tar.gz
   ```

1. Téléchargez les fichiers de configuration à partir de l'exemple de référentiel.

   ```
   ~$ wget https://github.com/aws-samples/eb-php-wordpress/releases/download/v1.1/eb-php-wordpress-v1.zip
   ```

1. Extrayez WordPress et modifiez le nom du dossier.

   ```
    ~$ tar -xvf wordpress.tar.gz
    ~$ mv wordpress wordpress-beanstalk
    ~$ cd wordpress-beanstalk
   ```

1. Extrayez les fichiers de configuration au cours de l' WordPress installation.

   ```
    ~/wordpress-beanstalk$ unzip ../eb-php-wordpress-v1.zip
     creating: .ebextensions/
    inflating: .ebextensions/dev.config
    inflating: .ebextensions/efs-create.config
    inflating: .ebextensions/efs-mount.config
    inflating: .ebextensions/loadbalancer-sg.config
    inflating: .ebextensions/wordpress.config
    inflating: LICENSE
    inflating: README.md
    inflating: wp-config.php
   ```

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

Utilisez la console Elastic Beanstalk pour créer un environnement Elastic Beanstalk. Après avoir lancé l'environnement, vous pouvez le configurer pour qu'il se connecte à la base de données, puis y déployer le WordPress code.

Dans les étapes suivantes, vous allez utiliser la console Elastic Beanstalk pour :
+ Créez une application Elastic Beanstalk à l'aide de la plateforme **PHP** gérée.
+ 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. 

### Elastic Beanstalk a créé des ressources
<a name="php-hawordpress-tutorial-launch.EB-resources"></a>
+ **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 mène à 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.

L'instance Amazon RDS que vous avez lancée se trouvant en dehors de votre environnement, vous êtes chargé de la gestion de son cycle de vie.

**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 plus d'informations, consultez [Utilisation d'Elastic Beanstalk avec Amazon S3](AWSHowTo.S3.md).

## Configuration des groupes de sécurité et des propriétés de l'environnement
<a name="php-wordpress-tutorial-configure"></a>

Ajoutez le groupe de sécurité de votre instance DB à votre environnement en cours d'exécution. Cette procédure conduit Elastic Beanstalk à remettre en service toutes les instances de votre environnement avec le groupe de sécurité supplémentaire associé.

**Pour ajouter un groupe de sécurité à votre environnement**
+ Effectuez l’une des actions suivantes :
  + Pour ajouter un groupe de sécurité à l'aide de 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 **Instances**, choisissez **Edit (Modifier)**.

    1. Sous **groupes EC2 de sécurité**, choisissez le groupe de sécurité à associer aux instances, en plus du groupe de sécurité d'instance créé par Elastic Beanstalk.

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

    1. Lisez l'avertissement, puis choisissez **Confirm** (Confirmer).
  + Pour ajouter un groupe de sécurité à l'aide d'un [fichier de configuration](ebextensions.md), utilisez le fichier exemple [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config).

Ensuite, utilisez les propriétés de l'environnement pour transmettre les informations de connexion à votre environnement.

L' WordPress application utilise un ensemble de propriétés par défaut qui correspondent à celles configurées par Elastic Beanstalk lorsque vous approvisionnez une base de données au sein de votre environnement.

**Pour configurer les propriétés d'environnement pour une instance de base de données Amazon RDS**

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. Dans la section **Environment properties** (Propriétés de l'environnement), définissez les variables lues par votre application pour créer une chaîne de connexion. Pour assurer la compatibilité avec les environnements disposant d'une instance DB RDS intégrée, utilisez les noms et valeurs suivants : Vous pouvez trouver toutes les valeurs, à l'exception de votre mot de passe, dans la [console RDS](https://console.aws.amazon.com/rds/home).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/php-hawordpress-tutorial.html)  
![\[Section de configuration des propriétés d'environnement avec des propriétés RDS ajoutées\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/environment-cfg-envprops-rds.png)

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

## Configuration et déploiement de votre application
<a name="php-wordpress-tutorial-deploy"></a>

Vérifiez que la structure de votre dossier `wordpress-beanstalk` est correcte, comme illustré.

```
wordpress-beanstalk$ tree -aL 1
.
├── .ebextensions
├── index.php
├── LICENSE
├── license.txt
├── readme.html
├── README.md
├── wp-activate.php
├── wp-admin
├── wp-blog-header.php
├── wp-comments-post.php
├── wp-config.php
├── wp-config-sample.php
├── wp-content
├── wp-cron.php
├── wp-includes
├── wp-links-opml.php
├── wp-load.php
├── wp-login.php
├── wp-mail.php
├── wp-settings.php
├── wp-signup.php
├── wp-trackback.php
└── xmlrpc.php
```

Le fichier `wp-config.php` personnalisé du référentiel de projet utilise les variables d'environnement que vous avez définies à l'étape précédente pour configurer la connexion de base de données. Le dossier `.ebextensions` contient des fichiers de configuration qui créent des ressources supplémentaires au sein de votre environnement Elastic Beanstalk.

Les fichiers de configuration doivent être modifiés pour être compatibles avec votre compte. Remplacez les valeurs d'espace réservé dans les fichiers par les valeurs appropriées IDs et créez un ensemble de sources.

**Pour mettre à jour les fichiers de configuration et créer une solution groupée source**

1. Modifiez les fichiers de configuration comme suit.
   + `.ebextensions/dev.config`— Restreint l'accès à votre environnement pour le protéger pendant le processus WordPress d'installation. Remplacez l'adresse IP fictive située en haut du fichier par l'adresse IP publique de l'ordinateur que vous utiliserez pour accéder au site Web de votre environnement afin de terminer votre WordPress installation. 
**Note**  
En fonction de votre réseau, il se peut que vous ayez besoin d'utiliser un bloc d'adresses IP.
   + `.ebextensions/efs-create.config`— Crée un système de fichiers EFS et des points de montage dans chaque disponibilité Zone/subnet de votre VPC. Identifiez votre VPC et votre sous-réseau par défaut dans IDs la console Amazon [VPC](https://console.aws.amazon.com/vpc/home#subnets:filter=default).

1. Créez un [bundle source](applications-sourcebundle.md) contenant les fichiers dans votre dossier de projet. La commande suivante permet de créer une solution groupée source nommée `wordpress-beanstalk.zip`.

   ```
   ~/eb-wordpress$ zip ../wordpress-beanstalk.zip -r * .[^.]*
   ```

Téléchargez le bundle source dans Elastic Beanstalk WordPress pour le déployer 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.

## Installer WordPress
<a name="php-hawordpress-tutorial-install"></a>

**Pour terminer votre WordPress installation**

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 l'URL d'environnement pour ouvrir votre site dans un navigateur. Vous êtes redirigé vers un assistant WordPress d'installation car vous n'avez pas encore configuré le site.

1. Effectuez une installation standard. Le fichier `wp-config.php` est déjà présent dans le code source et configuré pour lire les informations de connexion à la base de données à partir de l'environnement. Vous ne devriez donc pas être invité à configurer la connexion.

L'installation prend environ une minute.

## Mise à jour des clés et des valeurs salt
<a name="php-hawordpress-tutorial-updatesalts"></a>

Le fichier WordPress de configuration lit `wp-config.php` également les valeurs des clés et des sels à partir des propriétés de l'environnement. Actuellement, ces propriétés sont toutes définies sur `test` par le fichier `wordpress.config` dans le dossier `.ebextensions`.

La valeur salt de hachage peut être n'importe quelle valeur qui respecte les [exigences de propriété d'environnement](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console), mais vous ne devez pas la stocker dans le contrôle de code source. Utilisez la console Elastic Beanstalk pour définir ces propriétés directement sur l'environnement.

**Pour mettre à jour des propriétés d'environnement**

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. Sous **Software (Logiciel)**, choisissez **Edit (Modifier)**.

1. Pour `Environment properties`, modifiez les propriétés suivantes :
   + `AUTH_KEY` – Valeur choisie pour `AUTH_KEY`.
   + `SECURE_AUTH_KEY` – Valeur choisie pour `SECURE_AUTH_KEY`.
   + `LOGGED_IN_KEY` – Valeur choisie pour `LOGGED_IN_KEY`.
   + `NONCE_KEY` – Valeur choisie pour `NONCE_KEY`.
   + `AUTH_SALT` – Valeur choisie pour `AUTH_SALT`.
   + `SECURE_AUTH_SALT` – Valeur choisie pour `SECURE_AUTH_SALT`.
   + `LOGGED_IN_SALT` – Valeur choisie pour `LOGGED_IN_SALT`.
   + `NONCE_SALT` – Valeur choisie pour `NONCE_SALT`.

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

**Note**  
La définition des propriétés sur l'environnement remplace directement les valeurs dans `wordpress.config`.

## Retrait des restrictions d'accès
<a name="php-hawordpress-tutorial-updateenv"></a>

L'exemple de projet inclut le fichier de configuration `loadbalancer-sg.config`. Il crée un groupe de sécurité et l'affecte à l'équilibreur de charge de l'environnement, à l'aide de l'adresse IP que vous avez configurée dans `dev.config`. Il restreint l'accès HTTP sur le port 80 aux connexions provenant de votre réseau. Dans le cas contraire, un tiers pourrait se connecter à votre site avant que vous n'ayez installé WordPress et configuré votre compte administrateur.

Maintenant que vous l'avez installé WordPress, supprimez le fichier de configuration pour ouvrir le site au monde entier.

**Pour supprimer la restriction et mettre à jour votre environnement**

1. Supprimez le fichier `.ebextensions/loadbalancer-sg.config` de votre répertoire de projet.

   ```
   ~/wordpress-beanstalk$ rm .ebextensions/loadbalancer-sg.config
   ```

1. Créez une solution groupée source.

   ```
   ~/eb-wordpress$ zip ../wordpress-beanstalk-v2.zip -r * .[^.]*
   ```

Téléchargez le bundle source dans Elastic Beanstalk WordPress pour le déployer 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.

## Configuration de votre groupe Auto Scaling
<a name="php-hawordpress-tutorial-autoscaling"></a>

Enfin, configurez le groupe Auto Scaling de votre environnement avec un nombre minimum d'instances plus élevé. Exécutez au moins deux instances à tout moment pour éviter que les serveurs Web de votre environnement constituent un point de défaillance unique. Cela vous permet également de déployer des modifications sans mettre votre site hors service.

**Pour configurer le groupe Auto Scaling de votre environnement pour une haute disponibilité**

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 **Capacity** (Capacité), choisissez **Edit** (Modifier).

1. Dans la section **Auto Scaling group** (Groupe Auto Scaling), définissez les **Min instances** (Instances min.) sur **2**.

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

Pour la prise en charge des chargements de contenu sur plusieurs instances, l'exemple de projet utilise Amazon EFS pour créer un système de fichiers partagé. Créez une publication sur le site et chargez le contenu afin de le stocker sur le système de fichiers partagé. Affichez la publication et actualisez la page plusieurs fois pour atteindre les deux instances et vérifier que le système de fichiers partagé fonctionne.

## Mise à niveau WordPress
<a name="php-hawordpress-tutorial-upgrade"></a>

Pour effectuer une mise à niveau vers une nouvelle version de WordPress, sauvegardez votre site et déployez-le dans un nouvel environnement.

**Important**  
N'utilisez pas la fonctionnalité de mise à jour intégrée WordPress ou ne mettez pas à jour vos fichiers source pour utiliser une nouvelle version. Ces deux actions peuvent faire en sorte que votre publication URLs renvoie des erreurs 404 même si elles se trouvent toujours dans la base de données et le système de fichiers.

**Pour mettre à niveau WordPress**

1. Dans la console WordPress d'administration, utilisez l'outil d'exportation pour exporter vos publications vers un fichier XML.

1. Déployez et installez la nouvelle version WordPress de sur Elastic Beanstalk en suivant les mêmes étapes que pour installer la version précédente. Pour éviter les temps d'arrêt, vous pouvez créer un environnement avec la nouvelle version.

1. Dans la nouvelle version, installez l'outil d' WordPress importation dans la console d'administration et utilisez-le pour importer le fichier XML contenant vos publications. Si les publications ont été créées par l'utilisateur administrateur dans l'ancienne version, affectez-les à l'utilisateur administrateur sur le nouveau site au lieu d'essayer d'importer l'utilisateur admin.

1. Si vous avez déployé la nouvelle version dans un autre environnement, effectuez un [échange CNAME](using-features.CNAMESwap.md) pour rediriger les utilisateurs de l'ancien site vers le nouveau site.

## Nettoyage
<a name="php-hawordpress-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 ne supprime pas 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.

Vous pouvez également arrêter les ressources de base de données que vous avez créées hors de votre environnement Elastic Beanstalk. Lorsque vous résiliez une instance de base de données Amazon RDS, vous pouvez prendre un instantané et restaurer les données dans une autre instance ultérieurement.

**Pour résilier votre instance DB RDS**

1. Ouvrez la [console Amazon RDS](https://console.aws.amazon.com/rds).

1. Choisissez **Databases** (Bases de données).

1. Sélectionnez votre instance DB.

1. Choisissez **Actions**, puis **Supprimer**.

1. Choisissez si vous souhaitez créer un instantané, puis choisissez **Delete** (Supprimer).

## Étapes suivantes
<a name="php-hawordpress-tutorial-nextsteps"></a>

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

L'exemple d'application utilise des fichiers de configuration pour configurer les paramètres PHP et pour créer une table dans la base de données, si elle n'existe pas déjà. Vous pouvez également utiliser un fichier de configuration pour configurer les paramètres de groupe de sécurité de vos instances lors de la création de l'environnement afin d'éviter les mises à jour de configuration, qui prennent du temps. Pour plus d’informations, consultez [Personnalisation d'environnement avancée avec fichiers de configuration (`.ebextensions`)](ebextensions.md).

Pour le développement et les tests, vous pouvez utiliser la fonctionnalité Elastic Beanstalk permettant d'ajouter directement une instance de base de données gérée à votre environnement. Pour savoir comment configurer une base de données dans votre environnement, consultez [Ajout d'une base de données à votre environnement Elastic Beanstalk](using-features.managing.db.md).

Si vous avez besoin d'une base de données hautes performances, envisagez d'utiliser [Amazon Aurora](https://aws.amazon.com/rds/aurora/). Amazon Aurora est un moteur de base de données compatible MySQL qui offre des fonctionnalités de base de données commerciales à faible coût. Pour connecter votre application à une autre base de données, répétez la procédure de [configuration du groupe de sécurité](php-ha-tutorial.md#php-hawrds-tutorial-database) et [mettez à jour les propriétés d'environnement associées à RDS](php-ha-tutorial.md#php-hawrds-tutorial-configure). 

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.

# Déploiement d'un site web Drupal haute disponibilité avec une base de données Amazon RDS externe vers Elastic Beanstalk
<a name="php-hadrupal-tutorial"></a>

Ce didacticiel explique le processus de [lancement d'une instance de base de données RDS](AWSHowTo.RDS.md) externe à AWS Elastic Beanstalk. Il décrit ensuite comment configurer un environnement à haute disponibilité en exécutant un site web Drupal pour s'y connecter. Le site web utilise Amazon Elastic File System (Amazon EFS) comme stockage partagé pour les fichiers téléchargés. L'exécution d'une instance de base de données externe à Elastic Beanstalk dissocie la base de données du cycle de vie de votre environnement et vous permet de vous connecter à la même base de données depuis plusieurs environnements, de remplacer une base de données par une autre ou blue/green d'effectuer un déploiement sans affecter votre base de données.

**Topics**
+ [Conditions préalables](#php-hadrupal-tutorial-prereqs)
+ [Lancement d'une instance de base de données dans Amazon RDS](#php-hadrupal-tutorial-database)
+ [Lancer un environnement Elastic Beanstalk](#php-hadrupal-tutorial-launch)
+ [Configuration des paramètres de sécurité et des propriétés de l'environnement](#php-hadrupal-tutorial-configure)
+ [Configuration et déploiement de votre application](#php-hadrupal-tutorial-deploy)
+ [Installation de Drupal](#php-hadrupal-tutorial-install)
+ [Mise à jour de la configuration de Drupal et retrait de restrictions d'accès](#php-hadrupal-tutorial-updateenv)
+ [Configuration de votre groupe Auto Scaling](#php-hadrupal-tutorial-autoscaling)
+ [Nettoyage](#php-hadrupal-tutorial-cleanup)
+ [Étapes suivantes](#php-hadrupal-tutorial-nextsteps)

## Conditions préalables
<a name="php-hadrupal-tutorial-prereqs"></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.

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.

Les procédures décrites dans ce tutoriel pour les tâches Amazon Relational Database Service (Amazon RDS) supposent que vous lanciez des ressources dans un [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) par défaut. Tous les nouveaux comptes incluent un VPC par défaut dans chaque région. Si vous n'avez pas de VPC par défaut, les procédures seront différentes. Consultez [Utilisation d'Elastic Beanstalk avec Amazon RDS](AWSHowTo.RDS.md) les instructions relatives aux EC2 plateformes VPC classiques et personnalisées.

L'exemple d'application utilise Amazon EFS. Cela ne fonctionne que dans AWS les régions qui prennent en charge Amazon EFS. Pour en savoir plus sur la prise en charge AWS des régions, consultez [Amazon Elastic File System Endpoints and Quotas](https://docs.aws.amazon.com/general/latest/gr/elasticfilesystem.html) dans le *Références générales AWS*.

Si la plateforme de votre environnement Elastic Beanstalk utilise PHP 7.4 ou version antérieure, nous vous recommandons d'utiliser la version 8.9.13 de Drupal pour ce tutoriel. Pour les plateformes installées avec PHP 8.0 ou version ultérieure, nous vous recommandons d'utiliser Drupal 9.1.5.

Pour plus d'informations sur les versions de Drupal et les versions de PHP qu'elles prennent en charge, consultez [Exigences relatives à PHP](https://www.drupal.org/docs/system-requirements/php-requirements#php_required) sur le site Web de Drupal. [Les versions principales recommandées par Drupal sont répertoriées sur le site Web https://www.drupal. org/project/drupal](https://www.drupal.org/project/drupal). 

## Lancement d'une instance de base de données dans Amazon RDS
<a name="php-hadrupal-tutorial-database"></a>

Pour utiliser une base de données externe avec une application exécutée dans Elastic Beanstalk, lancez d'abord une instance de base de données avec Amazon RDS. Lorsque vous lancez une instance avec Amazon RDS, elle est totalement indépendante d'Elastic Beanstalk et de vos environnements Elastic Beanstalk et ne sera pas résiliée ou surveillée par Elastic Beanstalk.

Utilisez la console Amazon RDS pour lancer une instance de base de données DB **MySQL** Multi-AZ. Le choix d'un déploiement multi-AZ garantit que votre base de données basculera et qu'elle sera toujours disponible si l'instance de base de données source se retrouve hors service.

**Pour lancer une instance DB RDS dans un VPC par défaut**

1. Ouvrez la [console RDS](https://console.aws.amazon.com/rds/home).

1. Dans le panneau de navigation, choisissez **Databases** (Bases de données).

1. Choisissez **Create database** (Créer une base de données).

1. Choisissez **Standard Create** (Création standard).
**Important**  
Ne choisissez pas **Easy Create** (Création facile). Si vous choisissez cette option, vous ne pouvez pas configurer les paramètres nécessaires pour lancer cette base de données RDS.

1. Sous **Additional Configuration (Configuration supplémentaire)**, pour **Initial database name** (Nom initial de la base de données), tapez **ebdb**. 

1. Vérifiez les paramètres par défaut et ajustez ces paramètres en fonction de vos exigences spécifiques. Prêtez attention aux options suivantes :
   + **DB instance class** (Classe d'instance de base de données) : choisissez une taille d'instance avec un niveau approprié de puissance d'UC et de mémoire pour votre charge de travail.
   + **Déploiement multi-AZ** : pour une haute disponibilité, définissez ce paramètre sur **Créer un Replica/Reader nœud Aurora dans une autre zone AZ**.
   + **Master username** (Identifiant principal) et **Master password** (Mot de passe principal) : nom d'utilisateur et mot de passe de la base de données. Notez les valeurs de ces paramètres, car vous en aurez besoin par la suite.

1. Vérifiez les paramètres par défaut pour les autres options, puis cliquez sur **Create database** (Créer une base de données).

Ensuite, modifiez le groupe de sécurité associé à votre instance DB pour autoriser le trafic entrant sur le port approprié. Il s'agit du même groupe de sécurité que celui que vous associerez plus tard à votre environnement Elastic Beanstalk. Par conséquent, la règle que vous ajoutez accordera une autorisation d'entrée aux autres ressources de ce même groupe de sécurité.

**Pour modifier les règles de trafic entrant sur le groupe de sécurité associé à votre instance RDS**

1. Ouvrez la [console Amazon RDS](https://console.aws.amazon.com/rds/home).

1. Choisissez **Databases** (Bases de données).

1. Choisissez le nom de votre instance de base de données pour en afficher les détails.

1. Dans la section **Connectivity** (Connectivité), prenez note des **Subnets** (Sous-réseaux), des **Security groups** (Groupes de sécurité) et du **Endpoint** (Point de terminaison) affichés sur cette page. Ainsi, vous pourrez utiliser ces informations ultérieurement.

1. Sous **Security** (Sécurité), vous voyez le groupe de sécurité associé à l'instance de base de données. Ouvrez le lien pour afficher le groupe de sécurité dans la EC2 console Amazon.

1. Dans les détails du groupe de sécurité, choisissez l'onglet **Inbound** (Entrant).

1. Choisissez **Edit** (Modifier).

1. Choisissez **Add Rule** (Ajouter une règle).

1. Pour **Type**, choisissez le moteur de base de données utilisé par votre application.

1. Pour **Source**, entrez **sg-** pour afficher la liste des groupes de sécurité disponibles. Choisissez le groupe de sécurité associé au groupe Auto Scaling utilisé avec votre environnement Elastic Beanstalk. Cela permet aux EC2 instances Amazon présentes dans l'environnement d'accéder à la base de données.  
![\[Image d'écran permettant de modifier les règles de trafic entrant pour un groupe de sécurité dans la EC2 console Amazon.\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/ec2-securitygroup-rds.png)

1. Choisissez **Enregistrer**.

La création d'une instance DB prend environ 10 minutes. En attendant, lancez votre environnement Elastic Beanstalk.

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

Utilisez la console Elastic Beanstalk pour créer un environnement Elastic Beanstalk. Choisissez la plateforme **PHP** et acceptez les paramètres par défaut et l'exemple de code. Une fois l'environnement lancé, vous pouvez le configurer pour vous connecter à la base de données, puis déployer le code Drupal dans l'environnement.

**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. L'instance DB RDS que vous avez lancée se trouvant en dehors de votre environnement, vous êtes chargé de la gestion de son cycle de vie.

**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 plus d'informations, consultez [Utilisation d'Elastic Beanstalk avec Amazon S3](AWSHowTo.S3.md).

## Configuration des paramètres de sécurité et des propriétés de l'environnement
<a name="php-hadrupal-tutorial-configure"></a>

Ajoutez le groupe de sécurité de votre instance DB à votre environnement en cours d'exécution. Cette procédure conduit Elastic Beanstalk à remettre en service toutes les instances de votre environnement avec le groupe de sécurité supplémentaire associé.

**Pour ajouter un groupe de sécurité à votre environnement**
+ Effectuez l’une des actions suivantes :
  + Pour ajouter un groupe de sécurité à l'aide de 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 **Instances**, choisissez **Edit (Modifier)**.

    1. Sous **groupes EC2 de sécurité**, choisissez le groupe de sécurité à associer aux instances, en plus du groupe de sécurité d'instance créé par Elastic Beanstalk.

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

    1. Lisez l'avertissement, puis choisissez **Confirm** (Confirmer).
  + Pour ajouter un groupe de sécurité à l'aide d'un [fichier de configuration](ebextensions.md), utilisez le fichier exemple [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config).

Ensuite, utilisez les propriétés de l'environnement pour transmettre les informations de connexion à votre environnement. L'exemple d'application utilise un ensemble de propriétés par défaut qui correspondent à celles qui sont configurées par Elastic Beanstalk lorsque vous mettez en service une base de données dans votre environnement.

**Pour configurer les propriétés d'environnement pour une instance de base de données Amazon RDS**

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. Dans la section **Environment properties** (Propriétés de l'environnement), définissez les variables lues par votre application pour créer une chaîne de connexion. Pour assurer la compatibilité avec les environnements disposant d'une instance DB RDS intégrée, utilisez les noms et valeurs suivants : Vous pouvez trouver toutes les valeurs, à l'exception de votre mot de passe, dans la [console RDS](https://console.aws.amazon.com/rds/home).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/php-hadrupal-tutorial.html)  
![\[Section de configuration des propriétés d'environnement avec des propriétés RDS ajoutées\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/environment-cfg-envprops-rds.png)

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

Une fois Drupal installé, vous devez vous connecter à l'instance avec SSH pour récupérer certains détails de configuration. Attribuez une clé SSH aux instances de votre environnement.

**Pour configurer SSH**

1. Si vous n'avez pas encore créé de paire de clés, ouvrez la [page des paires de clés](https://console.aws.amazon.com/ec2/v2/home#KeyPairs) de la EC2 console Amazon et suivez les instructions pour en créer une.

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. Sous **Security (Sécurité)**, choisissez **Edit (Modifier)**.

1. Pour **une paire de EC2 clés**, choisissez votre paire de clés.

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

## Configuration et déploiement de votre application
<a name="php-hadrupal-tutorial-deploy"></a>

[Pour créer un projet Drupal pour Elastic Beanstalk, téléchargez le code source de Drupal et combinez-le avec les fichiers du référentiel aws-samples/ sur. eb-php-drupal](https://github.com/aws-samples/eb-php-drupal) GitHub

**Pour créer un projet Drupal**

1. Exécutez la commande suivante pour télécharger Drupal à partir de *www.drupal.org/download*. Pour en savoir plus sur les téléchargements, consultez [le site Web de Drupal](https://www.drupal.org/download).

   Si la plateforme de votre environnement Elastic Beanstalk utilise PHP 7.4 ou version antérieure, nous vous recommandons de télécharger la version 8.9.13 de Drupal pour ce tutoriel. Pour ce faire, exécutez la commande suivante.

   ```
   ~$ curl https://ftp.drupal.org/files/projects/drupal-8.9.13.tar.gz -o drupal.tar.gz
   ```

   Si votre plateforme utilise PHP 8.0 ou version ultérieure, nous vous recommandons de télécharger Drupal 9.1.5. Pour ce faire, exécutez la commande suivante.

   ```
   ~$ curl https://ftp.drupal.org/files/projects/drupal-9.1.5.tar.gz -o drupal.tar.gz
   ```

   Pour plus d'informations sur les versions de Drupal et les versions de PHP qu'elles prennent en charge, consultez [Exigences relatives à PHP](https://www.drupal.org/docs/system-requirements/php-requirements#php_required) dans la documentation officielle de Drupal. Les versions principales recommandées par Drupal sont répertoriées sur [le site Web de Drupal](https://www.drupal.org/project/drupal).

1. Utilisez la commande suivante pour télécharger les fichiers de configuration à partir de l'exemple de référentiel :

   ```
   ~$ wget https://github.com/aws-samples/eb-php-drupal/releases/download/v1.1/eb-php-drupal-v1.zip
   ```

1. Extrayez Drupal et modifiez le nom du dossier.

   Si vous avez téléchargé Drupal 8.9.13 :

   ```
    ~$ tar -xvf drupal.tar.gz
    ~$ mv drupal-8.9.13 drupal-beanstalk
    ~$ cd drupal-beanstalk
   ```

   Si vous avez téléchargé Drupal 9.1.5 :

   ```
    ~$ tar -xvf drupal.tar.gz
    ~$ mv drupal-9.1.5 drupal-beanstalk
    ~$ cd drupal-beanstalk
   ```

1. Extrayez les fichiers de configuration sur l'installation de Drupal.

   ```
    ~/drupal-beanstalk$ unzip ../eb-php-drupal-v1.zip
     creating: .ebextensions/
     inflating: .ebextensions/dev.config
     inflating: .ebextensions/drupal.config
     inflating: .ebextensions/efs-create.config
     inflating: .ebextensions/efs-filesystem.template
     inflating: .ebextensions/efs-mount.config
     inflating: .ebextensions/loadbalancer-sg.config
     inflating: LICENSE
     inflating: README.md
     inflating: beanstalk-settings.php
   ```

Vérifiez que la structure de votre dossier `drupal-beanstalk` est correcte, comme illustré.

```
drupal-beanstalk$ tree -aL 1
.
├── autoload.php
├── beanstalk-settings.php
├── composer.json
├── composer.lock
├── core
├── .csslintrc
├── .ebextensions
├── .ebextensions
├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── example.gitignore
├── .gitattributes
├── .htaccess
├── .ht.router.php
├── index.php
├── LICENSE
├── LICENSE.txt
├── modules
├── profiles
├── README.md
├── README.txt
├── robots.txt
├── sites
├── themes
├── update.php
├── vendor
└── web.config
```

Le fichier `beanstalk-settings.php` du référentiel de projet utilise les variables d'environnement que vous avez définies à l'étape précédente pour configurer la connexion de base de données. Le dossier `.ebextensions` contient des fichiers de configuration qui créent des ressources supplémentaires au sein de votre environnement Elastic Beanstalk.

Les fichiers de configuration doivent être modifiés pour être compatibles avec votre compte. Remplacez les valeurs d'espace réservé dans les fichiers par les valeurs appropriées IDs et créez un ensemble de sources.

**Pour mettre à jour les fichiers de configuration et créer une solution groupée source.**

1. Modifiez les fichiers de configuration comme suit.
   + `.ebextensions/dev.config` – Restreint l'accès à votre environnement à votre adresse IP afin de le protéger lors du processus d'installation de Drupal. Remplacez l'adresse IP de l'espace réservé vers le haut du fichier par votre adresse IP publique.
   + `.ebextensions/efs-create.config` – Crée un système de fichiers EFS et des points de montage dans chaque zone de disponibilité/sous-réseau de votre VPC. Identifiez votre VPC et votre sous-réseau par défaut dans IDs la console Amazon [VPC](https://console.aws.amazon.com/vpc/home#subnets:filter=default).

1. Créez un [bundle source](applications-sourcebundle.md) contenant les fichiers dans votre dossier de projet. La commande suivante permet de créer une solution groupée source nommée `drupal-beanstalk.zip`. Elle exclut les fichiers du dossier `vendor`, lesquels prennent beaucoup de place et ne sont pas nécessaires pour le déploiement de votre application dans Elastic Beanstalk.

   ```
   ~/eb-drupal$ zip ../drupal-beanstalk.zip -r * .[^.]* -x "vendor/*"
   ```

Chargez le bundle source sur Elastic Beanstalk pour déployer Drupal 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.

## Installation de Drupal
<a name="php-hadrupal-tutorial-install"></a>

**Pour terminer l'installation de Drupal**

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 l'URL d'environnement pour ouvrir votre site dans un navigateur. Vous êtes redirigé vers un assistant d'installation Drupal car le site n'a pas encore été configuré.

1. Effectuez une installation standard avec les paramètres suivants pour la base de données :
   + **Nom de la base de données** – **Nom de la base de données** qui apparaît sur la console Amazon RDS.
   + **Nom d'utilisateur de base de données et mot de passe** – Valeurs des champs **Identifiant principal** et **Mot de passe principal** que vous avez saisies lors de la création de votre base de données.
   + **Options avancées > Hôte** – Valeur du champ **Point de terminaison** correspondant à l'instance de base de données, affichée dans la console Amazon RDS.

L'installation prend environ une minute.

## Mise à jour de la configuration de Drupal et retrait de restrictions d'accès
<a name="php-hadrupal-tutorial-updateenv"></a>

Le processus d'installation de Drupal a créé un fichier nommé `settings.php` dans le dossier `sites/default` sur l'instance. Vous aurez besoin de ce fichier dans votre code source pour éviter de réinitialiser votre site lors des déploiements suivants, mais le fichier contient actuellement des codes secrets que vous ne souhaitez pas valider dans la source. Connectez-vous à l'instance d'application afin de récupérer les informations du fichier de paramètres.

**Pour vous connecter à votre instance d'application avec SSH**

1. Ouvrez la [page des instances](https://console.aws.amazon.com/ec2/v2/home#Instances:sort=tag:Name) de la EC2 console Amazon.

1. Choisissez l'instance d'application. C'est celui qui porte le nom de votre environnement Elastic Beanstalk.

1. Choisissez **Se connecter**.

1. Suivez les instructions pour vous connecter à l'instance avec SSH. La commande ressemble à ce qui suit.

   ```
   $ ssh -i ~/.ssh/mykey ec2-user@ec2-00-55-33-222.us-west-2.compute.amazonaws.com
   ```

Obtenez l'ID du répertoire de synchronisation dans la dernière ligne du fichier de paramètres.

```
[ec2-user ~]$ tail -n 1 /var/app/current/sites/default/settings.php
$config_directories['sync'] = 'sites/default/files/config_4ccfX2sPQm79p1mk5IbUq9S_FokcENO4mxyC-L18-4g_xKj_7j9ydn31kDOYOgnzMu071Tvc4Q/sync';
```

Le fichier contient également la clé de hachage actuelle des sites, mais vous pouvez ignorer la valeur actuelle et utiliser la votre.

Attribuez le chemin d'accès au répertoire et la clé de hachage aux propriétés de l'environnement. Le fichier de paramètres personnalisés du référentiel de projet lit ces propriétés pour configurer le site pendant le déploiement, en plus des propriétés de connexion de base de données que vous avez définies précédemment.

**Propriétés de configuration de Drupal**
+ `SYNC_DIR` – Chemin d'accès au répertoire de synchronisation.
+ `HASH_SALT` – Toute valeur de chaîne qui respecte les [exigences de propriété d'environnement](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console).

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

Enfin l'exemple de projet inclut un fichier de configuration (`loadbalancer-sg.config`) qui crée un groupe de sécurité et l'affecte à l'équilibreur de charge de l'environnement, à l'aide de l'adresse IP que vous avez configurée dans `dev.config` afin de restreindre l'accès HTTP sur le port 80 aux connexions provenant de votre réseau. Sinon, un tiers pourrait se connecter éventuellement à votre site avant que vous ayez installé Drupal et configuré votre compte d'administrateur.

**Pour mettre à jour la configuration de Drupal et retirer les restrictions d'accès**

1. Supprimez le fichier `.ebextensions/loadbalancer-sg.config` de votre répertoire de projet.

   ```
   ~/drupal-beanstalk$ rm .ebextensions/loadbalancer-sg.config
   ```

1. Copiez le fichier `settings.php` personnalisé dans le dossier des sites.

   ```
   ~/drupal-beanstalk$ cp beanstalk-settings.php sites/default/settings.php
   ```

1. Créez une solution groupée source.

   ```
   ~/eb-drupal$ zip ../drupal-beanstalk-v2.zip -r * .[^.]* -x "vendor/*"
   ```

Chargez le bundle source sur Elastic Beanstalk pour déployer Drupal 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.

## Configuration de votre groupe Auto Scaling
<a name="php-hadrupal-tutorial-autoscaling"></a>

Enfin, configurez le groupe Auto Scaling de votre environnement avec un nombre minimum d'instances plus élevé. Exécutez au moins deux instances en permanence afin d'empêcher que les serveurs web de votre environnement constituent un point de défaillance unique et pour vous permettre de déployer des modifications sans mettre votre site hors service.

**Pour configurer le groupe Auto Scaling de votre environnement pour une haute disponibilité**

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 **Capacity** (Capacité), choisissez **Edit** (Modifier).

1. Dans la section **Auto Scaling group** (Groupe Auto Scaling), définissez les **Min instances** (Instances min.) sur **2**.

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

Pour la prise en charge des chargements de contenu sur plusieurs instances, l'exemple de projet utilise Amazon Elastic File System pour créer un système de fichiers partagé. Créez une publication sur le site et chargez le contenu afin de le stocker sur le système de fichiers partagé. Affichez la publication et actualisez la page plusieurs fois pour atteindre les deux instances et vérifier que le système de fichiers partagé fonctionne.

## Nettoyage
<a name="php-hadrupal-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.

Vous pouvez également arrêter les ressources de base de données que vous avez créées hors de votre environnement Elastic Beanstalk. Lorsque vous résiliez une instance de base de données Amazon RDS, vous pouvez prendre un instantané et restaurer les données dans une autre instance ultérieurement.

**Pour résilier votre instance DB RDS**

1. Ouvrez la [console Amazon RDS](https://console.aws.amazon.com/rds).

1. Choisissez **Databases** (Bases de données).

1. Sélectionnez votre instance DB.

1. Choisissez **Actions**, puis **Supprimer**.

1. Choisissez si vous souhaitez créer un instantané, puis choisissez **Delete** (Supprimer).

## Étapes suivantes
<a name="php-hadrupal-tutorial-nextsteps"></a>

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

L'exemple d'application utilise des fichiers de configuration pour configurer les paramètres PHP et pour créer une table dans la base de données si elle n'existe pas déjà. Vous pouvez également utiliser un fichier de configuration pour configurer les paramètres de groupe de sécurité de vos instances lors de la création de l'environnement afin d'éviter les mises à jour de configuration, qui prennent du temps. Pour plus d’informations, consultez [Personnalisation d'environnement avancée avec fichiers de configuration (`.ebextensions`)](ebextensions.md).

Pour le développement et les tests, vous pouvez utiliser la fonctionnalité Elastic Beanstalk permettant d'ajouter directement une instance de base de données gérée à votre environnement. Pour savoir comment configurer une base de données dans votre environnement, consultez [Ajout d'une base de données à votre environnement Elastic Beanstalk](using-features.managing.db.md).

Si vous avez besoin d'une base de données hautes performances, envisagez d'utiliser [Amazon Aurora](https://aws.amazon.com/rds/aurora/). Amazon Aurora est un moteur de base de données compatible MySQL qui offre des fonctionnalités de base de données commerciales à faible coût. Pour connecter votre application à une autre base de données, répétez la procédure de [configuration du groupe de sécurité](php-ha-tutorial.md#php-hawrds-tutorial-database) et [mettez à jour les propriétés d'environnement associées à RDS](php-ha-tutorial.md#php-hawrds-tutorial-configure). 

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.