

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.

# Didacticiel : Créer un serveur web et une instance de base de données Amazon RDS
<a name="TUT_WebAppWithRDS"></a>

Ce didacticiel vous montre comment installer un serveur web Apache avec PHP et créer une base de données MariaDB, MySQL ou PostgreSQL. Le serveur web s'exécute sur une instance Amazon EC2 utilisant Amazon Linux 2023 et vous pouvez choisir entre une instance de base de données MySQL ou PostgreSQL. L'instance Amazon EC2 et l'instance de base de données s'exécutent tous deux dans un Virtual Private Cloud (VPC) basé sur le service Amazon VPC. 

**Important**  
La création d'un AWS compte est gratuite. Cependant, en suivant ce didacticiel, les AWS ressources que vous utilisez peuvent vous coûter cher. Vous pouvez supprimer ces ressources après avoir terminé le didacticiel si elles ne sont plus nécessaires.

**Note**  
Ce didacticiel s'applique à Amazon Linux 2023 et peut ne pas fonctionner pour d'autres versions de Linux.

Dans le tutoriel qui suit, vous créez une instance EC2 qui utilise le VPC, les sous-réseaux et le groupe de sécurité par défaut pour votre Compte AWS. Ce tutoriel vous montre comment créer l'instance de base de données et configurer automatiquement la connectivité avec l'instance EC2 que vous avez créée. Le tutoriel vous montre ensuite comment installer le serveur web sur l'instance EC2. Vous connectez votre serveur Web à votre instance de base de données dans le VPC en utilisant le point de terminaison de l'instance de la base de données.

1. [Lancement d’une instance EC2 pour vous connecter à votre instance de base de données](CHAP_Tutorials.WebServerDB.LaunchEC2.md)

1. [Créer une instance de base de données Amazon RDS](CHAP_Tutorials.WebServerDB.CreateDBInstance.md)

1. [Installer un serveur web sur votre instance EC2](CHAP_Tutorials.WebServerDB.CreateWebServer.md)

Le diagramme suivant affiche la configuration obtenue au terme de ce didacticiel.

![\[Scénario à VPC unique\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp.png)


**Note**  
Une fois le tutoriel terminé, chaque zone de disponibilité de votre VPC comporte un sous-réseau public et un sous-réseau privé.  Si vous préférez plutôt configurer un nouveau VPC pour ce scénario, suivez les étapes décrites dans [Tutoriel : Création d'un VPC à utiliser avec un ) IPv4](CHAP_Tutorials.WebServerDB.CreateVPC.md).

# Lancement d’une instance EC2 pour vous connecter à votre instance de base de données
<a name="CHAP_Tutorials.WebServerDB.LaunchEC2"></a>

Créez une instance Amazon EC2 dans le sous-réseau public de votre VPC.

**Pour lancer une instance EC2**

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dans le coin supérieur droit du AWS Management Console, choisissez l' Région AWS endroit où vous souhaitez créer l'instance EC2.

1. Choisissez **Tableau de bord EC2**, puis **Lancer une instance**, comme illustré ci-dessous.  
![\[Tableau de bord EC2\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

1. Choisissez les paramètres suivants sur la page **Lancer une instance**.

   1. Sous **Name and tags** (Nom et identifications), pour **Name** (Nom), saisissez **tutorial-ec2-instance-web-server**.

   1. Sous **Application et images OS (Amazon Machine Image)**, choisissez **Amazon Linux**, puis **Amazon Linux 2023 AMI**. Conservez les valeurs par défaut pour les autres choix.  
![\[Sélection d’une Amazon Machine Image (AMI)\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. Sous **Instance type** (Type d’instance), choisissez **t2.micro**.

   1. Sous **Key pair (login)** [Paire de clés (connexion)], choisissez une valeur **Key pair name** (Nom de paire de clés) pour utiliser une paire de clés existante. Pour créer une paire de clés pour l’instance Amazon EC2, choisissez **Create new key pair** (Créer une paire de clés), puis utilisez la fenêtre **Create key pair** (Créer une paire de clés) pour la créer.

      Pour plus d’informations sur la création d’une paire de clés, consultez [Création d’une paire de clés](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair) dans le *Guide de l’utilisateur Amazon EC2*.

   1. Sous **Network settings** (Paramètres réseau), définissez ces valeurs et conservez les autres valeurs par défaut :
      + Pour **Allow SSH traffic from** (Autoriser le trafic SSH depuis), choisissez la source des connexions SSH vers l’instance EC2.

        Vous pouvez choisir **My IP** (Mon IP) si l’adresse IP affichée est correcte pour les connexions SSH.

        Sinon, vous pouvez déterminer l’adresse IP à utiliser pour vous connecter aux instances EC2 dans votre VPC en utilisant Secure Shell (SSH). Pour déterminer votre adresse IP publique, dans une autre fenêtre ou un autre onglet du navigateur, vous pouvez utiliser le service à l'adresse [https://checkip.amazonaws.com](https://checkip.amazonaws.com). Exemple d’adresse IP : `203.0.113.25/32`.

        Dans de nombreux cas, votre connexion s’effectue via un fournisseur de services Internet (FSI) ou derrière votre pare-feu sans adresse IP statique. Si tel est le cas, assurez-vous de déterminer la plage d’adresses IP utilisées par les ordinateurs clients.
**Avertissement**  
Si vous utilisez `0.0.0.0/0` pour l’accès SSH, vous permettez à toutes les adresses IP d’accéder à vos instances publiques par SSH. Cette approche est acceptable pour une brève durée dans un environnement de test, mais n’est pas sécurisée pour les environnements de production. Dans un environnement de production, autorisez uniquement l’accès à vos instances à l’aide de SSH pour une adresse IP ou une plage d’adresses spécifique.
      + Activez **Autoriser HTTPs le trafic en provenance d'Internet**.
      + Activez l’option **Allow HTTP traffic from the internet** (Autoriser le trafic HTTP depuis Internet).  
![\[Configurer les détails d’instance\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_14.png)

   1. Laissez les valeurs par défaut pour les autres sections.

   1. Consultez un résumé de la configuration de votre instance dans le panneau **Summary** (Récapitulatif) et, lorsque vous êtes prêt, choisissez **Launch instance** (Lancer l’instance).

1. Sur la page **Statut de lancement**, notez l’identifiant de votre nouvelle instance EC2, tel que : `i-1234567890abcdef0`.  
![\[Identifiant de l’instance EC2 sur la page Statut de lancement.\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. Choisissez l’identifiant de l’instance EC2 pour ouvrir la liste des instances EC2, puis sélectionnez votre instance EC2.

1. Dans l’onglet **Détails**, notez les valeurs suivantes. Vous en aurez besoin lorsque vous vous connecterez via SSH :

   1. Dans **Résumé de l'instance**, notez la valeur **du IPv4 DNS public**.  
![\[Nom DNS public EC2 dans l’onglet Détails de la page Instances.\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. Dans **Détails de l’instance**, notez la valeur pour **Nom de la paire de clés**.  
![\[Nom de la paire de clés EC2 dans l’onglet Détails de la page Instances.\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. Attendez que la valeur **Instance state** (État de votre instance) soit **Running** (En cours d’exécution) avant de continuer.

1. Termin [Créer une instance de base de données Amazon RDS](CHAP_Tutorials.WebServerDB.CreateDBInstance.md).

# Créer une instance de base de données Amazon RDS
<a name="CHAP_Tutorials.WebServerDB.CreateDBInstance"></a>

Créez une instance de base de données RDS for MariaDB, RDS for MySQL ou RDS pour PostgreSQL qui conserve les données utilisées par une application web. 

------
#### [ RDS for MariaDB ]

**Pour créer une instance MariaDB**

1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l’adresse [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En haut à droite de AWS Management Console, sélectionnez Région AWS. Elle doit être la même que celle où vous avez créé votre instance EC2.

1. Dans la panneau de navigation, choisissez **Bases de données**.

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

1. Sur la page **Créer une base de données**, choisissez **Création standard**.

1. Dans **Options de moteur**, choisissez **MariaDB**.  
![\[Sélectionner un type de moteur\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/tutorial-create-mariadb.png)

1. Pour **Modèles**, choisissez **Offre gratuite** ou **Environnement de test (sandbox)**. **Offre gratuite** s’affiche pour les comptes de plan gratuit. **Environnement de test (sandbox)** s’affiche pour les comptes de plan payant.  
![\[Sélectionner un modèle\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. Dans la section **Availability and durability** (Disponibilité et durabilité), conservez les valeurs par défaut.

1. Dans la section **Settings (Paramètres)**, définissez les valeurs suivantes :
   + **DB Instance Identifier** (Identifiant d’instance de base de données) : saisissez **tutorial-db-instance**.
   + **Master username** (Identifiant principal) : saisissez **tutorial\$1user**.
   + **Auto generate a password** (Génération automatique d’un mot de passe) : laissez cette option désactivée.
   + **Master password** (Mot de passe principal) : saisissez un mot de passe.
   + **Confirm password (Confirmer le mot de passe)** – Saisissez à nouveau le mot de passe.  
![\[Sections des paramètres\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. Dans la section **Instance configuration** (Configuration de l’instance), définissez les valeurs suivantes :
   + **Classe à performances extensibles (inclut les classes t)**
   + **db.t3.micro**  
![\[Section Instance configuration (Configuration de l’instance)\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. Dans la section **Storage** (Stockage), conservez les valeurs par défaut.

1. Dans la section **Connectivity** (Connectivité), définissez ces valeurs et conservez les autres valeurs par défaut :
   + Pour **Compute resource** (Ressources de calcul), choisissez **Connect to an EC2 compute resource** (Se connecter à une ressource de calcul EC2).
   + Pour **EC2 instance** (Instance EC2), choisissez l’instance EC2 que vous avez créée précédemment, telle que **tutorial-ec2-instance-web-server**.  
![\[Section Connectivité\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. Dans la section **Database authentication (Authentification de base de données**, assurez-vous que l’option **Password authentication(Authentification par mot de passe)** est sélectionnée.

1. Ouvrez la section **Additional configuration (Configuration supplémentaire)**, puis entrez **sample** pour **Initial database name (Nom de la base de données initiale)**. Conservez les paramètres par défaut pour les autres options.

1. Pour créer votre instance MariaDB, choisissez **Créer une base de données**.

   Votre nouvelle instance de base de données apparaît dans la liste **Bases de données** avec l’état **Création en cours**.

1. Attendez que le **Status (État)** de votre instance de base de données affiche **Available (Disponible)**. Sélectionnez ensuite le nom de l’instance de base de données pour afficher les détails.

1. Dans la section **Connectivity & security (Connectivité et sécurité)**, affichez le **Endpoint (Point de terminaison)** et le **Port** de l’instance de base de données.  
![\[Détails d’instance de base de données\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port.png)

   Notez le point de terminaison et le port de votre instance de base de données. Vous utilisez ces informations pour connecter votre serveur web à votre instance de base de données.

1. Terminer [Installer un serveur web sur votre instance EC2](CHAP_Tutorials.WebServerDB.CreateWebServer.md).

------
#### [ RDS for MySQL ]

**Pour créer une instance de base de données MySQL**

1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l’adresse [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En haut à droite de AWS Management Console, sélectionnez Région AWS. Elle doit être la même que celle où vous avez créé votre instance EC2.

1. Dans la panneau de navigation, choisissez **Bases de données**.

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

1. Sur la page **Créer une base de données**, choisissez **Création standard**.

1. Pour **Options de moteur**, choisissez **MySQL**.  
![\[Sélectionner un type de moteur\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/tutorial-create-mysql.png)

1. Pour **Modèles**, choisissez **Offre gratuite** ou **Environnement de test (sandbox)**. **Offre gratuite** s’affiche pour les comptes de plan gratuit. **Environnement de test (sandbox)** s’affiche pour les comptes de plan payant.  
![\[Sélectionner un modèle\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. Dans la section **Availability and durability** (Disponibilité et durabilité), conservez les valeurs par défaut.

1. Dans la section **Settings (Paramètres)**, définissez les valeurs suivantes :
   + **DB Instance Identifier** (Identifiant d’instance de base de données) : saisissez **tutorial-db-instance**.
   + **Master username** (Identifiant principal) : saisissez **tutorial\$1user**.
   + **Auto generate a password** (Génération automatique d’un mot de passe) : laissez cette option désactivée.
   + **Master password** (Mot de passe principal) : saisissez un mot de passe.
   + **Confirm password (Confirmer le mot de passe)** – Saisissez à nouveau le mot de passe.  
![\[Sections des paramètres\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. Dans la section **Instance configuration** (Configuration de l’instance), définissez les valeurs suivantes :
   + **Classe à performances extensibles (inclut les classes t)**
   + **db.t3.micro**  
![\[Section Instance configuration (Configuration de l’instance)\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. Dans la section **Storage** (Stockage), conservez les valeurs par défaut.

1. Dans la section **Connectivity** (Connectivité), définissez ces valeurs et conservez les autres valeurs par défaut :
   + Pour **Compute resource** (Ressources de calcul), choisissez **Connect to an EC2 compute resource** (Se connecter à une ressource de calcul EC2).
   + Pour **EC2 instance** (Instance EC2), choisissez l’instance EC2 que vous avez créée précédemment, telle que **tutorial-ec2-instance-web-server**.  
![\[Section Connectivité\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. Dans la section **Database authentication (Authentification de base de données**, assurez-vous que l’option **Password authentication(Authentification par mot de passe)** est sélectionnée.

1. Ouvrez la section **Additional configuration (Configuration supplémentaire)**, puis entrez **sample** pour **Initial database name (Nom de la base de données initiale)**. Conservez les paramètres par défaut pour les autres options.

1. Pour créer votre instance de base de données MySQL, choisissez **Create database (Créer une base de données)**.

   Votre nouvelle instance de base de données apparaît dans la liste **Bases de données** avec l’état **Création en cours**.

1. Attendez que le **Status (État)** de votre instance de base de données affiche **Available (Disponible)**. Sélectionnez ensuite le nom de l’instance de base de données pour afficher les détails.

1. Dans la section **Connectivity & security (Connectivité et sécurité)**, affichez le **Endpoint (Point de terminaison)** et le **Port** de l’instance de base de données.  
![\[Détails d’instance de base de données\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port.png)

   Notez le point de terminaison et le port de votre instance de base de données. Vous utilisez ces informations pour connecter votre serveur web à votre instance de base de données.

1. Terminer [Installer un serveur web sur votre instance EC2](CHAP_Tutorials.WebServerDB.CreateWebServer.md).

------
#### [ RDS for PostgreSQL ]

**Pour créer une instance de base de données PostgreSQL**

1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l’adresse [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En haut à droite de AWS Management Console, sélectionnez Région AWS. Elle doit être la même que celle où vous avez créé votre instance EC2.

1. Dans la panneau de navigation, choisissez **Bases de données**.

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

1. Sur la page **Créer une base de données**, choisissez **Création standard**.

1. Pour **Options de moteur**, choisissez **PostgreSQL**.  
![\[Sélectionner un type de moteur\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/tutorial-create-postgres.png)

1. Pour **Modèles**, choisissez **Offre gratuite** ou **Environnement de test (sandbox)**. **Offre gratuite** s’affiche pour les comptes de plan gratuit. **Environnement de test (sandbox)** s’affiche pour les comptes de plan payant.  
![\[Sélectionner un modèle\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. Dans la section **Availability and durability** (Disponibilité et durabilité), conservez les valeurs par défaut.

1. Dans la section **Settings (Paramètres)**, définissez les valeurs suivantes :
   + **DB Instance Identifier** (Identifiant d’instance de base de données) : saisissez **tutorial-db-instance**.
   + **Master username** (Identifiant principal) : saisissez **tutorial\$1user**.
   + **Auto generate a password** (Génération automatique d’un mot de passe) : laissez cette option désactivée.
   + **Master password** (Mot de passe principal) : saisissez un mot de passe.
   + **Confirm password (Confirmer le mot de passe)** – Saisissez à nouveau le mot de passe.  
![\[Sections des paramètres\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. Dans la section **Instance configuration** (Configuration de l’instance), définissez les valeurs suivantes :
   + **Classe à performances extensibles (inclut les classes t)**
   + **db.t3.micro**  
![\[Section Instance configuration (Configuration de l’instance)\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. Dans la section **Storage** (Stockage), conservez les valeurs par défaut.

1. Dans la section **Connectivity** (Connectivité), définissez ces valeurs et conservez les autres valeurs par défaut :
   + Pour **Compute resource** (Ressources de calcul), choisissez **Connect to an EC2 compute resource** (Se connecter à une ressource de calcul EC2).
   + Pour **EC2 instance** (Instance EC2), choisissez l’instance EC2 que vous avez créée précédemment, telle que **tutorial-ec2-instance-web-server**.  
![\[Section Connectivité\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. Dans la section **Database authentication (Authentification de base de données**, assurez-vous que l’option **Password authentication(Authentification par mot de passe)** est sélectionnée.

1. Ouvrez la section **Additional configuration (Configuration supplémentaire)**, puis entrez **sample** pour **Initial database name (Nom de la base de données initiale)**. Conservez les paramètres par défaut pour les autres options.

1. Pour créer votre instance de base de données PostgreSQL, choisissez **Créer une base de données**.

   Votre nouvelle instance de base de données apparaît dans la liste **Bases de données** avec l’état **Création en cours**.

1. Attendez que le **Status (État)** de votre instance de base de données affiche **Available (Disponible)**. Sélectionnez ensuite le nom de l’instance de base de données pour afficher les détails.

1. Dans la section **Connectivity & security (Connectivité et sécurité)**, affichez le **Endpoint (Point de terminaison)** et le **Port** de l’instance de base de données.  
![\[Détails d’instance de base de données\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port_postgres.png)

   Notez le point de terminaison et le port de votre instance de base de données. Vous utilisez ces informations pour connecter votre serveur web à votre instance de base de données.

1. Terminer [Installer un serveur web sur votre instance EC2](CHAP_Tutorials.WebServerDB.CreateWebServer.md).

------

# Installer un serveur web sur votre instance EC2
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer"></a>

Installez un serveur Web sur l’instance EC2 que vous avez créée dans [Lancement d’une instance EC2 pour vous connecter à votre instance de base de données](CHAP_Tutorials.WebServerDB.LaunchEC2.md). Le serveur Web se connecte à l’instance de base de données Amazon RDS que vous avez créée dans [Créer une instance de base de données Amazon RDS](CHAP_Tutorials.WebServerDB.CreateDBInstance.md). 

## Installer un serveur Web Apache avec PHP et MariaDB
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer.Apache"></a>

Connectez-vous à votre instance EC2 et installez le serveur web.

**Pour vous connecter à votre instance EC2 et installer le serveur Web Apache avec PHP**

1. Connectez-vous à l’instance EC2 que vous avez précédemment créée en suivant la procédure spécifiée dans [Connectez-vous à votre instance Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) dans le *Guide de l’utilisateur Amazon EC2*.

   Nous vous recommandons de vous connecter à votre instance EC2 en utilisant SSH. Si l’utilitaire client SSH est installé sur Windows, Linux ou Mac, vous pouvez vous connecter à l’instance à l’aide du format de commande suivant :

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   Supposons, par exemple, que `ec2-database-connect-key-pair.pem` soit stocké dans `/dir1` sur Linux et que le DNS IPv4 public de votre instance EC2 soit `ec2-12-345-678-90.compute-1.amazonaws.com`. Votre commande SSH se présenterait comme suit :

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. Obtenez les dernières corrections de bogues et mises à jour de sécurité en mettant à jour le logiciel sur votre instance EC2. Pour ce faire, exécutez la commande suivante.
**Note**  
L’option `-y` installe les mises à jour sans demander de confirmation. Pour examiner les mises à jour avant de les installer, omettez cette option.

   ```
   sudo dnf update -y
   ```

1. Une fois les mises à jour terminées, installez le serveur web Apache, PHP et le logiciel MariaDB ou PostgreSQL à l’aide des commandes suivantes. Cette commande installe plusieurs packages logiciels et les dépendances connexes au même moment.

------
#### [ MariaDB & MySQL ]

   ```
   sudo dnf install -y httpd php php-mysqli mariadb105
   ```

------
#### [ PostgreSQL ]

   ```
   sudo dnf install -y httpd php php-pgsql postgresql15
   ```

------

   Si vous recevez une erreur, votre instance n’a probablement pas été lancée avec une AMI Amazon Linux 2023. Vous utilisez peut-être une AMI Amazon Linux 2 à la place. Vous pouvez afficher votre version d’Amazon Linux avec la commande suivante

   ```
   cat /etc/system-release
   ```

   Pour plus d’informations, consultez [Mise à jour du logiciel de l’instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-updates.html).

1. Démarrez le serveur web avec la commande illustrée ci-dessous.

   ```
   sudo systemctl start httpd
   ```

   Vous pouvez vérifier que votre serveur web est correctement installé et démarré. Pour ce faire, saisissez le nom DNS (Domain Name System) public de votre instance EC2 dans la barre d’adresse d’un navigateur web, par exemple : `http://ec2-42-8-168-21.us-west-1.compute.amazonaws.com`. Si votre serveur Web est en cours d’exécution, vous voyez la page de test Apache. 

   Si la page de test Apache ne s’affiche pas, vérifiez vos règles entrantes pour le groupe de sécurité du VPC que vous avez créé dans [Tutoriel : Création d'un VPC à utiliser avec un ) IPv4](CHAP_Tutorials.WebServerDB.CreateVPC.md). Assurez-vous que vos règles entrantes incluent un accès HTTP (port 80) à l’adresse IP pour vous connecter au serveur Web.
**Note**  
La page de test Apache apparaît uniquement en l’absence de contenu dans le répertoire racine des documents, `/var/www/html`. Après l’ajout de contenu dans le répertoire racine des documents, votre contenu apparaît à l’adresse DNS publique de votre instance EC2. Avant cela, il apparaît sur la page de test d’Apache.

1. Configurez le serveur web pour qu’il démarre à chaque redémarrage du système à l’aide de la commande `systemctl`.

   ```
   sudo systemctl enable httpd
   ```

Pour autoriser `ec2-user` à gérer les fichiers dans le répertoire racine par défaut pour votre serveur Web Apache, modifiez l’appartenance et les autorisations du répertoire `/var/www`. Il existe plusieurs façons d’accomplir cette tâche. Dans ce didacticiel, vous ajoutez l’utilisateur `ec2-user` au groupe `apache` pour donner au groupe `apache` la propriété du répertoire `/var/www` et attribuer les autorisations d’écriture au groupe.

**Pour définir les autorisations sur les fichiers pour le serveur Web Apache**

1. Ajoutez l’utilisateur `ec2-user` au groupe `apache`.

   ```
   sudo usermod -a -G apache ec2-user
   ```

1. Pour actualiser vos autorisations et inclure le nouveau groupe `apache`, déconnectez-vous.

   ```
   exit
   ```

1. Reconnectez-vous et vérifiez que le groupe `apache` existe à l’aide de la commande `groups`.

   ```
   groups
   ```

   Votre sortie se présente comme suit :

   ```
   ec2-user adm wheel apache systemd-journal
   ```

1. Remplacez le groupe propriétaire du répertoire `/var/www` et de son contenu par le groupe `apache`.

   ```
   sudo chown -R ec2-user:apache /var/www
   ```

1. Modifiez les autorisations des répertoires `/var/www` et de ses sous-répertoires pour ajouter des autorisations d’écriture de groupe et définir l’ID de groupe sur les sous-répertoires créés à l’avenir.

   ```
   sudo chmod 2775 /var/www
   find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. Modifiez de façon récursive les autorisations pour les fichiers figurant dans le répertoire `/var/www` et ses sous-répertoires pour ajouter des autorisations d’écriture de groupe.

   ```
   find /var/www -type f -exec sudo chmod 0664 {} \;
   ```

Maintenant, `ec2-user` (et tous les futurs membres du groupe `apache`) peut ajouter, supprimer et modifier les fichiers à la racine du document Apache. Cela vous permet d’ajouter du contenu, tel qu’un site Web statique ou une application PHP. 

**Note**  
Un serveur web exécutant le protocole HTTP ne fournit aucune sécurité de transport pour les données qu’il envoie ou reçoit. Lorsque vous vous connectez à un serveur HTTP via un navigateur Web, de nombreuses informations peuvent être vues par des personnes malveillantes sur le chemin d’accès réseau. Ces informations incluent les informations URLs que vous visitez, le contenu des pages Web que vous recevez et le contenu (y compris les mots de passe) de tous les formulaires HTML.   
Les bonnes pratiques en matière de sécurisation de votre serveur Web consistent à installer la prise en charge HTTPS (HTTP Secure). Ce protocole protège vos données grâce au SSL/TLS chiffrement. Pour plus d'informations, consultez [Tutoriel : Configuration SSL/TLS avec l'AMI Amazon Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-ami.html) dans le guide de l'*utilisateur Amazon EC2*.

## Connecter le serveur web Apache à l’instance
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer.PHPContent"></a>

Ensuite, vous allez ajouter du contenu à votre serveur web Apache qui se connecte à votre instance de base de données Amazon RDS.

**Pour ajouter du contenu au serveur web Apache qui se connecte à votre instance de base de données**

1. Alors que vous êtes encore connecté à votre instance EC2, remplacez le répertoire par `/var/www` et créez un sous-répertoire nommé `inc`.

   ```
   cd /var/www
   mkdir inc
   cd inc
   ```

1. Créez un fichier dans le répertoire `inc` nommé `dbinfo.inc`, puis modifiez le fichier en appelant nano (ou l’éditeur de votre choix).

   ```
   >dbinfo.inc
   nano dbinfo.inc
   ```

1. Ajoutez le contenu suivant au fichier `dbinfo.inc`. *db\$1instance\$1endpoint*Voici le point de terminaison du de données de votre instance de base de données, sans le port, pour votre de base de données.
**Note**  
Nous vous recommandons de placer les informations de nom d’utilisateur et de mot de passe dans un dossier ne faisant pas partie de la racine du document de votre serveur web. Vous réduisez ainsi la possibilité d’exposer vos informations de sécurité.  
Veillez à remplacer `master password` par un mot de passe approprié dans votre application.

   ```
   <?php
   
   define('DB_SERVER', 'db_instance_endpoint');
   define('DB_USERNAME', 'tutorial_user');
   define('DB_PASSWORD', 'master password');
   define('DB_DATABASE', 'sample');
   ?>
   ```

1. Enregistrez et fermez le fichier `dbinfo.inc`. Si vous utilisez nano, enregistrez et fermez le fichier à l’aide des touches Ctrl\$1S et Ctrl\$1X.

1. Remplacez le répertoire par `/var/www/html`.

   ```
   cd /var/www/html
   ```

1. Créez un fichier dans le répertoire `html` nommé `SamplePage.php`, puis modifiez le fichier en appelant nano (ou l’éditeur de votre choix).

   ```
   >SamplePage.php
   nano SamplePage.php
   ```

1. Ajoutez le contenu suivant au fichier `SamplePage.php` :

------
#### [ MariaDB & MySQL ]

   ```
   <?php include "../inc/dbinfo.inc"; ?>
   <html>
   <body>
   <h1>Sample page</h1>
   <?php
   
     /* Connect to MySQL and select the database. */
     $connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);
   
     if (mysqli_connect_errno()) echo "Failed to connect to MySQL: " . mysqli_connect_error();
   
     $database = mysqli_select_db($connection, DB_DATABASE);
   
     /* Ensure that the EMPLOYEES table exists. */
     VerifyEmployeesTable($connection, DB_DATABASE);
   
     /* If input fields are populated, add a row to the EMPLOYEES table. */
     $employee_name = htmlentities($_POST['NAME']);
     $employee_address = htmlentities($_POST['ADDRESS']);
   
     if (strlen($employee_name) || strlen($employee_address)) {
       AddEmployee($connection, $employee_name, $employee_address);
     }
   ?>
   
   <!-- Input form -->
   <form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST">
     <table border="0">
       <tr>
         <td>NAME</td>
         <td>ADDRESS</td>
       </tr>
       <tr>
         <td>
           <input type="text" name="NAME" maxlength="45" size="30" />
         </td>
         <td>
           <input type="text" name="ADDRESS" maxlength="90" size="60" />
         </td>
         <td>
           <input type="submit" value="Add Data" />
         </td>
       </tr>
     </table>
   </form>
   
   <!-- Display table data. -->
   <table border="1" cellpadding="2" cellspacing="2">
     <tr>
       <td>ID</td>
       <td>NAME</td>
       <td>ADDRESS</td>
     </tr>
   
   <?php
   
   $result = mysqli_query($connection, "SELECT * FROM EMPLOYEES");
   
   while($query_data = mysqli_fetch_row($result)) {
     echo "<tr>";
     echo "<td>",$query_data[0], "</td>",
          "<td>",$query_data[1], "</td>",
          "<td>",$query_data[2], "</td>";
     echo "</tr>";
   }
   ?>
   
   </table>
   
   <!-- Clean up. -->
   <?php
   
     mysqli_free_result($result);
     mysqli_close($connection);
   
   ?>
   
   </body>
   </html>
   
   
   <?php
   
   /* Add an employee to the table. */
   function AddEmployee($connection, $name, $address) {
      $n = mysqli_real_escape_string($connection, $name);
      $a = mysqli_real_escape_string($connection, $address);
   
      $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');";
   
      if(!mysqli_query($connection, $query)) echo("<p>Error adding employee data.</p>");
   }
   
   /* Check whether the table exists and, if not, create it. */
   function VerifyEmployeesTable($connection, $dbName) {
     if(!TableExists("EMPLOYEES", $connection, $dbName))
     {
        $query = "CREATE TABLE EMPLOYEES (
            ID int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            NAME VARCHAR(45),
            ADDRESS VARCHAR(90)
          )";
   
        if(!mysqli_query($connection, $query)) echo("<p>Error creating table.</p>");
     }
   }
   
   /* Check for the existence of a table. */
   function TableExists($tableName, $connection, $dbName) {
     $t = mysqli_real_escape_string($connection, $tableName);
     $d = mysqli_real_escape_string($connection, $dbName);
   
     $checktable = mysqli_query($connection,
         "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t' AND TABLE_SCHEMA = '$d'");
   
     if(mysqli_num_rows($checktable) > 0) return true;
   
     return false;
   }
   ?>
   ```

------
#### [ PostgreSQL ]

   ```
   <?php include "../inc/dbinfo.inc"; ?>
   
   <html>
   <body>
   <h1>Sample page</h1>
   <?php
   
   /* Connect to PostgreSQL and select the database. */
   $constring = "host=" . DB_SERVER . " dbname=" . DB_DATABASE . " user=" . DB_USERNAME . " password=" . DB_PASSWORD ;
   $connection = pg_connect($constring);
   
   if (!$connection){
    echo "Failed to connect to PostgreSQL";
    exit;
   }
   
   /* Ensure that the EMPLOYEES table exists. */
   VerifyEmployeesTable($connection, DB_DATABASE);
   
   /* If input fields are populated, add a row to the EMPLOYEES table. */
   $employee_name = htmlentities($_POST['NAME']);
   $employee_address = htmlentities($_POST['ADDRESS']);
   
   if (strlen($employee_name) || strlen($employee_address)) {
     AddEmployee($connection, $employee_name, $employee_address);
   }
   
   ?>
   
   <!-- Input form -->
   <form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST">
     <table border="0">
       <tr>
         <td>NAME</td>
         <td>ADDRESS</td>
       </tr>
       <tr>
         <td>
       <input type="text" name="NAME" maxlength="45" size="30" />
         </td>
         <td>
       <input type="text" name="ADDRESS" maxlength="90" size="60" />
         </td>
         <td>
       <input type="submit" value="Add Data" />
         </td>
       </tr>
     </table>
   </form>
   <!-- Display table data. -->
   <table border="1" cellpadding="2" cellspacing="2">
     <tr>
       <td>ID</td>
       <td>NAME</td>
       <td>ADDRESS</td>
     </tr>
   
   <?php
   
   $result = pg_query($connection, "SELECT * FROM EMPLOYEES");
   
   while($query_data = pg_fetch_row($result)) {
     echo "<tr>";
     echo "<td>",$query_data[0], "</td>",
          "<td>",$query_data[1], "</td>",
          "<td>",$query_data[2], "</td>";
     echo "</tr>";
   }
   ?>
   </table>
   
   <!-- Clean up. -->
   <?php
   
     pg_free_result($result);
     pg_close($connection);
   ?>
   </body>
   </html>
   
   
   <?php
   
   /* Add an employee to the table. */
   function AddEmployee($connection, $name, $address) {
      $n = pg_escape_string($name);
      $a = pg_escape_string($address);
      echo "Forming Query";
      $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');";
   
      if(!pg_query($connection, $query)) echo("<p>Error adding employee data.</p>"); 
   }
   
   /* Check whether the table exists and, if not, create it. */
   function VerifyEmployeesTable($connection, $dbName) {
     if(!TableExists("EMPLOYEES", $connection, $dbName))
     {
        $query = "CREATE TABLE EMPLOYEES (
            ID serial PRIMARY KEY,
            NAME VARCHAR(45),
            ADDRESS VARCHAR(90)
          )";
   
        if(!pg_query($connection, $query)) echo("<p>Error creating table.</p>"); 
     }
   }
   /* Check for the existence of a table. */
   function TableExists($tableName, $connection, $dbName) {
     $t = strtolower(pg_escape_string($tableName)); //table name is case sensitive
     $d = pg_escape_string($dbName); //schema is 'public' instead of 'sample' db name so not using that
   
     $query = "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t';";
     $checktable = pg_query($connection, $query);
   
     if (pg_num_rows($checktable) >0) return true;
     return false;
   
   }
   ?>
   ```

------

1. Enregistrez et fermez le fichier `SamplePage.php`.

1. Vérifiez que votre serveur web se connecte avec succès à votre instance en ouvrant un navigateur web et en accédant à une page `http://EC2 instance endpoint/SamplePage.php`, par exemple : `http://ec2-12-345-67-890.us-west-2.compute.amazonaws.com/SamplePage.php`.

Vous pouvez utiliser `SamplePage.php` pour ajouter des données à votreinstance. Les données que vous ajoutez sont ensuite affichées sur la page. Pour vérifier que les données ont été insérées dans la table, installez le client MySQL sur l’instance Amazon EC2. Connectez-vous ensuite à l’instance de bases de données et interrogez la table. 

Pour plus d’informations sur l’installation du client MySQL et la connexion à une instance de base de données, consultez [Connexion à votre instance de base de données MySQL](USER_ConnectToInstance.md).

Pour vérifier que la sécurité de votre instance est assurée, contrôlez que les sources extérieures du VPC ne peuvent pas se connecter à votre instance. 

Après avoir testé votre serveur Web et votre base de données, vous devez supprimer votre instance et votre instance Amazon EC2.
+ Pour supprimer une instance de base de données, suivez les instructions de la section [Suppression d'une instance DB](USER_DeleteInstance.md). Vous n’avez pas besoin de créer un instantané final.
+ Pour résilier une instance Amazon EC2, suivez les instructions de la page [Résilier votre instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html) dans le *Guide de l’utilisateur Amazon EC2*.