

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.

# AL2 sur Amazon EC2
<a name="ec2"></a>

**Note**  
 AL2 n'est plus la version actuelle d'Amazon Linux. AL2023 est le successeur de AL2. Pour plus d'informations, consultez la section [Comparaison AL2 AL2023 et](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html) la liste des [modifications apportées au Package AL2023 dans](https://docs.aws.amazon.com/linux/al2023/release-notes/compare-packages.html) le [Guide de AL2023 l'utilisateur](https://docs.aws.amazon.com/linux/al2023/ug/). 

 

**Topics**
+ [Lancer une instance Amazon EC2 avec AMI AL2](#launch-ec2-instance)
+ [Trouvez l' AL2 AMI la plus récente à l'aide de Systems Manager](#find-latest-al2-using-systems-manager)
+ [Connectez-vous à une instance Amazon EC2](#connect-to-amazon-linux-limits-ec2)
+ [AL2 Mode de démarrage AMI](#default-boot-mode-al2)
+ [Référentiel de packages](#package-repository)
+ [Utilisation de cloud-init sur AL2](amazon-linux-cloud-init.md)
+ [Configuration AL2 des instances](configure-ec2-instance.md)
+ [Noyaux fournis par l’utilisateur](UserProvidedKernels.md)
+ [AL2 Notifications de publication de l'AMI](linux-ami-notifications.md)
+ [Configuration de la connexion au bureau AL2 MATE](amazon-linux-ami-mate.md)
+ [AL2 Tutoriels](al2-tutorials.md)

## Lancer une instance Amazon EC2 avec AMI AL2
<a name="launch-ec2-instance"></a>

Vous pouvez lancer une instance Amazon EC2 avec l'AMI AL2 . Pour plus d'informations, consultez [Étape 1 : Lancer une instance](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance).

## Trouvez l' AL2 AMI la plus récente à l'aide de Systems Manager
<a name="find-latest-al2-using-systems-manager"></a>

Amazon EC2 fournit des paramètres AWS Systems Manager publics AMIs gérés par le public AWS que vous pouvez utiliser lors du lancement d'instances. Par exemple, le paramètre fourni par EC2 `/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-default-hvm-x86_64-gp2` est disponible dans toutes les régions et pointe toujours vers la dernière version de l' AL2 AMI dans une région donnée.

Pour trouver l' AL2023 AMI la plus récente qui l'utilise AWS Systems Manager, voir [Commencer avec AL2023](https://docs.aws.amazon.com/linux/al2023/ug/get-started.html).

Les paramètres publics de l’AMI Amazon EC2 sont disponibles à partir du chemin suivant :

`/aws/service/ami-amazon-linux-latest`

Vous pouvez consulter la liste de tous les Amazon Linux AMIs de la AWS région actuelle en exécutant la AWS CLI commande suivante.

```
aws ssm get-parameters-by-path --path /aws/service/ami-amazon-linux-latest --query "Parameters[].Name"
```

**Pour lancer une instance à l’aide d’un paramètre public**  
L'exemple suivant utilise le paramètre public fourni par EC2 pour lancer une `m5.xlarge` instance à l'aide de la dernière AMI AL2 .

Pour spécifier le paramètre dans la commande, utilisez la syntaxe suivante : `resolve:ssm:public-parameter`, où `resolve:ssm` est le préfixe standard et `public-parameter` le chemin et le nom du paramètre public.

Dans l’exemple, les paramètres `--count` et `--security-group` ne sont pas inclus. Pour `--count`, la valeur par défaut est 1. Si vous avez un VPC par défaut et un groupe de sécurité par défaut, ils sont utilisés.

```
aws ec2 run-instances 
    --image-id resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-default-hvm-x86_64-gp2 
    --instance-type m5.xlarge 
    --key-name MyKeyPair
```

Pour plus d'informations, consultez la section [Utilisation de paramètres publics](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters.html) dans le *Guide de AWS Systems Manager l'utilisateur*.

**Comprendre les noms des AMI Amazon Linux 2**  
Les noms des AMI Amazon Linux 2 utilisent le schéma de dénomination suivant :

`amzn2-ami-[minimal-][kernel-{5.10,default,4.14}]-hvm-{x86_64,aarch64}-{ebs,gp2}`
+ **Minimal** AMIs est fourni avec un ensemble réduit de packages préinstallés pour réduire la taille de l'image.
+ **La version du noyau** détermine la version du noyau qui est préinstallée sur l'AMI correspondante :
  + `kernel-5.10`sélectionne la version 5.10 du noyau Linux. *Il s'agit de la version de noyau recommandée pour AL2.*
  + `kernel-default`sélectionne le noyau par défaut recommandé pour AL2. Il s'agit d'un alias pour kernel-5.10.
  + `kernel-4.14`sélectionne la version 4.14 du noyau Linux. *Ceci n'est fourni que pour des raisons de compatibilité avec les anciennes versions de l'AMI. N'utilisez pas cette version pour le lancement de nouvelles instances. Attendez-vous à ce que cette AMI ne soit plus prise en charge.*
  + Il existe un ensemble spécial de noms d'AMI sans référence à un noyau spécifique. Il s' AMIs agit d'un alias pour kernel-4.14. *Ils ne AMIs sont fournis que pour des raisons de compatibilité avec les anciennes versions de l'AMI. N'utilisez pas ce nom d'AMI pour le lancement de nouvelles instances. Attendez-vous à ce que le noyau AMIs les mette à jour.*
+ **x86\$164/aarch64** détermine la plate-forme de processeur sur laquelle exécuter l'AMI. Sélectionnez x86\$164 pour les instances EC2 basées sur Intel et AMD. Sélectionnez aarch64 pour les instances EC2 Graviton.
+ **ebs/gp2** détermine le type de volume EBS utilisé pour servir l'AMI correspondante. Voir [Types de volumes EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) pour référence. *Sélectionnez toujours gp2.*

## Connectez-vous à une instance Amazon EC2
<a name="connect-to-amazon-linux-limits-ec2"></a>

Il existe plusieurs manières de se connecter à votre instance Amazon Linux, notamment SSH et EC2 Instance Connect. AWS Systems Manager Session Manager Pour plus d'informations, consultez [Connect to your Linux instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) dans le guide de l'*utilisateur Amazon EC2*.

**Utilisateurs de SSH et **sudo****  
Amazon Linux n'autorise pas le shell `root` sécurisé à distance (SSH) par défaut. L'authentification par mot de passe est également désactivée pour empêcher les attaques par force brute. Pour activer les connexions SSH à une instance Amazon Linux, vous devez fournir votre paire de clés à l’instance lors du lancement. Vous devez aussi définir le groupe de sécurité utilisé pour lancer votre instance afin d’autoriser l’accès SSH. Par défaut, le seul compte qui peut se connecter à distance via SSH est`ec2-user`. Ce compte possède également **sudo** des privilèges. Si vous activez la `root` connexion à distance, sachez qu'elle est moins sûre que de vous fier à des paires de clés et à un utilisateur secondaire.

## AL2 Mode de démarrage AMI
<a name="default-boot-mode-al2"></a>

AL2 AMIs aucun paramètre de mode de démarrage n'est défini. Les instances lancées à partir de AL2 AMIs suivent la valeur du mode de démarrage par défaut du type d'instance. Pour plus d'informations, consultez la section [Modes de démarrage](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-boot.html) dans le *guide de l'utilisateur Amazon EC2*.

## Référentiel de packages
<a name="package-repository"></a>

Ces informations s'appliquent à AL2. Pour plus d'informations AL2023, consultez la section [Gérer les packages et les mises à jour du système d'exploitation AL2023 dans](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) le *guide de l'utilisateur Amazon Linux 2023*. 

AL2 et AL1 sont conçus pour être utilisés avec des référentiels de packages en ligne hébergés dans chaque région Amazon EC2. AWS Les référentiels sont disponibles dans toutes les régions et sont accessibles à l’aide des outils de mise à jour **yum**. L’hébergement de référentiels dans chaque région nous permet de déployer rapidement les mises à jour et sans aucuns frais de transfert de données.

**Important**  
La dernière version de AL1 EOL a pris fin le 31 décembre 2023 et ne recevra aucune mise à jour de sécurité ni aucune correction de bogue à compter du 1er janvier 2024. Pour plus d'informations, consultez [AMI Amazon Linux end-of-life](https://aws.amazon.com//blogs/aws/update-on-amazon-linux-ami-end-of-life/).

Si vous n'avez pas besoin de conserver les données ou de personnaliser vos instances, vous pouvez lancer de nouvelles instances à l'aide de l' AL2 AMI actuelle. Si vous devez conserver les données ou les personnalisations de vos instances, vous pouvez gérer ces instances via les référentiels de packages Amazon Linux. Ces référentiels contiennent tous les packages mis à jour. Vous pouvez choisir d’appliquer ces mises à jour à vos instances en cours d’exécution. Les versions antérieures de l'AMI et les packages de mise à jour restent disponibles, même lorsque de nouvelles versions sont publiées.

**Note**  
Pour mettre à jour et installer des packages sans accès à Internet sur une instance Amazon EC2, consultez [Comment puis-je mettre à jour yum ou installer des packages sans accès à Internet sur mes instances Amazon EC2](https://repost.aws/knowledge-center/ec2-al1-al2-update-yum-without-internet) en cours d'exécution, ou ? AL1 AL2 AL2023

Pour installer des packages, utilisez la commande suivante :

```
[ec2-user ~]$ sudo yum install package
```

Si vous découvrez qu’Amazon Linux ne contient pas une application dont vous avez besoin, vous pouvez installer l’application directement sur votre instance Amazon Linux. Amazon Linux utilise RPMs et yum pour la gestion des packages, et c'est probablement le moyen le plus direct d'installer de nouvelles applications. Vous devriez vérifier si une application est déjà disponible dans notre référentiel central d’Amazon Linux, car beaucoup d’applications sont disponibles ici. À partir de là, vous pouvez ajouter ces applications à votre instance Amazon Linux.

Pour charger vos applications sur une instance Amazon Linux en cours d’exécution, utilisez **scp** ou **sftp**, puis configurez l’application en vous connectant à votre instance. Vos applications peuvent aussi être chargées pendant le lancement de l’instance en utilisant l’action **PACKAGE\$1SETUP** à partir du package cloud-init intégré. Pour plus d’informations, consultez [Utilisation de cloud-init sur AL2](amazon-linux-cloud-init.md). 

### Mises à jour de sécurité
<a name="security-updates"></a>

Les mises à jour de sécurité sont fournies à l'aide des référentiels de packages. Les mises à jour de sécurité et les alertes de sécurité AMI mises à jour sont publiées dans le [centre de sécurité Amazon Linux](https://alas.aws.amazon.com). Pour plus d’informations sur les politiques de sécurité AWS ou pour signaler un problème de sécurité, consultez [Sécurité du cloud AWS](https://aws.amazon.com/security/).

AL1 et AL2 sont configurés pour télécharger et installer des mises à jour de sécurité critiques ou importantes au moment du lancement. Les mises à jour du noyau ne sont pas incluses dans cette configuration.

Dans AL2023, cette configuration a changé par rapport à AL1 et AL2. Pour plus d'informations sur les mises à jour de sécurité pour AL2023, consultez [la section Mises à jour et fonctionnalités](https://docs.aws.amazon.com/linux/al2023/ug/security-features.html) de sécurité dans le *guide de l'utilisateur Amazon Linux 2023*.

Nous vous recommandons d’effectuer les mises à jour nécessaires pour votre cas d’utilisation après le lancement. Par exemple, vous souhaiterez peut-être appliquer toutes les mises à jour (pas uniquement les mises à jour de sécurité) au lancement, ou évaluer chaque mise à jour et n'appliquer que celles applicables à votre système. Ceci est contrôlé à l’aide du paramètre cloud-init suivant : `repo_upgrade`. L’extrait de configuration cloud-init suivant montre comment modifier les paramètres dans le texte de données utilisateur que vous transmettez à l’initialisation de votre instance :

```
#cloud-config
repo_upgrade: security
```

 Les valeurs possibles pour `repo_upgrade` sont les suivantes : 

`critical`  
Appliquez les mises à jour de sécurité critiques en attente.

`important`  
Appliquez les mises à jour de sécurité importantes et critiques.

`medium`  
Appliquez les mises à jour de sécurité critiques, importantes et moyennes.

`low`  
Appliquez toutes les mises à jour de sécurité en attente, y compris les mises à jour de sécurité de faible gravité.

`security`  
Appliquez les mises à jour critiques ou importantes indiquées par Amazon comme étant des mises à jour de sécurité.

`bugfix`  
Appliquez les mises à jour indiquées par Amazon comme étant des correctifs de bogues. Les correctifs de bogues constituent un ensemble plus important de mises à jour ce qui comprend des mises à jour de sécurité et des correctifs pour plusieurs autres bogues mineurs.

`all`  
Appliquez toutes les mises à jour disponibles appropriées, peu importe leur classification.

`none`  
N’appliquez aucune mise à jour à l’instance au démarrage.

**Remarque**  
Amazon Linux ne marque aucune mise à jour comme`bugfix`. Pour appliquer des mises à jour non liées à la sécurité depuis Amazon Linux, utilisez`repo_upgrade: all`.

Le paramètre par défaut pour `repo_upgrade` est la sécurité. En effet, si vous ne spécifiez pas une valeur différente dans vos données utilisateur, Amazon Linux effectue par défaut les mises à niveau de sécurité au lancement pour tous les packages installés à ce moment. Amazon Linux vous informe également de toute mise à jour des packages installés en listant le nombre de mises à jour disponibles lors de la connexion à l’aide de `/etc/motd` dans le fichier. Pour installer ces mises à jour, vous devez exécuter **sudo yum upgrade** sur l’instance. 

### Configuration du référentiel
<a name="repository-config"></a>

Pour AL1 et AL2, AMIs sont un instantané des packages disponibles au moment de la création de l'AMI, à l'exception des mises à jour de sécurité. Tous les packages ne figurant pas sur l'AMI d'origine, mais installés au moment de l'exécution, seront les dernières versions disponibles. Pour obtenir les derniers packages disponibles pour AL2, exécutez**yum update -y**.

**Conseil pour la résolution de problèmes**  
Si vous obtenez une `cannot allocate memory` erreur lors de l'exécution **yum update** sur les types d'instances nano, par exemple`t3.nano`, vous devrez peut-être allouer de l'espace d'échange pour activer la mise à jour.

Car AL2023, la configuration du référentiel a changé par rapport à AL1 et AL2. Pour plus d'informations sur le AL2023 référentiel, consultez la section [Gestion des packages et des mises à jour du système d'exploitation](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html).

Les versions antérieures à AL2023 ont été configurées pour fournir un flux continu de mises à jour permettant de passer d'une version mineure d'Amazon Linux à la version suivante, également appelées *versions continues*. Il est recommandé de mettre à jour votre AMI avec la dernière AMI disponible plutôt que de lancer les anciennes AMIs et d'appliquer des mises à jour.

Les mises à niveau sur place ne sont pas prises en charge entre les principales versions d'Amazon Linux, telles que celles de AL1 vers AL2 ou de AL2 vers AL2023. Pour de plus amples informations, veuillez consulter [Disponibilité Amazon Linux](what-is-amazon-linux.md#amazon-linux-availability).

# Utilisation de cloud-init sur AL2
<a name="amazon-linux-cloud-init"></a>

Le package cloud-init est une application open source réalisée par Canonical, qui est utilisée pour amorcer les images Linux dans un environnement de cloud computing, comme Amazon EC2. Amazon Linux contient une version personnalisée de cloud-init. Cela vous permet de spécifier les actions qui doivent être exécutées sur votre instance au moment du démarrage. Vous pouvez transmettre les actions souhaitées à cloud-init via les champs de données utilisateur lors du lancement d’une instance. Cela signifie que vous pouvez utiliser Common AMIs pour de nombreux cas d'utilisation et les configurer dynamiquement au démarrage. Amazon Linux utilise aussi cloud-init pour effectuer une configuration initiale du compte utilisateur ec2-user.

 Pour plus d’informations, consultez la [documentation cloud-init](http://cloudinit.readthedocs.org/en/latest/). 

Amazon Linux utilise les actions cloud-init trouvées dans `/etc/cloud/cloud.cfg.d` et `/etc/cloud/cloud.cfg`. Vous pouvez créer vos propres fichiers d’actions cloud-init dans `/etc/cloud/cloud.cfg.d`. Tous les fichiers dans ce répertoire sont lus par cloud-init. Ils sont lus en ordre lexical, et les fichiers plus récents remplacent les valeurs des fichiers plus anciens.

Le package cloud-init effectue des tâches de configuration communes (et d’autres tâches) pour les instances au démarrage :
+ Définir les paramètres régionaux par défaut.
+ Définir le nom d’hôte.
+ Analyser et gérer les données utilisateur.
+ Générer des clés SSH privées d’hôte.
+ Ajouter des clés SSH publiques d’utilisateur à `.ssh/authorized_keys` pour une connexion et une administration faciles.
+ Préparer les référentiels pour la gestion des packages.
+ Gérer les actions de package définies dans les données utilisateur.
+ Exécutez les scripts utilisateur trouvés dans les données utilisateur.
+ Monter les volumes de stockage d’instance, le cas échéant.
  + Par défaut, le volume de stockage d’instance `ephemeral0` est monté sur `/media/ephemeral0` s’il est présent et contient un système de fichiers valide ; sinon, il n’est pas monté.
  + Par défaut, les volumes d’échange associés à l’instance sont montés (uniquement pour les types d’instance `m1.small` et `c1.medium`).
  + Vous pouvez remplacer le montage de volume de stockage d’instance par défaut avec la directive cloud-init suivante :

    ```
    #cloud-config
    mounts:
    - [ ephemeral0 ]
    ```

    Pour plus de contrôle sur les montages, consultez [Mounts](http://cloudinit.readthedocs.io/en/latest/topics/modules.html#mounts) dans la documentation cloud-init.
  + Les volumes de stockage d’instance qui prennent en charge la commande TRIM ne sont pas formatés au lancement de l’instance. Vous devez donc les partitionner et les formater pour pouvoir les monter et les utiliser. Pour plus d'informations, consultez la section [TRIMSupport du volume de stockage d'instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html#InstanceStoreTrimSupport). Vous pouvez utiliser le module `disk_setup` pour partitionner et formater vos volumes de stockage d’instance au démarrage. Pour plus d’informations, consultez [Disk Setup](http://cloudinit.readthedocs.io/en/latest/topics/modules.html#disk-setup) dans la documentation cloud-init.

## Formats de données utilisateur pris en charge
<a name="supported-user-data-formats"></a>

Le package cloud-init prend en charge le traitement des données utilisateur sous différents formats :
+ Gzip
  + Si les données utilisateur sont compressées au format gzip, cloud-init les décompresse et les gère de manière appropriée.
+ Fichier MIME en plusieurs parties
  + En utilisant un fichier MIME en plusieurs parties, vous pouvez spécifier plus d’un type de données. Par exemple, vous pouvez spécifier à la fois un script de données utilisateur et un type de configuration cloud. Chaque partie de ce fichier peut être traitée par cloud-init s’il s’agit d’un des formats pris en charge.
+ Décodage Base64
  +  Si les données utilisateur sont codées en base64, cloud-init détermine s'il peut comprendre les données décodées comme l'un des types pris en charge. S’il comprend les données décodées, il décode les données et les gère de façon appropriée. Si non, il renvoie les données base64 intactes.
+ Script de données utilisateur
  + Commence par `#!` ou `Content-Type: text/x-shellscript`.
  + Le script est exécuté par `/etc/init.d/cloud-init-user-scripts` pendant le premier cycle de démarrage. Cela se produit tard dans le processus de démarrage (après l’exécution des actions de configuration initiales).
+ Fichier d’inclusion
  + Commence par `#include` ou `Content-Type: text/x-include-url`.
  + Ce contenu est un fichier d’inclusion. Le fichier contient une liste de URLs, une par ligne. Chacun d'entre eux URLs est lu et leur contenu est soumis à ce même ensemble de règles. Le contenu lu à partir de l'URL peut être compressé au format gzip ou MIME-multi-part en texte brut.
+ Données de configuration du cloud
  + Commence par `#cloud-config` ou `Content-Type: text/cloud-config`.
  + Ce contenu est constitué de données de configuration du cloud.
+ Tâche initiale (non prise en charge sur AL2)
  + Commence par `#upstart-job` ou `Content-Type: text/upstart-job`.
  + Ce contenu est stocké dans un fichier dans`/etc/init`, et upstart consomme le contenu comme c'est le cas pour les autres tâches de démarrage.
+ Crochet Cloud
  + Commence par `#cloud-boothook` ou `Content-Type: text/cloud-boothook`.
  + Ce contenu correspond aux données boothook. Il est stocké dans un fichier sous `/var/lib/cloud`, puis exécuté immédiatement.
  +  Il s’agit du *hook* le plus récent disponible. Il n’existe aucun mécanisme proposé pour l’exécuter seulement une fois. Le boothook doit s’en occuper lui-même. Il est fourni avec l’ID d’instance dans la variable d’environnement `INSTANCE_ID`. Utilisez cette variable pour fournir un once-per-instance ensemble de données de démarrage.

# Configuration AL2 des instances
<a name="configure-ec2-instance"></a>

Une fois que vous avez lancé et connecté votre AL2 instance avec succès, vous pouvez y apporter des modifications. Il existe de nombreuses façons différentes de configurer une instance afin de répondre aux besoins d’une application spécifique. Les tâches suivantes comptent parmi celles couramment utilisées pour vous permettre de débuter.

**Topics**
+ [Scénarios de configuration courants](#instance-configuration-scenarios)
+ [Gérez les logiciels sur votre AL2 instance](managing-software.md)
+ [Contrôle de l'état du processeur pour votre instance Amazon EC2 AL2](processor_state_control.md)
+ [Planificateur d'E/S pour AL2](io-scheduler.md)
+ [Modifier le nom d'hôte de votre instance AL2](set-hostname.md)
+ [Configurer le DNS dynamique sur votre AL2 instance](dynamic-dns.md)
+ [Configurez votre interface réseau à l'aide d'ec2-net-utils pour AL2](ec2-net-utils.md)

## Scénarios de configuration courants
<a name="instance-configuration-scenarios"></a>

La distribution de base d’Amazon Linux contient les packages logiciels et les utilitaires nécessaires aux opérations de base du serveur. Néanmoins, beaucoup plus de packages logiciels sont disponibles dans différents référentiels de logiciels et encore plus de packages sont disponibles pour permettre la création à partir du code source. Pour plus d’informations sur l’installation et la création de logiciels à partir de ces emplacements, consultez le didacticiel [Gérez les logiciels sur votre AL2 instance](managing-software.md).

Les instances Amazon Linux sont préconfigurées avec un `ec2-user`, mais il se peut que vous souhaitiez ajouter d’autres utilisateurs qui n’ont pas de privilèges du super-utilisateur. Pour plus d'informations sur l'ajout et la suppression d'utilisateurs, consultez [Gérer les utilisateurs sur votre Linux instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-users.html) dans le guide de l'*utilisateur Amazon EC2*.

Si vous possédez votre propre réseau avec un nom de domaine enregistré, vous pouvez changer le nom d’hôte d’une instance pour l’identifier dans le cadre de ce domaine. Vous pouvez aussi changer l’invite du système pour avoir un nom plus descriptif sans changer les réglages du nom d’hôte. Pour plus d’informations, consultez [Modifier le nom d'hôte de votre instance AL2](set-hostname.md). Vous pouvez configurer une instance pour utiliser un fournisseur de services DNS dynamiques. Pour plus d’informations, consultez [Configurer le DNS dynamique sur votre AL2 instance](dynamic-dns.md).

Lorsque vous lancez une instance dans Amazon EC2, vous avez la possibilité de transmettre les données des utilisateurs vers l’instance qui peut être utilisée pour effectuer des tâches de configuration communes et même exécuter des scripts après le démarrage de l’instance. Vous pouvez transmettre deux types de données utilisateur vers Amazon EC2 : des directives cloud-init et des scripts shell. Pour plus d'informations, consultez la section [Exécuter des commandes sur votre Linux instance au lancement](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) dans le guide de l'*utilisateur Amazon EC2*.

# Gérez les logiciels sur votre AL2 instance
<a name="managing-software"></a>

La distribution de base d’Amazon Linux contient les packages logiciels et les utilitaires nécessaires aux opérations de base du serveur.

Ces informations s'appliquent à AL2. Pour plus d'informations AL2023, consultez la section [Gérer les packages et les mises à jour du système d'exploitation AL2023 dans](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) le *guide de l'utilisateur Amazon Linux 2023*.

Il est important de garder les logiciels à jour. Beaucoup de packages dans une distribution Linux sont souvent mis à jour pour résoudre les bogues, ajouter des fonctions et protéger contre le code malveillant. Pour de plus amples informations, veuillez consulter [Mettre à jour le logiciel de l'instance sur votre AL2 instance](install-updates.md).

Par défaut, AL2 les instances sont lancées avec les référentiels suivants activés :
+ `amzn2-core`
+ `amzn2extra-docker`

Bien que de nombreux packages soient disponibles dans ces référentiels et mis à jour par AWS, il se peut que vous souhaitiez installer un package contenu dans un autre référentiel. Pour de plus amples informations, veuillez consulter [Ajouter des référentiels sur une instance AL2](add-repositories.md). Pour obtenir de l’aide pour trouver et installer des packages dans les référentiels activés, consultez [Rechercher et installer des packages logiciels sur une AL2 instance](find-install-software.md).

Les logiciels ne sont pas tous disponibles dans les packages logiciels stockés dans les référentiels. Certains logiciels doivent être compilés sur une instance à partir de son code source. Pour de plus amples informations, veuillez consulter [Préparation à la compilation du logiciel sur une AL2 instance](compile-software.md).

AL2 les instances gèrent leurs logiciels à l'aide du gestionnaire de packages yum. Le gestionnaire de packages yum peut installer, supprimer et mettre à jour les logiciels ainsi que gérer l’ensemble des dépendances pour chaque package.

**Topics**
+ [Mettre à jour le logiciel de l'instance sur votre AL2 instance](install-updates.md)
+ [Ajouter des référentiels sur une instance AL2](add-repositories.md)
+ [Rechercher et installer des packages logiciels sur une AL2 instance](find-install-software.md)
+ [Préparation à la compilation du logiciel sur une AL2 instance](compile-software.md)

# Mettre à jour le logiciel de l'instance sur votre AL2 instance
<a name="install-updates"></a>

Il est important de garder les logiciels à jour. Les packages dans une distribution Linux sont souvent mis à jour pour résoudre les bogues, ajouter des fonctions et protéger contre le code malveillant. Lorsque vous lancez et vous vous connectez pour la première fois à une instance Amazon Linux, il se peut que vous voyez un message vous demandant de mettre à jour des packages logiciels à des fins de sécurité. Cette section explique comment mettre à jour l’ensemble d’un système ou juste un seul package.

Ces informations s'appliquent à AL2. Pour plus d'informations AL2023, consultez la section [Gérer les packages et les mises à jour du système d'exploitation AL2023 dans](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) le *guide de l'utilisateur Amazon Linux 2023*.

Pour plus d'informations sur les modifications et les mises à jour apportées AL2, consultez les [notes AL2 de publication](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html).

Pour plus d'informations sur les modifications et les mises à jour apportées AL2023, consultez les [notes AL2023 de publication](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html).

**Important**  
Si vous avez lancé une instance EC2 qui utilise une AMI Amazon Linux 2 dans un sous-réseau IPv6 réservé, vous devez vous connecter à l'instance et exécuter. `sudo amazon-linux-https disable` Cela permet à votre AL2 instance de se connecter au yum référentiel dans S3 IPv6 via le service de correctif HTTP.

**Pour mettre à jour tous les packages d'une AL2 instance**

1. (Facultatif) Lancez une session **screen** dans votre fenêtre shell. Il se peut que vous connaissiez parfois une interruption du réseau qui peut déconnecter la connexion SSH à votre instance. Si ce problème arrive pendant une longue mise à jour logicielle, cela peut laisser l’instance dans un état récupérable bien que désorienté. Une session **screen** vous permet de continuer à exécuter la mise à jour même si votre connexion est interrompue et vous pouvez vous reconnecter à la session plus tard sans problème.

   1. Exécutez la commande **screen** pour démarrer la session.

      ```
      [ec2-user ~]$ screen
      ```

   1. Si votre session est déconnectée, reconnectez-vous à votre instance et énumérez les écrans disponibles.

      ```
      [ec2-user ~]$ screen -ls
      There is a screen on:
      	17793.pts-0.ip-12-34-56-78	(Detached)
      1 Socket in /var/run/screen/S-ec2-user.
      ```

   1. Reconnectez-vous à l’écran à l’aide de la commande **screen -r** et l’ID du processus de la commande précédente.

      ```
      [ec2-user ~]$ screen -r 17793
      ```

   1. Lorsque vous avez terminé d’utiliser **screen**, servez-vous de la commande **exit** pour fermer la session.

      ```
      [ec2-user ~]$ exit
      [screen is terminating]
      ```

1. Exécutez la commande **yum update**. Le cas échéant, vous pouvez ajouter l’indicateur `--security` pour appliquer uniquement les mises à jour de sécurité.

   ```
   [ec2-user ~]$ sudo yum update
   ```

1. Vérifiez les packages énumérés, saisissez **y**, puis appuyez sur Entrée pour accepter les mises à jour. La mise à jour de tous les packages d’un système peut prendre plusieurs minutes. Les résultats **yum** montrent le statut de la mise à jour pendant son exécution.

1. (Facultatif) [Redémarrez votre instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) pour vous assurer que vous utilisez les derniers packages et bibliothèques issus de votre mise à jour ; les mises à jour du noyau ne sont pas chargées tant qu'un redémarrage n'est pas effectué. Les mises à jour de n’importe quelle bibliothèque `glibc` devraient aussi être suivies d’un redémarrage. Pour les mises à jour des packages qui contrôlent les services, il peut s’avérer suffisant de redémarrer les services pour récupérer les mises à jour, mais un redémarrage du système assure que toutes les mises à jour précédentes des packages et des bibliothèques sont terminées.

**Pour mettre à jour un seul package sur une AL2 instance**

Utilisez cette procédure pour mettre à jour un seul package (et ses dépendances) et non l’ensemble du système.

1. Exécutez la commande **yum update** avec le nom du package que vous souhaiteriez mettre à jour.

   ```
   [ec2-user ~]$ sudo yum update openssl
   ```

1. Vérifiez les détails relatifs aux packages énumérés, saisissez **y**, puis appuyez sur Entrée pour accepter les mises à jour. Il peut arriver qu’il y ait plus d’un package énuméré s’il existe des dépendances de packages qui doivent être résolues. Les résultats **yum** montrent le statut de la mise à jour pendant son exécution.

1. (Facultatif) [Redémarrez votre instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) pour vous assurer que vous utilisez les derniers packages et bibliothèques issus de votre mise à jour ; les mises à jour du noyau ne sont pas chargées tant qu'un redémarrage n'est pas effectué. Les mises à jour de n’importe quelle bibliothèque `glibc` devraient aussi être suivies d’un redémarrage. Pour les mises à jour des packages qui contrôlent les services, il peut s’avérer suffisant de redémarrer les services pour récupérer les mises à jour, mais un redémarrage du système assure que toutes les mises à jour précédentes des packages et des bibliothèques sont terminées.

# Ajouter des référentiels sur une instance AL2
<a name="add-repositories"></a>

Ces informations s'appliquent à AL2. Pour plus d'informations AL2023, consultez la section [Mises à niveau déterministes via des référentiels versionnés dans AL2023 le guide](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html) de l'utilisateur *Amazon Linux 2023.*

Par défaut, AL2 les instances sont lancées avec les référentiels suivants activés :
+ `amzn2-core`
+ `amzn2extra-docker`

S’il existe de nombreux packages disponibles dans ces référentiels qui sont mis à jour par Amazon Web Services, il est toutefois possible que vous trouviez un package dans un autre référentiel que vous souhaitez installer.

Pour installer un package d’un référentiel différent avec la commande **yum**, vous devez ajouter les détails relatifs au référentiel au fichier `/etc/yum.conf` ou à son propre fichier `repository.repo` dans le répertoire `/etc/yum.repos.d`. Vous pouvez le faire manuellement, mais la plupart des référentiels yum ont leur propre fichier `repository.repo` sur l’URL de leur référentiel.

**Pour déterminer quels référentiels yum sont déjà installés**  
Utilisez la commande suivante pour répertorier les référentiels yum installés :

```
[ec2-user ~]$ yum repolist all
```

La sortie obtenue répertorie les référentiels installés et indique l’état de chacun. Les référentiels activés affichent le nombre de packages qu’ils contiennent.

**Pour ajouter un référentiel yum à /etc/yum.repos.d**

1. Recherchez l’emplacement du fichier `.repo`. Il variera selon le référentiel que vous ajoutez. Dans cet exemple, le fichier `.repo` se trouve à l’adresse `https://www.example.com/repository.repo`.

1. Ajoutez le référentiel à l’aide de la commande **yum-config-manager**.

   ```
   [ec2-user ~]$ sudo yum-config-manager --add-repo https://www.example.com/repository.repo
   Loaded plugins: priorities, update-motd, upgrade-helper
   adding repo from: https://www.example.com/repository.repo
   grabbing file https://www.example.com/repository.repo to /etc/yum.repos.d/repository.repo
   repository.repo                                      | 4.0 kB     00:00
   repo saved to /etc/yum.repos.d/repository.repo
   ```

Après avoir installé un référentiel, vous devez l’activer, comme décrit dans la procédure suivante.

**Pour activer un référentiel yum dans /etc/yum.repos.d**  
Utilisez la commande **yum-config-manager** avec l’indicateur `--enable repository`. La commande suivante active le référentiel EPEL (Extra Packages for Enterprise Linux) à partir du projet Fedora. Par défaut, ce référentiel est présent dans `/etc/yum.repos.d` sur les instances Amazon Linux AMI, mais il n’est pas activé.

```
[ec2-user ~]$ sudo yum-config-manager --enable epel
```

Pour plus d'informations et pour télécharger la dernière version de ce package, consultez [https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

# Rechercher et installer des packages logiciels sur une AL2 instance
<a name="find-install-software"></a>

Vous pouvez utiliser un outil de gestion des packages pour trouver et installer des packages logiciels. Dans Amazon Linux 2, l'outil de gestion des packages logiciels par défaut estYUM. Dans AL2023, l'outil de gestion des progiciels par défaut estDNF. Pour plus d'informations, consultez l'[outil de gestion des packages](https://docs.aws.amazon.com/linux/al2023/ug/package-management.html) dans le *guide de l'utilisateur Amazon Linux 2023*.

## Rechercher des packages logiciels sur une AL2 instance
<a name="find-software"></a>

Vous pouvez utiliser la commande **yum search** pour rechercher les descriptions des packages qui sont disponibles dans vos référentiels configurés. Elle est particulièrement utile si vous ne connaissez pas le nom exact du package que vous voulez installer. Il suffit de joindre la recherche de mots clés à la commande ; pour les recherches de plusieurs mots, entourez la requête de recherche avec des guillemets.

```
[ec2-user ~]$ yum search "find"
```

Voici un exemple de sortie.

```
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
============================== N/S matched: find ===============================
findutils.x86_64 : The GNU versions of find utilities (find and xargs)
gedit-plugin-findinfiles.x86_64 : gedit findinfiles plugin
ocaml-findlib-devel.x86_64 : Development files for ocaml-findlib
perl-File-Find-Rule.noarch : Perl module implementing an alternative interface to File::Find
robotfindskitten.x86_64 : A game/zen simulation. You are robot. Your job is to find kitten.
mlocate.x86_64 : An utility for finding files by name
ocaml-findlib.x86_64 : Objective CAML package manager and build helper
perl-Devel-Cycle.noarch : Find memory cycles in objects
perl-Devel-EnforceEncapsulation.noarch : Find access violations to blessed objects
perl-File-Find-Rule-Perl.noarch : Common rules for searching for Perl things
perl-File-HomeDir.noarch : Find your home and other directories on any platform
perl-IPC-Cmd.noarch : Finding and running system commands made easy
perl-Perl-MinimumVersion.noarch : Find a minimum required version of perl for Perl code
texlive-xesearch.noarch : A string finder for XeTeX
valgrind.x86_64 : Tool for finding memory management bugs in programs
valgrind.i686 : Tool for finding memory management bugs in programs
```

Les demandes de recherche de plusieurs mots entre guillemets donnent uniquement des résultats qui correspondent à la requête exacte. Si vous ne voyez pas le package attendu, simplifiez votre recherche en utilisant un mot clé, puis analyser les résultats. Vous pouvez aussi des synonymes des mots clés pour élargir votre recherche.

Pour plus d'informations sur les packages pour AL2, consultez les rubriques suivantes :
+ [AL2 Bibliothèque d'extras](al2-extras.md)
+ [Référentiel de packages](ec2.md#package-repository)

## Installation de packages logiciels sur une AL2 instance
<a name="install-software"></a>

Dans AL2, l'outil de gestion de packages yum recherche différents packages logiciels dans tous vos référentiels activés et gère toutes les dépendances du processus d'installation du logiciel. Pour plus d'informations sur l'installation de packages logiciels dans AL2023, consultez [la section Gestion des packages et des mises à jour du système d'exploitation](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) dans le *guide de l'utilisateur Amazon Linux 2023*.

**Pour installer un package à partir d’un référentiel**  
Utilisez la **yum install *package*** commande en *package* remplaçant par le nom du logiciel à installer. Par exemple, pour installer le navigateur web à base de texte **links**, saisissez la commande suivante.

```
[ec2-user ~]$ sudo yum install links
```

**Pour installer les fichiers du package RPM que vous avez téléchargé**  
Vous pouvez également utiliser **yum install** pour installer les fichiers du package RPM que vous avez téléchargé sur Internet. Pour cela, il vous suffit de joindre le nom du chemin d’un fichier RPM à la commande d’installation au lieu du nom d’un package de référentiel.

```
[ec2-user ~]$ sudo yum install my-package.rpm
```

**Pour lister les packages installés**  
Pour afficher la liste des packages installés sur votre instance, utilisez la commande suivante.

```
[ec2-user ~]$ yum list installed
```

# Préparation à la compilation du logiciel sur une AL2 instance
<a name="compile-software"></a>

Les logiciels open source sont disponibles sur Internet qui n’ont pas été précompilés et mis à disposition pour le téléchargement à partir d’un référentiel de packages. Il est possible que vous découvriez un package logiciel que vous devrez compiler vous-même, à partir de son code source. Pour que votre système puisse compiler des logiciels dans AL2 et Amazon Linux, vous devez installer plusieurs outils de développement, tels que **make****gcc**, et**autoconf**.

Comme la compilation de logiciels n’est pas une tâche que chaque instance Amazon EC2 nécessite, ces outils ne sont pas installés par défaut, mais ils sont disponibles dans un groupe de packages appelé « Development tools » (Outils de développement) qui s’ajoute facilement à une instance avec la commande **yum groupinstall**.

```
[ec2-user ~]$ sudo yum groupinstall "Development Tools"
```

Les packages de code source des logiciels sont souvent disponibles en téléchargement (à partir de sites Web tels que [https://github.com/](https://github.com/)et [http://sourceforge.net/](https://sourceforge.net/)) sous forme de fichier d'archive compressé, appelé tarball. Ces tarballs portent généralement l’extension de fichier `.tar.gz`. Vous pouvez décompresser ces archives avec la commande **tar**.

```
[ec2-user ~]$ tar -xzf software.tar.gz
```

Après avoir décompressé et désarchivé le package de code source, vous devriez rechercher un fichier `README` ou `INSTALL` dans le répertoire du code source qui peut vous fournir plus d’instructions pour la compilation et l’installation du code source. 

**Pour récupérer le code source des packages Amazon Linux**  
Amazon Web Services fournit le code source pour les packages gérés. Vous pouvez télécharger le code source pour n’importe quel package installé avec la commande **yumdownloader --source**.

Exécutez la **yumdownloader --source *package*** commande pour télécharger le code source de*package*. Par exemple, pour télécharger le code source du package `htop`, saisissiez la commande suivante.

```
[ec2-user ~]$ yumdownloader --source htop

Loaded plugins: priorities, update-motd, upgrade-helper
Enabling amzn-updates-source repository
Enabling amzn-main-source repository
amzn-main-source                                                                                              | 1.9 kB  00:00:00     
amzn-updates-source                                                                                           | 1.9 kB  00:00:00     
(1/2): amzn-updates-source/latest/primary_db                                                                  |  52 kB  00:00:00     
(2/2): amzn-main-source/latest/primary_db                                                                     | 734 kB  00:00:00     
htop-1.0.1-2.3.amzn1.src.rpm
```

L’emplacement du fichier RPM source est dans le répertoire à partir duquel vous avez exécuté la commande.

# Contrôle de l'état du processeur pour votre instance Amazon EC2 AL2
<a name="processor_state_control"></a>

Les états « C-state » contrôlent les niveaux de veille dans lesquels un cœur peut entrer lorsqu’il est inutilisé. Les états « C-state » sont numérotés de C0 (l’état le plus superficiel lorsque le cœur est totalement éveillé et exécute les instructions) à C6 (l’état de veille le plus profond lorsqu’un cœur est arrêté).

Les états « P-states » contrôlent les performances souhaitées (dans la fréquence de l’UC) à partir d’un cœur. La numérotation des états « P-states » commence à P0 (paramètre de performance le plus élevé dans lequel le cœur peut utiliser la technologie Intel Turbo Boost pour améliorer la fréquence si possible) et va de P1 (état « P-state » qui demande la fréquence de base maximale) à P15 (fréquence la plus basse possible).

Il se peut que vous vouliez changer les paramètres « C-state » ou « P-state » pour améliorer la cohérence des performances du processeur, réduire la latence ou ajuster votre instance pour une charge de travail spécifique. Les paramètres « C-state » ou « P-state » par défaut offre des performances maximales qui sont optimales pour la plupart des charges de travail. Cependant, si votre application tirerait avantage de la latence réduite pour un coût de fréquences simple ou double cœur plus hautes ou des performances cohérentes à des fréquences plus basses au lieu des fréquences Turbo Boost transmises en paquets, pensez à essayer les paramètres « C-state » ou « P-state » qui sont disponibles pour ces instances.

*Pour plus d'informations sur les types d'instances Amazon EC2 qui permettent au système d'exploitation de contrôler les états C et P du processeur, consultez la section Contrôle de [l'état du processeur pour votre instance Amazon EC2 dans le guide de l'utilisateur Amazon EC2](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/processor_state_control.html).*

Les sections suivantes décrivent les différentes configurations d’états du processeur et les façons de surveiller les effets de votre configuration. Ces procédures ont été écrites pour Amazon Linux et s'appliquent à celui-ci ; toutefois, elles peuvent également fonctionner pour d'autres distributions Linux dotées d'une version de noyau Linux 3.9 ou ultérieure.

**Note**  
Les exemples présentés sur cette page utilisent les éléments suivants :  
L’utilitaire **turbostat** pour afficher les informations relatives à la fréquence du processeur et à l’état « C-state ». L’utilitaire **turbostat** est disponible sur Amazon Linux par défaut.
La commande **stress** pour simuler une charge de travail. Pour installer **stress**, commencez par activer le référentiel EPEL en exécutant **sudo amazon-linux-extras install epel**, puis exécutez **sudo yum install -y stress**.
Si la sortie n’affiche pas les informations relatives à l’état « C-state », incluez l’option **--debug** dans la commande (**sudo turbostat --debug stress *<options>***).

**Topics**
+ [La meilleure performance avec la fréquence Turbo Boost maximale](#turbo-perf)
+ [Haute performance et faible latence en limitant les états « C-state » plus profonds](#c-states)
+ [Performances de base avec les variations les plus faibles](#baseline-perf)

## La meilleure performance avec la fréquence Turbo Boost maximale
<a name="turbo-perf"></a>

Il s’agit de la configuration de contrôle d’état du processeur par défaut pour Amazon Linux AMI et il est recommandé pour la plupart des charges de travail. Cette configuration fournit les meilleures performances avec des variations plus faibles. Le fait de permettre aux cœurs inactifs d’entrer dans des états de veille plus profonds offre le dégagement thermique nécessaire aux processeurs simple ou double cœur d’atteindre leur potentiel Turbo Boost maximal.

L’exemple suivant montre une instance `c4.8xlarge` avec deux cœurs qui fonctionnent activement et atteignent la fréquence Turbo Boost maximale de leur processeur.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [30680] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30680] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.54 3.44 2.90   0   9.18   0.00  85.28   0.00   0.00   0.00   0.00   0.00  94.04 32.70 54.18  0.00
 0   0   0   0.12 3.26 2.90   0   3.61   0.00  96.27   0.00   0.00   0.00   0.00   0.00  48.12 18.88 26.02  0.00
 0   0  18   0.12 3.26 2.90   0   3.61
 0   1   1   0.12 3.26 2.90   0   4.11   0.00  95.77   0.00
 0   1  19   0.13 3.27 2.90   0   4.11
 0   2   2   0.13 3.28 2.90   0   4.45   0.00  95.42   0.00
 0   2  20   0.11 3.27 2.90   0   4.47
 0   3   3   0.05 3.42 2.90   0  99.91   0.00   0.05   0.00
 0   3  21  97.84 3.45 2.90   0   2.11
...
 1   1  10   0.06 3.33 2.90   0  99.88   0.01   0.06   0.00
 1   1  28  97.61 3.44 2.90   0   2.32
...
10.002556 sec
```

Dans cet exemple, les versions CPUs 21 et 28 fonctionnent à leur fréquence Turbo Boost maximale parce que les autres cœurs sont entrés en état de `C6` veille pour économiser de l'énergie et fournir à la fois de l'énergie et de la marge thermique aux cœurs de travail. Les versions CPUs 3 et 10 (chacune partageant un cœur de processeur avec les `C1` v CPUs 21 et 28) sont en attente d'instructions.

Dans l'exemple suivant, les 18 cœurs travaillent activement. Il n'y a donc pas de marge de manœuvre pour un Turbo Boost maximal, mais ils fonctionnent tous à la vitesse « Turbo Boost tous les cœurs » de 3,2 GHz.

```
[ec2-user ~]$ sudo turbostat stress -c 36 -t 10
stress: info: [30685] dispatching hogs: 36 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30685] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
            99.27 3.20 2.90   0   0.26   0.00   0.47   0.00   0.00   0.00   0.00   0.00 228.59 31.33 199.26  0.00
 0   0   0  99.08 3.20 2.90   0   0.27   0.01   0.64   0.00   0.00   0.00   0.00   0.00 114.69 18.55 99.32  0.00
 0   0  18  98.74 3.20 2.90   0   0.62
 0   1   1  99.14 3.20 2.90   0   0.09   0.00   0.76   0.00
 0   1  19  98.75 3.20 2.90   0   0.49
 0   2   2  99.07 3.20 2.90   0   0.10   0.02   0.81   0.00
 0   2  20  98.73 3.20 2.90   0   0.44
 0   3   3  99.02 3.20 2.90   0   0.24   0.00   0.74   0.00
 0   3  21  99.13 3.20 2.90   0   0.13
 0   4   4  99.26 3.20 2.90   0   0.09   0.00   0.65   0.00
 0   4  22  98.68 3.20 2.90   0   0.67
 0   5   5  99.19 3.20 2.90   0   0.08   0.00   0.73   0.00
 0   5  23  98.58 3.20 2.90   0   0.69
 0   6   6  99.01 3.20 2.90   0   0.11   0.00   0.89   0.00
 0   6  24  98.72 3.20 2.90   0   0.39
...
```

## Haute performance et faible latence en limitant les états « C-state » plus profonds
<a name="c-states"></a>

Les états « C-state » contrôlent les niveaux de veille dans lesquels un cœur peut entrer lorsqu’il est inutilisé. Il se peut que vous vouliez contrôler les états « C-state » pour ajuster la latence de votre système par rapport aux performances. La mise en veille de cœurs prend du temps. Même si un cœur en veille donne plus de marge pour qu’un autre cœur fonctionne à une fréquence plus élevée, ce cœur en veille prend du temps pour se remettre en route et fonctionner. Par exemple, si un cœur qui est assigné à la gestion d’interruptions de paquets est en veille, il se peut que la prise en charge de cette interruption soit retardée. Vous pouvez configurer le système pour qu’il n’utilise pas les états « C-state » plus profonds ce qui réduit la latence de réaction du processeur, mais également la marge disponible pour la fréquence Turbo Boost des autres cœurs.

Un scénario commun pour la désactivation d’états de veille plus profonds est une application de la base de données Redis qui stocke la base de données dans la mémoire système pour un temps de réponse aux requêtes le plus rapide possible.

**Pour limiter les états de sommeil plus profonds sur AL2**

1. Ouvrez le fichier `/etc/default/grub` avec l’éditeur de votre choix.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Modifiez la ligne `GRUB_CMDLINE_LINUX_DEFAULT` et ajoutez l’option `intel_idle.max_cstate=1` pour `processor.max_cstate=1` définir `C1` comme l’état « C-state » le plus profond pour les cœurs inutilisés.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   L’option `intel_idle.max_cstate=1` configure la limite de l’état C pour les instances Intel, et l’option `processor.max_cstate=1` configure la limite de l’état C pour les instances basées sur AMD. Il est possible d’ajouter les deux options à votre configuration en toute sécurité. Cela permet à une configuration unique de définir le comportement souhaité sur Intel et AMD.

1. Enregistrez le fichier et quittez votre éditeur.

1.  Exécutez la commande suivante pour recréer la configuration du démarrage.

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Redémarrez votre instance pour activer la nouvelle option noyau.

   ```
   [ec2-user ~]$ sudo reboot
   ```

**Pour limiter les états de veille plus profonds sur Amazon Linux AMI**

1. Ouvrez le fichier `/boot/grub/grub.conf` avec l’éditeur de votre choix.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Modifiez la ligne `kernel` de la première entrée et ajoutez les options `intel_idle.max_cstate=1` et `processor.max_cstate=1` pour définir `C1` comme l’état « C-state » le plus profond pour les cœurs inutilisés.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1  processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   L’option `intel_idle.max_cstate=1`configure la limite de l’état C pour les instances Intel, et l’option `processor.max_cstate=1` configure la limite de l’état C pour les instances basées sur AMD. Il est possible d’ajouter les deux options à votre configuration en toute sécurité. Cela permet à une configuration unique de définir le comportement souhaité sur Intel et AMD.

1. Enregistrez le fichier et quittez votre éditeur.

1. Redémarrez votre instance pour activer la nouvelle option noyau.

   ```
   [ec2-user ~]$ sudo reboot
   ```

L’exemple suivant montre une instance `c4.8xlarge` avec deux cœurs qui fonctionnent activement à la fréquence « Turbo Boost » lorsque tous les cœurs sont utilisés.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5322] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5322] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.56 3.20 2.90   0  94.44   0.00   0.00   0.00   0.00   0.00   0.00   0.00 131.90 31.11 199.47  0.00
 0   0   0   0.03 2.08 2.90   0  99.97   0.00   0.00   0.00   0.00   0.00   0.00   0.00  67.23 17.11 99.76  0.00
 0   0  18   0.01 1.93 2.90   0  99.99
 0   1   1   0.02 1.96 2.90   0  99.98   0.00   0.00   0.00
 0   1  19  99.70 3.20 2.90   0   0.30
...
 1   1  10   0.02 1.97 2.90   0  99.98   0.00   0.00   0.00
 1   1  28  99.67 3.20 2.90   0   0.33
 1   2  11   0.04 2.63 2.90   0  99.96   0.00   0.00   0.00
 1   2  29   0.02 2.11 2.90   0  99.98
...
```

Dans cet exemple, les cœurs des versions CPUs 19 et 28 fonctionnent à 3.2 GHz, et les autres cœurs sont à l'`C1`état C, en attente d'instructions. Même si les cœurs en fonctionnement n’atteignent pas leur fréquence Turbo Boost maximale, les cœurs inactifs seront beaucoup plus rapides à répondre aux nouvelles requêtes que s’ils possédaient l’état « C-state » `C6` plus profond.

## Performances de base avec les variations les plus faibles
<a name="baseline-perf"></a>

Vous pouvez réduire les variations de la fréquence du processeur avec des états « P-states ». Les états « P-states » contrôlent les performances souhaitées (dans la fréquence de l’UC) à partir d’un cœur. La plupart des charges de travail fonctionnent mieux avec l’état P0 ce qui demande une fréquence Turbo Boost. Cependant, il se peut que vous souhaitiez adapter votre système pour obtenir une performance cohérente plus que transmise en paquets ce qui peut se produire lorsque les fréquences Turbo Boost sont activées. 

Les charges de travail Intel Advanced Vector Extensions (AVX ou AVX2) peuvent fonctionner correctement à des fréquences plus basses, et les instructions AVX peuvent consommer plus d'énergie. L’exécution du processeur à une fréquence plus basse en désactivant la fréquence Turbo Boost peut réduire la quantité d’énergie utilisée et conserver la cohérence de la vitesse. Pour obtenir plus d’informations sur l’optimisation de la configuration et la charge de travail de votre instance pour AVX, consultez le [site Web d’Intel](https://www.intel.com/content/www/us/en/developer/articles/technical/the-intel-advanced-vector-extensions-512-feature-on-intel-xeon-scalable.html?wapkw=advanced%20vector%20extensions).

Les pilotes inactifs du processeur contrôlent l’état P. Les nouvelles générations de CPU nécessitent des pilotes inactifs du processeur mis à jour qui correspondent au niveau du noyau, comme suit :
+ Versions 6.1 et supérieures du noyau Linux : compatible avec Intel Granite Rapids (par exemple, R8i)
+ Versions du noyau Linux 5.10 et supérieures : compatible avec AMD Milan (par exemple, m6A)
+ Versions 5.6 et supérieures du noyau Linux : compatible avec Intel Icelake (par exemple, M6i)

Pour détecter si le noyau d’un système en cours d’exécution reconnaît le CPU, exécutez la commande suivante.

```
if [ -d /sys/devices/system/cpu/cpu0/cpuidle ]; then echo "C-state control enabled"; else echo "Kernel cpuidle driver does not recognize this CPU generation"; fi
```

Si la sortie de cette commande indique un manque de prise en charge, nous vous recommandons de mettre à niveau le noyau.

Cette section décrit comment limiter les états de veille plus longs et désactiver la fréquence Turbo Boost (en demandant l’état « P-state » `P1`) pour offrir une latence faible et la variation de vitesse du processeur la plus faible pour ces types de charges de travail.

**Pour limiter les états de sommeil plus profonds et désactiver Turbo Boost sur AL2**

1. Ouvrez le fichier `/etc/default/grub` avec l’éditeur de votre choix.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Modifiez la ligne `GRUB_CMDLINE_LINUX_DEFAULT` et ajoutez l’option `intel_idle.max_cstate=1` pour `processor.max_cstate=1` définir `C1` comme l’état « C-state » le plus profond pour les cœurs inutilisés.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   L’option `intel_idle.max_cstate=1` configure la limite de l’état C pour les instances Intel, et l’option `processor.max_cstate=1` configure la limite de l’état C pour les instances basées sur AMD. Il est possible d’ajouter les deux options à votre configuration en toute sécurité. Cela permet à une configuration unique de définir le comportement souhaité sur Intel et AMD.

1. Enregistrez le fichier et quittez votre éditeur.

1.  Exécutez la commande suivante pour recréer la configuration du démarrage.

   ```
   [ec2-user ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Redémarrez votre instance pour activer la nouvelle option noyau.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Lorsque vous avez besoin des faibles variations de vitesse du processeur que l’état P-state `P1` offre, exécutez la commande suivante pour désactiver la fréquence Turbo Boost.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Lorsque votre charge de travail est terminée, vous pouvez réactiver la fréquence Turbo Boost avec la commande suivante.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

**Pour limiter les états de veille plus profonds et désactiver la fréquence Turbo Boost sur Amazon Linux AMI**

1. Ouvrez le fichier `/boot/grub/grub.conf` avec l’éditeur de votre choix.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Modifiez la ligne `kernel` de la première entrée et ajoutez les options `intel_idle.max_cstate=1` et `processor.max_cstate=1` pour définir `C1` comme l’état « C-state » le plus profond pour les cœurs inutilisés.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1 processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   L’option `intel_idle.max_cstate=1`configure la limite de l’état C pour les instances Intel, et l’option `processor.max_cstate=1` configure la limite de l’état C pour les instances basées sur AMD. Il est possible d’ajouter les deux options à votre configuration en toute sécurité. Cela permet à une configuration unique de définir le comportement souhaité sur Intel et AMD.

1. Enregistrez le fichier et quittez votre éditeur.

1. Redémarrez votre instance pour activer la nouvelle option noyau.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Lorsque vous avez besoin des faibles variations de vitesse du processeur que l’état P-state `P1` offre, exécutez la commande suivante pour désactiver la fréquence Turbo Boost.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Lorsque votre charge de travail est terminée, vous pouvez réactiver la fréquence Turbo Boost avec la commande suivante.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

L'exemple suivant montre une `c4.8xlarge` instance avec deux v exécutant CPUs activement un travail à la fréquence de base, sans Turbo Boost.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5389] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5389] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.59 2.90 2.90   0  94.41   0.00   0.00   0.00   0.00   0.00   0.00   0.00 128.48 33.54 200.00  0.00
 0   0   0   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00   0.00   0.00   0.00   0.00  65.33 19.02 100.00  0.00
 0   0  18   0.04 2.90 2.90   0  99.96
 0   1   1   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   1  19   0.04 2.90 2.90   0  99.96
 0   2   2   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00
 0   2  20   0.04 2.90 2.90   0  99.96
 0   3   3   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   3  21  99.95 2.90 2.90   0   0.05
...
 1   1  28  99.92 2.90 2.90   0   0.08
 1   2  11   0.06 2.90 2.90   0  99.94   0.00   0.00   0.00
 1   2  29   0.05 2.90 2.90   0  99.95
```

Les cœurs des versions CPUs 21 et 28 exécutent activement leur travail à la vitesse de base du processeur de 2,9 GHz, et tous les cœurs inactifs fonctionnent également à la vitesse de base dans l'`C1`état C, prêts à accepter des instructions.

# Planificateur d'E/S pour AL2
<a name="io-scheduler"></a>

Les I/O scheduler is a part of the Linux operating system that sorts and merges I/O demandes et détermine l'ordre dans lequel elles sont traitées.

I/O schedulers are particularly beneficial for devices such as magnetic hard drives, where seek time can be expensive and where it is optimal to merge co-located requests. I/Oles planificateurs ont moins d'effet sur les périphériques SSD et les environnements virtualisés. En effet, pour les périphériques SSD, l’accès séquentiel et aléatoire ne diffère pas, et pour les environnements virtualisés, l’hôte fournit sa propre couche de planification.

Cette rubrique traite du planificateur Amazon Linux I/O . Pour plus d’informations sur le planificateur d’I/O utilisé par d’autres distributions Linux, reportez-vous à leur documentation respective.

**Topics**
+ [Planificateurs pris en charge](#supported-schedulers)
+ [Planificateur par défaut](#default-schedulers)
+ [Modifier le planificateur](#change-scheduler)

## Planificateurs pris en charge
<a name="supported-schedulers"></a>

Amazon Linux prend en charge les I/O planificateurs suivants :
+ `deadline`— Le I/O planificateur de *délais* trie les I/O demandes et les traite dans l'ordre le plus efficace. Il garantit une heure de début pour chaque I/O request. It also gives I/O demande en attente depuis trop longtemps avec une priorité plus élevée.
+ `cfq`— Le I/O planificateur *Completely Fair Queueing* (CFQ) tente de répartir I/O resources between processes. It sorts and inserts I/O équitablement les demandes dans des files d'attente par processus.
+ `noop`— Les I/O scheduler inserts all I/O demandes *No Operation* (noop) sont placées dans une file d'attente FIFO, puis les fusionnent en une seule demande. Ce planificateur n’effectue aucun tri des demandes.

## Planificateur par défaut
<a name="default-schedulers"></a>

No Operation (noop) est le I/O planificateur par défaut pour Amazon Linux. Ce planificateur est utilisé pour les raisons suivantes :
+ De nombreux types d’instance utilisent des périphériques virtualisés sur lesquels l’hôte sous-jacent effectue une planification pour l’instance.
+ Les périphériques SSD sont utilisés dans de nombreux types d'instances où les avantages d'un I/O planificateur ont moins d'effet.
+ C'est le I/O planificateur le moins invasif, et il peut être personnalisé si nécessaire.

## Modifier le planificateur
<a name="change-scheduler"></a>

La modification du I/O planificateur peut augmenter ou diminuer les performances selon que le planificateur entraîne le traitement d'un plus grand nombre ou d'une diminution du nombre de I/O demandes dans un délai donné. Cela dépend largement de votre charge de travail, de la génération du type d’instance utilisé et du type de périphérique auquel vous accédez. Si vous modifiez le planificateur d'E/S utilisé, nous vous recommandons d'utiliser un outil, tel que **iotop**, pour mesurer les I/O performances et déterminer si le changement est bénéfique pour votre cas d'utilisation.

Vous pouvez afficher le I/O planificateur d'un appareil à l'aide de la commande suivante, qui `nvme0n1` sert d'exemple. Remplacez `nvme0n1` dans la commande suivante par le périphérique répertorié dans `/sys/block` sur votre instance.

```
$  cat /sys/block/nvme0n1/queue/scheduler
```

Pour définir le I/O planificateur de l'appareil, utilisez la commande suivante. 

```
$  echo cfq|deadline|noop > /sys/block/nvme0n1/queue/scheduler
```

Par exemple, pour définir le I/O planificateur d'un *xvda* appareil de `noop` à`cfq`, utilisez la commande suivante. 

```
$  echo cfq > /sys/block/xvda/queue/scheduler
```

# Modifier le nom d'hôte de votre instance AL2
<a name="set-hostname"></a>

Lorsque vous lancez une instance dans un VPC privé, Amazon EC2 attribue un nom d’hôte de système d’exploitation invité. Le type de nom d’hôte attribué par Amazon EC2 dépend des paramètres de votre sous-réseau. Pour plus d'informations sur les noms d'hôte EC2, consultez les types de noms d'hôtes des [instances Amazon EC2 dans le guide](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) de l'utilisateur Amazon *EC2*.

Un nom DNS privé Amazon EC2 typique pour une instance EC2 configurée pour utiliser la dénomination basée sur l'IP avec une IPv4 adresse ressemble à ceci : `ip-12-34-56-78.us-west-2.compute.internal` le nom comprend le domaine interne, le service (dans ce cas,`compute`), la région et une forme d'adresse privée. IPv4 Une partie de ce nom d’hôte est affiché sur l’invite shell lorsque vous vous connectez dans votre instance (par exemple, `ip-12-34-56-78`). Chaque fois que vous arrêtez et redémarrez votre instance Amazon EC2 (sauf si vous utilisez une adresse IP élastique), l' IPv4 adresse publique change, tout comme votre nom DNS public, votre nom d'hôte système et votre invite shell.

**Important**  
Ces informations s’appliquent à Amazon Linux. Pour obtenir des informations sur d’autres distributions, consultez leur documentation spécifique.

## Modifier le nom d’hôte du système
<a name="set-hostname-system"></a>

Si vous avez un nom DNS public enregistré pour l’adresse IP de votre instance (comme `webserver.mydomain.com`), vous pouvez régler le nom d’hôte du système pour que votre instance s’identifie comme une partie de ce domaine. Cela modifie également l'invite du shell afin qu'elle affiche la première partie de ce nom au lieu du nom d'hôte fourni par AWS (par exemple,`ip-12-34-56-78`). Si vous n’avez pas de nom DNS public enregistré, vous pouvez toujours changer le nom d’hôte, mais le processus est un peu différent.

Pour que la mise à jour de votre nom d’hôte persiste, vous devez vérifier que le paramètre cloud-init `preserve_hostname` est défini sur `true`. Vous pouvez exécuter la commande suivante afin de modifier ou d’ajouter ce paramètre :

```
sudo vi /etc/cloud/cloud.cfg
```

Si le paramètre `preserve_hostname` n’est pas répertorié, ajoutez la ligne de texte suivante à la fin du fichier : 

```
preserve_hostname: true
```

**Pour remplacer le nom d’hôte du système par un nom DNS public**

Suivez cette procédure si vous avez déjà un nom DNS public enregistré.

1. 
   + Pour AL2 : utilisez la **hostnamectl** commande pour définir votre nom d'hôte afin qu'il reflète le nom de domaine complet (tel que**webserver.mydomain.com**).

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.mydomain.com
     ```
   + Pour Amazon Linux AMI : Sur votre instance, ouvrez le fichier de configuration `/etc/sysconfig/network` dans votre éditeur de texte et modifiez l’entrée `HOSTNAME` pour refléter le nom de domaine complet (comme **webserver.mydomain.com**).

     ```
     HOSTNAME=webserver.mydomain.com
     ```

1. Redémarrez l’instance pour récupérer le nouveau nom d’hôte.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   Vous pouvez également redémarrer à l’aide de la console Amazon EC2 (sur la page **Instances**, sélectionnez l’instance et choisissez **État de l’instance**, **Redémarrer l’instance**).

1. Connectez-vous à votre instance et vérifiez que le nom d’hôte a été mis à jour. Votre invite devrait indiquer le nouveau no d’hôte (jusqu’au premier « . ») et la commande **hostname** doit afficher le nom de domaine complet.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.mydomain.com
   ```

**Pour remplacer le nom d’hôte du système sans nom DNS public**

1. 
   + Pour AL2 : utilisez la **hostnamectl** commande pour définir votre nom d'hôte afin qu'il reflète le nom d'hôte du système souhaité (par exemple). **webserver**

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.localdomain
     ```
   + Pour Amazon Linux AMI : Sur votre instance, ouvrez le fichier de configuration `/etc/sysconfig/network` dans votre éditeur de texte préféré et modifiez l’entrée `HOSTNAME` pour refléter le nom d’hôte du système souhaité (comme **webserver**).

     ```
     HOSTNAME=webserver.localdomain
     ```

1. Ouvrez le fichier `/etc/hosts` dans votre éditeur de texte préféré et modifiez l’entrée commençant par **127.0.0.1** pour correspondre à l’exemple ci-dessous, en remplaçant votre propre nom d’hôte.

   ```
   127.0.0.1 webserver.localdomain webserver localhost4 localhost4.localdomain4
   ```

1. Redémarrez l’instance pour récupérer le nouveau nom d’hôte.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   Vous pouvez également redémarrer à l’aide de la console Amazon EC2 (sur la page **Instances**, sélectionnez l’instance et choisissez **État de l’instance**, **Redémarrer l’instance**).

1. Connectez-vous à votre instance et vérifiez que le nom d’hôte a été mis à jour. Votre invite devrait indiquer le nouveau no d’hôte (jusqu’au premier « . ») et la commande **hostname** doit afficher le nom de domaine complet.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.localdomain
   ```

Vous pouvez également implémenter des solutions plus programmatiques, telles que la spécification des données utilisateur pour configurer votre instance. Si votre instance fait partie d’un groupe Auto Scaling, vous pouvez utiliser des hooks de cycle de vie pour définir les données utilisateur. Pour de plus amples informations, veuillez consulter les rubriques [Run commands on your Linux instance at launch](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) (Exécution des commandes sur votre instance Linux lors de son lancement) et [Lifecycle hook for instance launch](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#aws-resource-autoscaling-lifecyclehook--examples--Lifecycle_hook_for_instance_launch) (Hook de cycle de vie pour le lancement d’instance) dans le *Guide de l’utilisateur AWS CloudFormation *.

## Modifier l’invite shell sans affecter le nom d’hôte
<a name="set-hostname-shell"></a>

Si vous ne souhaitez pas modifier le nom d'hôte de votre instance, mais que vous souhaitez afficher un nom de système plus utile (tel que**webserver**) que le nom privé fourni par AWS (par exemple,`ip-12-34-56-78`), vous pouvez modifier les fichiers de configuration des invites du shell pour afficher le surnom de votre système au lieu du nom d'hôte.

**Pour remplacer l’invite shell par un pseudonyme d’hôte**

1. Créez un fichier dans `/etc/profile.d` qui définit la variable d’environnement appelée `NICKNAME` avec la valeur que vous souhaitez dans l’invite shell. Par exemple, pour définir le pseudonyme du système sur **webserver**, exécutez la commande suivante.

   ```
   [ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'
   ```

1. Ouvrez le fichier `/etc/bashrc` (Red Hat) ou `/etc/bash.bashrc` (Debian/Ubuntu) dans l’éditeur de texte de votre choix (par exemple, **vim** ou **nano**). Vous devez utiliser **sudo** avec la commande de l’éditeur, car `/etc/bashrc` et `/etc/bash.bashrc` appartiennent à `root`.

1. Modifiez le fichier et changez la variable d’invite shell (`PS1`) pour afficher votre pseudonyme au lieu du nom d’hôte. Recherchez la ligne suivante qui définit l’invite shell dans `/etc/bashrc` ou `/etc/bash.bashrc` (plusieurs lignes sont affichées ci-dessous pour illustrer le contexte ; recherchez la ligne qui commence par `[ "$PS1"`) :

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

   Modifiez `\h` (symbole de `hostname`) sur cette ligne en la valeur de la variable `NICKNAME`.

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@$NICKNAME \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

1. (Facultatif) Pour définir le titre sur les fenêtres shell avec le nouveau pseudonyme, suivez les étapes suivantes.

   1. Créez un fichier nommé `/etc/sysconfig/bash-prompt-xterm`.

      ```
      [ec2-user ~]$ sudo touch /etc/sysconfig/bash-prompt-xterm
      ```

   1. Rendez le fichier exécutable avec la commande suivante.

      ```
      [ec2-user ~]$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
      ```

   1. Ouvrez le fichier `/etc/sysconfig/bash-prompt-xterm` avec votre éditeur de texte préféré (comme **vim** ou **nano**). Vous devez utiliser **sudo** avec la commande de votre éditeur, car `/etc/sysconfig/bash-prompt-xterm` est détenu par `root`.

   1. Ajoutez la ligne suivante au fichier.

      ```
      echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
      ```

1. Déconnectez-vous puis reconnectez-vous pour récupérer la nouvelle valeur du pseudonyme.

## Modifier le nom d’hôte sur d’autres distributions Linux
<a name="set-hostname-other-linux"></a>

Les procédures de cette page sont destinées à une utilisation avec Amazon Linux uniquement. Pour plus d’informations sur les autres distributions Linux, consultez leur documentation spécifique et les articles suivants :
+ [Comment attribuer un nom d’hôte statique à une instance privée Amazon EC2 exécutant RHEL 7 ou Centos 7 ?](https://aws.amazon.com/premiumsupport/knowledge-center/linux-static-hostname-rhel7-centos7/)

# Configurer le DNS dynamique sur votre AL2 instance
<a name="dynamic-dns"></a>

Lorsque vous lancez une instance EC2, une adresse IP publique et un système de nom de domaine (DNS) public lui sont attribués, que vous pouvez utiliser pour l’atteindre depuis Internet. Comme il y a tellement d’hôtes dans le domaine Amazon Web Services, ces noms publics doivent être assez longs pour que chaque nom reste unique. Un nom DNS public typique d'Amazon EC2 ressemble à ceci : `ec2-12-34-56-78.us-west-2.compute.amazonaws.com` le nom comprend le domaine Amazon Web Services, le service (dans ce cas,`compute`), le Région AWS, et une forme d'adresse IP publique.

Les services DNS dynamiques fournissent des noms d’hôte DNS personnalisés dans leur domaine qui peut être facile à mémoriser et aussi plus pertinent vis-à-vis du cas d’utilisation de votre hôte. Certains de ces services sont également gratuits. Vous pouvez utiliser un fournisseur DNS dynamique avec Amazon EC2 et configurez l’instance pour mettre à jour l’adresse IP associée au nom DNS public à chaque fois que l’instance commence. Il existe un choix de plusieurs fournisseurs différents et les détails spécifiques à la sélection d’un fournisseur et à l’enregistrement d’un nom sans eux ne sont pas pris en compte dans le cadre de ce guide.<a name="procedure-dynamic-dns"></a>

**Pour utiliser DNS dynamique avec Amazon EC2**

1. Inscrivez-vous avec un fournisseur de services DNS dynamiques et enregistrez un nom DNS public avec leur service. Cette procédure utilise le service gratuit de [noip.com/free](https://www.noip.com/free) comme exemple.

1. Configurez le client de mise à jour de DNS dynamique. Après avoir enregistré un fournisseur de services DNS dynamiques et un nom DNS public avec leur service, reliez le nom DNS à l’adresse IP de votre instance. De nombreux fournisseurs (notamment [noip.com](https://noip.com)) vous permettent de faire cela manuellement depuis la page de votre compte sur leur site web, mais beaucoup prennent également en charge les clients de mise à jour logicielle. Si un client de mise à jour est exécuté sur votre instance EC2, votre enregistrement DNS dynamique est mis à jour à chaque fois que l’adresse IP change, comme après une fermeture et un redémarrage. Dans cet exemple, vous installez le client noip2 qui fonctionne avec le service fourni par [noip.com](https://noip.com).

   1. Activez le référentiel Extra Packages for Enterprise Linux (EPEL) pour accéder au `noip2` client.
**Note**  
AL2 les clés GPG et les informations de référentiel du référentiel EPEL sont installées par défaut sur les instances. Pour plus d'informations et pour télécharger la dernière version de ce package, consultez [https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

      ```
      [ec2-user ~]$ sudo amazon-linux-extras install epel -y
      ```

   1. Installez le package `noip`.

      ```
      [ec2-user ~]$ sudo yum install -y noip
      ```

   1. Créez le fichier de configuration . Saisissez l’identifiant et le mot de passe lorsque vous y êtes invité et répondez aux questions suivantes pour configurer le client.

      ```
      [ec2-user ~]$ sudo noip2 -C
      ```

1. Activez le service noip.

   ```
   [ec2-user ~]$ sudo systemctl enable noip.service
   ```

1. Lancez le service noip.

   ```
   [ec2-user ~]$ sudo systemctl start noip.service
   ```

   Cette commande lance le client, qui lit le fichier de configuration (`/etc/no-ip2.conf`) que vous avez créé précédemment et met à jour l’adresse IP du nom du DNS public que vous avez choisi.

1. Vérifiez que le client de mise à jour a défini la bonne adresse IP de votre nom DNS dynamique. Laissez s’écouler quelques minutes pour que les enregistrements DNS se mettent à jour, puis essayez de connecter votre instance en utilisant SSH avec le nom DNS public que vous avez configuré dans cette procédure.

# Configurez votre interface réseau à l'aide d'ec2-net-utils pour AL2
<a name="ec2-net-utils"></a>

Amazon Linux 2 AMIs peut contenir des scripts supplémentaires installés par AWS, appelés ec2-net-utils. Ces scripts automatisent le cas échéant la configuration de vos interfaces réseau. Ces scripts ne sont disponibles AL2 que pour.

**Note**  
Pour Amazon Linux 2023, le `amazon-ec2-net-utils` package génère des configurations spécifiques à l'interface dans le répertoire. `/run/systemd/network` Pour plus d’informations, consultez la rubrique [Networking service](https://docs.aws.amazon.com/linux/al2023/ug/networking-service.html) du *Guide de l’utilisateur Amazon Linux 2023*.

Utilisez la commande suivante pour installer le package AL2 s'il n'est pas déjà installé ou pour le mettre à jour s'il est installé et que des mises à jour supplémentaires sont disponibles :

```
$ yum install ec2-net-utils
```

Les composants suivants font partie de ec2-net-utils :

udev rules (`/etc/udev/rules.d`)  
Identifie les interfaces réseau qui sont attachées, détachées ou rattachées à une instance en cours d’exécution, et s’assure que le script hotplug s’exécute (`53-ec2-network-interfaces.rules`). Mappe l’adresse MAC sur un nom de périphérique (`75-persistent-net-generator.rules`, qui génère `70-persistent-net.rules`).

script hotplug  
Génère un fichier de configuration d’interface adapté à une utilisation avec DHCP (`/etc/sysconfig/network-scripts/ifcfg-eth`*N*). Génère également un fichier de configuration de route (`/etc/sysconfig/network-scripts/route-eth`*N*).

script DHCP  
Chaque fois qu’une Network Interface reçoit un nouveau bail DHCP, ce script interroge les métadonnées d’instance pour des adresses IP Elastic. Pour chaque adresse IP Elastic, il ajoute une règle à la base de données de politiques de routage pour s’assurer que le trafic sortant à partir de cette adresse utilise l’interface réseau correcte. Il ajoute également chaque adresse IP privée à l’interface réseau comme adresse secondaire.

**ec2ifup** eth*N* (`/usr/sbin/`)  
Étend la fonctionnalité de la commande standard **ifup**. Une fois que ce script a réécrit les fichiers de configuration `ifcfg-eth`*N* et `route-eth`*N*, il exécute **ifup**.

**ec2ifdown** eth*N* (`/usr/sbin/`)  
Étend la fonctionnalité de la commande standard **ifdown**. Une fois que le script a supprimé les règles pour l’interface réseau de la base de données des stratégies de routage, il exécute **ifdown**.

**ec2ifscan** (`/usr/sbin/`)  
Recherche les interfaces réseau qui n’ont pas été configurées et les configure.  
Ce script n’est pas disponible dans la version initiale de ec2-net-utils.

Pour répertorier les fichiers de configuration générés par ec2-net-utils, utilisez la commande suivante :

```
$ ls -l /etc/sysconfig/network-scripts/*-eth?
```

Pour désactiver l’automatisation, vous pouvez ajouter `EC2SYNC=no` au fichier `ifcfg-eth`*N* correspondant. Par exemple, utilisez la commande suivante pour désactiver l’automatisation pour l’interface eth1 :

```
$ sed -i -e 's/^EC2SYNC=yes/EC2SYNC=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
```

Pour désactiver complètement l’automatisation, vous pouvez supprimer le package à l’aide de la commande suivante :

```
$ yum remove ec2-net-utils
```

# Noyaux fournis par l’utilisateur
<a name="UserProvidedKernels"></a>

Si vous avez besoin d’un noyau personnalisé sur vos instances Amazon EC2, vous pouvez commencer avec une AMI qui est proche de ce que vous voulez, compiler le noyau personnalisé sur votre instance et mettre à jour le chargeur de démarrage pour pointer vers le nouveau noyau. Ce processus varie en fonction du type de virtualisation qu’utilise votre AMI. Pour plus d'informations, consultez la section [Types de virtualisation d'AMI Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html) dans le guide de l'*utilisateur Amazon EC2*.

**Topics**
+ [HVM AMIs (GRUB)](#HVM_instances)
+ [Paravirtuel AMIs (PV-GRUB)](#Paravirtual_instances)

## HVM AMIs (GRUB)
<a name="HVM_instances"></a>

Les volumes d’instance HVM sont traités comme des disques physiques réels. Le processus de démarrage est similaire à celui d’un système d’exploitation bare metal avec disque partitionné et programme d’amorçage, ce qui lui permet de travailler avec toutes les distributions Linux actuellement prises en charge. Le bootloader le plus courant est GRUB ou. GRUB2

Par défaut, GRUB n’envoie pas ses données de sortie à la console de l’instance car il crée un délai de démarrage supplémentaire. Pour plus d’informations, consultez [Sortie de la console de l’instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/troubleshoot-unreachable-instance.html#instance-console-console-output) dans le *Guide de l’utilisateur Amazon EC2*. Si vous installez un noyau personnalisé, vous devez envisager d’activer la sortie GRUB.

Vous n’avez pas besoin de spécifier un noyau de rechange, mais nous vous recommandons d’en avoir un lorsque vous testez un nouveau noyau. GRUB peut avoir recours à un autre noyau au cas où le nouveau noyau échoue. Le fait d’avoir un noyau de rechange permet à l’instance de démarrer même si le nouveau noyau n’est pas trouvé.

L'ancien GRUB pour Amazon Linux est utilisé`/boot/grub/menu.lst`. GRUB2 pour les AL2 usages`/etc/default/grub`. Pour plus d’informations sur la mise à jour du noyau par défaut dans le chargeur d’amorçage, consultez la documentation de votre distribution Linux.

## Paravirtuel AMIs (PV-GRUB)
<a name="Paravirtual_instances"></a>

AMIs qui utilisent la virtualisation paravirtuelle (PV) utilisent un système appelé *PV-GRUB* pendant le processus de démarrage. PV-GRUB est un programme d’amorçage paravirtuel qui exécute une version corrigée de GNU GRUB 0.97. Lorsque vous lancez une instance, PV-GRUB commence le processus de démarrage, puis charge en chaîne le noyau spécifié par le fichier `menu.lst` de votre image.

PV-GRUB comprend les commandes `grub.conf` ou `menu.lst` standard qui lui permettent de fonctionner avec toutes les distributions Linux actuellement prises en charge. Les distributions plus anciennes comme Ubuntu 10.04 LTS, Oracle Enterprise Linux ou CentOS 5.x ont besoin d’un package noyau spécial « ec2 » ou « xen » alors les distributions les plus récentes comprennent les pilotes nécessaires dans le package noyau par défaut.

La plupart des AMI de virtualisation paravirtuelle utilisent une PV-GRUB AKI par défaut (notamment l’ensemble des AMI Linux de virtualisation paravirtuelle dans le menu d’Amazon EC2 Launch Wizard Quick Start), donc il n’existe aucune autre étape supplémentaire que vous devez suivre pour utiliser un noyau différent sur votre instance, dans la mesure où le noyau que vous voulez utiliser est compatible avec votre distribution. La meilleure façon d’exécuter un noyau personnalisé sur une instance est de commencer avec une AMI qui est proche de ce que vous voulez, puis de compiler le noyau personnalisé sur votre instance et de modifier le fichier `menu.lst` pour démarrer avec ce noyau.

Vous pouvez vérifier que l’image du noyau d’une AMI est un AKI PV-GRUB. Exécutez la commande [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) suivante (en indiquant votre ID d’image de noyau) et vérifiez que le champ `Name` commence par `pv-grub` :

```
aws ec2 describe-images --filters Name=image-id,Values=aki-880531cd
```

**Topics**
+ [Restrictions de PV-GRUB](#pv-grub-limitations)
+ [Configuring GRUB](#configuringGRUB)
+ [Image du noyau Amazon PV-GRUB IDs](#AmazonKernelImageIDs)
+ [Mise à jour PV-GRUB](#UpdatingPV-GRUB)

### Restrictions de PV-GRUB
<a name="pv-grub-limitations"></a>

PV-GRUB possède les restrictions suivantes :
+ Vous ne pouvez pas utiliser la version 64 bit de PV-GRUB pour lancer un noyau 32 bits ou vice versa.
+ Vous ne pouvez pas spécifier une image ramdisk Amazon (ARI) lorsque vous utilisez une PV-GRUB AKI.
+ AWS a testé et vérifié que PV-GRUB fonctionne avec les formats de système de fichiers suivants : EXT2,,, JFS EXT3 EXT4, XFS et ReiserFS. Il se peut que d’autres formats de système de fichiers ne fonctionnent pas.
+ PV-GRUB peut démarrer les noyaux compressés à l’aide de formats de compression gzip, bzip2, lzo et xz.
+ Les clusters AMIs ne prennent pas en charge ou n'ont pas besoin de PV-GRUB, car ils utilisent la virtualisation matérielle complète (HVM). Tandis que les instances paravirtuelles utilisent PV-GRUB pour le démarrage, les volumes d’instances HVM sont traités comme de véritables disques et le processus de démarrage est similaire au processus de démarrage d’un système d’exploitation bare metal avec un disque divisé et un chargeur de démarrage. 
+ Les versions PV-GRUB 1.03 et antérieures ne prennent pas en charge le partitionnement GPT. Elles prennent uniquement en charge le partitionnement MBR.
+ Si vous comptez utiliser un gestionnaire par volumes logiques (LVM) avec des volumes Amazon Elastic Block Store (Amazon EBS), vous avez besoin d’une partition de démarrage séparée externe au LVM. Puis, vous pouvez créer des volumes logiques avec le LVM.

### Configurer GRUB pour le paravirtual AMIs
<a name="configuringGRUB"></a>

Pour démarrer PV-GRUB, un fichier `menu.lst` GRUB doit exister dans l’image. L’emplacement le plus commun de ce fichier est `/boot/grub/menu.lst`.

Ce qui suit est un exemple d’un fichier de configuration `menu.lst` pour le démarrage d’une AMI avec une AKI PV-GRUB. Dans cet exemple, un choix de deux entées noyau est proposé : Amazon Linux 03/2018 (le noyau original pour cette AMI) et Vanilla Linux 4.16.4 (une version plus récente du noyau Vanilla Linux de [https://www.kernel.org/)](https://www.kernel.org/). L’entrée Vanilla a été copiée de l’entrée originale pour cette AMI et les chemins `kernel` et `initrd` ont été mis à jour par rapport aux nouveaux emplacements. Le paramètre `default 0` pointe le programme d’amorçage vers la première entrée qu’il voit (dans ce cas, l’entrée Vanilla) et le paramètre `fallback 1` pointe le programme d’amorçage vers la prochaine entrée s’il existe un problème lors du démarrage du premier.

```
default 0
fallback 1
timeout 0
hiddenmenu

title Vanilla Linux 4.16.4
root (hd0)
kernel /boot/vmlinuz-4.16.4 root=LABEL=/ console=hvc0
initrd /boot/initrd.img-4.16.4

title Amazon Linux 2018.03 (4.14.26-46.32.amzn1.x86_64)
root (hd0)
kernel /boot/vmlinuz-4.14.26-46.32.amzn1.x86_64 root=LABEL=/ console=hvc0
initrd /boot/initramfs-4.14.26-46.32.amzn1.x86_64.img
```

Vous ne devez pas spécifier un noyau de rechange dans votre fichier `menu.lst`, mais nous vous recommandons d’en avoir un lorsque vous tester un nouveau noyau. PV-GRUB peut avoir recours à un autre noyau au cas où le nouveau noyau échoue. Le fait d’avoir un noyau de rechange permet à l’instance de démarrer même si le nouveau noyau n’est pas trouvé. 

PV-GRUB vérifie les emplacements suivants pour `menu.lst` en utilisant le premier qu’il trouve :
+  `(hd0)/boot/grub` 
+  `(hd0,0)/boot/grub` 
+  `(hd0,0)/grub` 
+  `(hd0,1)/boot/grub` 
+  `(hd0,1)/grub` 
+  `(hd0,2)/boot/grub` 
+  `(hd0,2)/grub` 
+  `(hd0,3)/boot/grub` 
+  `(hd0,3)/grub` 

Notez que les versions PV-GRUB 1.03 et antérieures ne vérifient que l’un des deux premiers emplacements de cette liste.

### Image du noyau Amazon PV-GRUB IDs
<a name="AmazonKernelImageIDs"></a>

Les AKI PV-GRUB sont disponibles dans toutes les régions Amazon EC2, excepté Asie-Pacifique (Osaka). Il existe AKIs des types d'architecture 32 bits et 64 bits. La plupart des modèles modernes AMIs utilisent un PV-GRUB AKI par défaut.

Nous vous recommandons de toujours utiliser la dernière version de l’AKI PV-GRUB, car les versions de l’AKI PV-GRUB ne sont pas toutes compatibles avec les types d’instance. Utilisez la commande [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) suivante pour obtenir la liste des PV-GRUB AKIs pour la région actuelle :

```
aws ec2 describe-images --owners amazon --filters Name=name,Values=pv-grub-*.gz
```

PV-GRUB est la seule AKI disponible dans la région `ap-southeast-2`. Vous devriez vérifier que toutes les AMI que vous voulez copier vers cette région utilisent une version de PV-GRUB qui est disponible dans cette région.

Voici l'AKI actuel IDs pour chaque région. Enregistrez un nouveau fichier AMIs à l'aide d'un HD0 AKI.

**Note**  
Nous continuons à fournir le hd00 à AKIs des fins de rétrocompatibilité dans les régions où il était auparavant disponible.


**ap-northeast-1, Asia Pacific (Tokyo)**  

| ID de l’image | Nom de l’image | 
| --- | --- | 
|  aki-f975a998  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-7077ab11  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**ap-southeast-1, Asia Pacific (Singapore) Region**  

| ID de l’image | Nom de l’image | 
| --- | --- | 
|  aki-17a40074  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-73a50110  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**ap-southeast-2, Asia Pacific (Sydney)**  

| ID de l’image | Nom de l’image | 
| --- | --- | 
|  aki-ba5665d9  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-66506305  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**eu-central-1, Europe (Frankfurt)**  

| ID de l’image | Nom de l’image | 
| --- | --- | 
|  aki-1419e57b  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-931fe3fc  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**eu-west-1, Europe (Ireland)**  

| ID de l’image | Nom de l’image | 
| --- | --- | 
|  aki-1c9fd86f  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-dc9ed9af  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**sa-east-1, South America (São Paulo)**  

| ID de l’image | Nom de l’image | 
| --- | --- | 
|  aki-7cd34110  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-912fbcfd  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**us-east-1, US East (N. Virginia)**  

| ID de l’image | Nom de l’image | 
| --- | --- | 
|  aki-04206613  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-5c21674b  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**us-gov-west-1, AWS GovCloud (US-Ouest)**  

| ID de l’image | Nom de l’image | 
| --- | --- | 
|  aki-5ee9573f  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-9ee55bff  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**us-west-1, US West (N. California)**  

| ID de l’image | Nom de l’image | 
| --- | --- | 
|  aki-43cf8123  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-59cc8239  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**us-west-2, US West (Oregon)**  

| ID de l’image | Nom de l’image | 
| --- | --- | 
|  aki-7a69931a  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-70cb0e10  |  pv-grub-hd0\$11.05-x86\$164.gz  | 

### Mise à jour PV-GRUB
<a name="UpdatingPV-GRUB"></a>

Nous vous recommandons de toujours utiliser la dernière version de l’AKI PV-GRUB, car les versions de l’AKI PV-GRUB ne sont pas toutes compatibles avec les types d’instance. De plus, les versions les plus anciennes de PV-GRUB ne sont pas disponibles dans toutes les régions. Si vous copiez une AMI qui utilise une version plus ancienne pour une région que ne prend pas en charge cette version, vous ne pourrez donc pas démarrer des instances lancées à partir d’une AMI jusqu’à ce que vous mettiez à jour l’image noyau. Utilisez les procédures suivantes pour vérifier la version de PV-GRUB de votre instance et la mettre à jour si nécessaire.

**Pour vérifier votre version de PV-GRUB**

1. Trouvez l’ID noyau pour votre instance.

   ```
   aws ec2 describe-instance-attribute --instance-id instance_id --attribute kernel --region region
   
   {
       "InstanceId": "instance_id", 
       "KernelId": "aki-70cb0e10"
   }
   ```

   L’ID noyau pour cette instance est `aki-70cb0e10`.

1. Consultez les informations sur la version de cet ID noyau.

   ```
   aws ec2 describe-images --image-ids aki-70cb0e10 --region region
   
   {
       "Images": [
           {
               "VirtualizationType": "paravirtual", 
               "Name": "pv-grub-hd0_1.05-x86_64.gz", 
               ...
               "Description": "PV-GRUB release 1.05, 64-bit"
           }
       ]
   }
   ```

   Cette image noyau est PV-GRUB 1.05. Si votre version PV-GRUB n’est pas la plus récente (comme indiqué dans le didacticiel [Image du noyau Amazon PV-GRUB IDs](#AmazonKernelImageIDs)), vous devriez la mettre à jour en suivant la procédure ci-dessous.

**Pour mettre à jour votre version de PV-GRUB**

Si votre instance utilise une version de PV-GRUB plus ancienne, vous devriez la mettre à jour.

1. Identifiez le dernier PV-GRUB AKI pour votre région et l’architecture de processeur à partir de [Image du noyau Amazon PV-GRUB IDs](#AmazonKernelImageIDs).

1. Arrêtez votre instance. Votre instance doit être arrêtée pour modifier l’image noyau utilisée.

   ```
   aws ec2 stop-instances --instance-ids instance_id --region region
   ```

1. Modifiez l’image noyau utilisée pour votre instance.

   ```
   aws ec2 modify-instance-attribute --instance-id instance_id --kernel kernel_id --region region
   ```

1. Redémarrez votre instance.

   ```
   aws ec2 start-instances --instance-ids instance_id --region region 
   ```

# AL2 Notifications de publication de l'AMI
<a name="linux-ami-notifications"></a>

Pour être informé de la sortie de nouveaux Amazon Linux AMIs , vous pouvez vous abonner via Amazon SNS.

Pour plus d'informations sur l'abonnement aux notifications pour AL2023, consultez la section [Recevoir des notifications sur les nouvelles mises à jour](https://docs.aws.amazon.com/linux/al2023/ug/receive-update-notification.html) dans le *guide de l'utilisateur Amazon Linux 2023*.

**Note**  
Le support standard pour AL1 a pris fin le 31 décembre 2020. La phase AL1 de support de maintenance s'est terminée le 31 décembre 2023. Pour plus d'informations sur l' AL1 EOL et le support de maintenance, consultez le billet de blog [Update on Amazon Linux AMI end-of-life](https://aws.amazon.com/blogs/aws/update-on-amazon-linux-ami-end-of-life/).

**Pour s’abonner aux notifications Amazon Linux**

1. [Ouvrez la console Amazon SNS à l'adresse v3/home. https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/v3/home)

1. Dans la barre de navigation, changez la région en **US Est (Virginie du Nord)**, si nécessaire. Vous devez sélectionner la région dans laquelle la notification SNS à laquelle vous vous abonnez a été créée.

1. Dans le panneau de navigation, choisissez **Abonnements**, puis **Créer un abonnement**.

1. Dans la boîte de dialogue **Créer un abonnement**, procédez comme suit :

   1. [AL2] Pour **ARN de la rubrique**, copiez et collez l'Amazon Resource Name (ARN) suivant : **arn:aws:sns:us-east-1:137112412989:amazon-linux-2-ami-updates**.

   1. [Amazon Linux] Pour **ARN de la rubrique**, copiez et collez l’Amazon Resource Name (ARN) suivant : **arn:aws:sns:us-east-1:137112412989:amazon-linux-ami-updates**.

   1. Pour **Protocole**, choisissez **E-mail**.

   1. Pour **Point de terminaison**, entrez une adresse e-mail que vous pouvez utiliser pour recevoir les notifications.

   1. Choisissez **Créer un abonnement**.

1. Vous recevez un e-mail de confirmation dont l'objet est « AWS  Notification - Confirmation d'abonnement ». Ouvrez l’e-mail et choisissez **Confirm subscription (Confirmer l’abonnement)** pour terminer votre abonnement.

Chaque fois qu' AMIs elles sont publiées, nous envoyons des notifications aux abonnés du sujet correspondant. Pour arrêter de recevoir ces notifications, utilisez la procédure suivante pour vous désabonner.

**Pour annuler votre abonnement aux notifications Amazon Linux**

1. [Ouvrez la console Amazon SNS à l'adresse v3/home. https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/v3/home)

1. Dans la barre de navigation, changez la région en **US Est (Virginie du Nord)**, si nécessaire. Vous devez utiliser la région dans laquelle la notification SNS a été créée.

1. Dans le panneau de navigation, sélectionnez **Abonnements**, sélectionnez l’abonnement, puis **Actions**, **Supprimer des abonnements**.

1. Lorsque vous êtes invité à confirmer l’opération, choisissez **Supprimer**.

**Format du message Amazon Linux AMI SNS**  
Le schéma du message SNS est le suivant. 

```
{
    "description": "Validates output from AMI Release SNS message",
    "type": "object",
    "properties": {
        "v1": {
            "type": "object",
            "properties": {
                "ReleaseVersion": {
                    "description": "Major release (ex. 2018.03)",
                    "type": "string"
                },
                "ImageVersion": {
                    "description": "Full release (ex. 2018.03.0.20180412)",
                    "type": "string"
                },
                "ReleaseNotes": {
                    "description": "Human-readable string with extra information",
                    "type": "string"
                },
                "Regions": {
                    "type": "object",
                    "description": "Each key will be a region name (ex. us-east-1)",
                    "additionalProperties": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "Name": {
                                    "description": "AMI Name (ex. amzn-ami-hvm-2018.03.0.20180412-x86_64-gp2)",
                                    "type": "string"
                                },
                                "ImageId": {
                                    "description": "AMI Name (ex.ami-467ca739)",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "Name",
                                "ImageId"
                            ]
                        }
                    }
                }
            },
            "required": [
                "ReleaseVersion",
                "ImageVersion",
                "ReleaseNotes",
                "Regions"
            ]
        }
    },
    "required": [
        "v1"
    ]
}
```

# Configuration de la connexion au bureau AL2 MATE
<a name="amazon-linux-ami-mate"></a>

L'[environnement de bureau MATE](https://mate-desktop.org/) est préinstallé et préconfiguré AMIs avec la description suivante :

"`.NET Core x.x, Mono x.xx, PowerShell x.x, and MATE DE pre-installed to run your .NET applications on Amazon Linux 2 with Long Term Support (LTS).`"

L'environnement fournit une interface utilisateur graphique intuitive pour administrer les instances AL2 en ayant très peu recours à la ligne de commande. L’interface utilise des représentations graphiques, telles que des icônes, des fenêtres, des barres d’outils, des dossiers, des fonds d’écran et des widgets de bureau. Des outils intégrés basés sur l’interface graphique sont disponibles pour effectuer des tâches courantes. Par exemple, il existe des outils pour ajouter et supprimer des logiciels, appliquer des mises à jour, organiser des fichiers, lancer des programmes et surveiller l’intégrité du système.

**Important**  
`xrdp` est le logiciel de bureau à distance fourni dans l’AMI. Par défaut, `xrdp` utilise un certificat TLS auto-signé pour chiffrer les sessions de bureau à distance. AWS Ni les `xrdp` responsables ne recommandent d'utiliser des certificats auto-signés en production. Au lieu de cela, procurez-vous un certificat auprès d’une autorité de certification appropriée et installez-le sur vos instances. Pour plus d’informations sur la configuration TLS, consultez la rubrique [Couche de sécurité TLS](https://github.com/neutrinolabs/xrdp/wiki/TLS-security-layer) sur le wiki `xrdp`.

**Note**  
Si vous préférez utiliser un service de réseau virtuel (VNC) au lieu de xrdp, consultez l'article [Comment installer une interface graphique sur mon instance Amazon EC2 exécutant](https://repost.aws/knowledge-center/ec2-linux-2-install-gui) le Knowledge Center. AL2 AWS 

## Prérequis
<a name="al2-mate-configure-prerequisite"></a>

Pour exécuter les commandes présentées dans cette rubrique, vous devez installer le AWS Command Line Interface (AWS CLI) ou AWS Tools for Windows PowerShell, et configurer votre AWS profil.

**Options**

1. Installer le AWS CLI — Pour plus d'informations, consultez la section [Installation des principes de base de la](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html) [configuration AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) et du *guide de AWS Command Line Interface l'utilisateur*.

1. Installation des outils pour Windows PowerShell  : pour plus d'informations, consultez la section [Installation des informations d'identification AWS Tools for Windows PowerShell et des](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html) [informations d'identification partagées](https://docs.aws.amazon.com/powershell/latest/userguide/shared-credentials-in-aws-powershell.html) dans le *guide de Outils AWS pour PowerShell l'utilisateur*.

**Astuce**  
Au lieu de procéder à une installation complète du AWS CLI, vous pouvez utiliser [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)un shell pré-authentifié basé sur un navigateur qui se lance directement depuis le. AWS Management Console Vérifiez le [Régions AWS support](https://docs.aws.amazon.com/cloudshell/latest/userguide/supported-aws-regions.html) pour vous assurer qu'il est disponible dans la région dans laquelle vous travaillez.

## Configurer la connexion RDP
<a name="al2-mate-configure-connection"></a>

Procédez comme suit pour configurer une connexion RDP (Remote Desktop Protocol) à partir de votre ordinateur local vers une instance AL2 exécutant l'environnement de bureau MATE.

1. Pour obtenir l'ID de l'AMI AL2 dont le nom inclut MATE, vous pouvez utiliser la commande [describe-images](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-images.html) depuis votre outil de ligne de commande local. Si vous n'avez pas installé les outils de ligne de commande, vous pouvez exécuter la requête suivante directement depuis une AWS CloudShell session. Pour plus d'informations sur le lancement d'une session shell depuis CloudShell, consultez [Getting started with AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html). À partir de la console Amazon EC2, vous pouvez trouver l’AMI qui inclut MATE en lançant une instance, puis en entrant `MATE` dans la barre de recherche de l’AMI. Le AL2 Quick Start avec MATE préinstallé apparaîtra dans les résultats de recherche.

   ```
   aws ec2 describe-images --filters "Name=name,Values=amzn2*MATE*" --query "Images[*].[ImageId,Name,Description]"
   [
       [
           "ami-0123example0abc12",
           "amzn2-x86_64-MATEDE_DOTNET-2020.12.04",
           ".NET Core 5.0, Mono 6.12, PowerShell 7.1, and MATE DE pre-installed to run your .NET applications on Amazon Linux 2 with Long Term Support (LTS)."
       ],
       [
           "ami-0456example0def34",
           "amzn2-x86_64-MATEDE_DOTNET-2020.04.14",
           "Amazon Linux 2 with .Net Core, PowerShell, Mono, and MATE Desktop Environment"
       ]
   ]
   ```

   Choisir l’AMI qui convient à votre utilisation.

1. Lancez une instance EC2 avec l’AMI que vous avez localisée à l’étape précédente. Configurez le groupe de sécurité pour autoriser le trafic TCP entrant vers le port 3389. Pour plus d’informations sur les groupes de sécurité, consultez [Groupes de sécurité pour votre VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html). Cette configuration vous permet d’utiliser un client RDP pour vous connecter à l’instance.

1. Connectez-vous à l’instance à l’aide de [SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html).

1. Mettez à jour le logiciel et le noyau de l’instance.

   ```
   [ec2-user ~]$ sudo yum update
   ```

   Une fois la mise à jour terminée, redémarrez l’instance pour vous assurer qu’elle utilise les derniers packages et bibliothèques de la mise à jour ; les mises à jour du noyau ne sont pas chargées jusqu’au prochain redémarrage.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Reconnectez-vous à l’instance et exécutez la commande suivante sur votre instance Linux pour définir le mot de passe pour `ec2-user`.

   ```
   [ec2-user ~]$ sudo passwd ec2-user
   ```

1. Installez le certificat et la clé.

   Si vous disposez déjà d’un certificat et d’une clé, copiez-les dans le répertoire `/etc/xrdp/` comme suit :
   + Certificat — `/etc/xrdp/cert.pem`
   + Clé : `/etc/xrdp/key.pem` 

   Si vous ne possédez pas de certificat et de clé, utilisez la commande suivante pour les générer dans le répertoire `/etc/xrdp`.

   ```
   $ sudo openssl req -x509 -sha384 -newkey rsa:3072 -nodes -keyout /etc/xrdp/key.pem -out /etc/xrdp/cert.pem -days 365
   ```
**Note**  
Cette commande génère un certificat valide pendant 365 jours.

1. Ouvrez un client RDP sur l’ordinateur à partir duquel vous vous connecterez à l’instance (par exemple, Connexion Bureau à distance sur un ordinateur sous Microsoft Windows). Saisissez `ec2-user` comme nom d’utilisateur et entrez le mot de passe que vous avez défini à l’étape précédente.

**Pour désactiver `xrdp` sur votre instance Amazon EC2**  
Vous pouvez désactiver `xrdp` à tout moment en exécutant l’une des commandes suivantes sur votre instance Linux. Les commandes suivantes n’ont aucune incidence sur votre capacité à utiliser MATE à l’aide d’un serveur X11.

```
[ec2-user ~]$ sudo systemctl disable xrdp
```

```
[ec2-user ~]$ sudo systemctl stop xrdp
```

**Pour activer `xrdp` sur votre instance Amazon EC2**  
Pour le réactiver `xrdp` afin de pouvoir vous connecter à votre AL2 instance exécutant l'environnement de bureau MATE, exécutez l'une des commandes suivantes sur votre instance Linux.

```
[ec2-user ~]$ sudo systemctl enable xrdp
```

```
[ec2-user ~]$ sudo systemctl start xrdp
```

# AL2 Tutoriels
<a name="al2-tutorials"></a>

 Les didacticiels suivants vous montrent comment effectuer des tâches courantes à l'aide d'instances Amazon EC2 en cours d'exécution. AL2 Pour les didacticiels vidéo, voir [Vidéos AWS pédagogiques et ateliers](https://www.aws.training/). 

Pour AL2023 obtenir des instructions, consultez les [didacticiels](https://docs.aws.amazon.com/linux/al2023/ug/tutorials-al2023.html) du *guide de l'utilisateur Amazon Linux 2023*.

**Topics**
+ [Tutoriel : Installation d'un serveur LAMP sur AL2](ec2-lamp-amazon-linux-2.md)
+ [Tutoriel : Configuration SSL/TLS sur AL2](SSL-on-amazon-linux-2.md)
+ [Tutoriel : héberger un WordPress blog sur AL2](hosting-wordpress.md)

# Tutoriel : Installation d'un serveur LAMP sur AL2
<a name="ec2-lamp-amazon-linux-2"></a>

Les procédures suivantes vous aident à installer un serveur Web Apache compatible avec PHP et [MariaDB](https://mariadb.org/about/) (un fork de MySQL développé par la communauté) AL2 sur votre instance (parfois appelé serveur Web LAMP ou stack LAMP). Vous pouvez utiliser ce serveur pour héberger un site web statique ou déployer une application PHP dynamique qui lit et écrit des informations sur une base de données.

**Important**  
Si vous essayez de configurer un serveur Web LAMP sur une autre distribution, comme Ubuntu ou Red Hat Enterprise Linux, ce tutoriel ne fonctionnera pas. Pour AL2023, voir [Installer un serveur LAMP sur AL2023](https://docs.aws.amazon.com//linux/al2023/ug/ec2-lamp-amazon-linux-2023.html). Pour Ubuntu, consultez la documentation de la communauté Ubuntu suivante : [ApacheMySQLPHP](https://help.ubuntu.com/community/ApacheMySQLPHP). Pour les autres distributions, consultez leur documentation spécifique.

**Option : Effectuer ce tutoriel en utilisant Automation**  
Pour terminer ce didacticiel en utilisant AWS Systems Manager Automation au lieu des tâches suivantes, exécutez le [AWS document Docs-Install ALAMPServer - AL2](https://console.aws.amazon.com/systems-manager/automation/execute/AWSDocs-InstallALAMPServer-AL2) Automation.

**Topics**
+ [Étape 1 : Préparer le serveur LAMP](#prepare-lamp-server)
+ [Étape 2 : Tester votre serveur LAMP](#test-lamp-server)
+ [Étape 3 : Sécuriser le serveur de base de données](#secure-mariadb-lamp-server)
+ [Étape 4 : (facultatif) Installation phpMyAdmin](#install-phpmyadmin-lamp-server)
+ [Dépannage](#lamp-troubleshooting)
+ [Rubriques en relation](#lamp-more-info)

## Étape 1 : Préparer le serveur LAMP
<a name="prepare-lamp-server"></a>

**Conditions préalables**
+ Ce didacticiel suppose que vous avez déjà lancé une nouvelle instance en utilisant AL2, avec un nom DNS public accessible depuis Internet. Pour plus d'informations, consultez [Lancer une instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) dans le guide de l'*utilisateur Amazon EC2*. Vous devez aussi avoir configuré votre groupe de sécurité pour permettre les connexions SSH (port 22), HTTP (port 80) et HTTPS (port 443). Pour plus d'informations sur ces prérequis, consultez la section [Règles relatives aux groupes de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules.html) dans le guide de l'*utilisateur Amazon EC2.*
+ La procédure suivante installe la dernière version de PHP actuellement `php8.2` disponible sur AL2. Si vous prévoyez d’utiliser d’autres applications PHP que celles décrites dans ce didacticiel, vous pouvez vérifier qu’elles sont compatibles avec `php8.2`.<a name="install_apache-2"></a>

**Pour préparer le serveur LAMP**

1. [Connectez-vous à votre instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html).

1. Pour vous assurer que tous vos packages logiciels sont mis à jour, effectuez une mise à jour logicielle rapide sur votre instance. Ce processus peut prendre quelques minutes, mais il est important pour vous assurer que vous disposez des dernières mises à jour de sécurité et des nouveaux correctifs de bogues.

   L’option `-y` installe les mises à jour sans demander de confirmation. Si vous souhaitez examiner les mises à jour avant l’installation, vous pouvez omettre cette option.

   ```
   [ec2-user ~]$ sudo yum update -y
   ```

1. Installez les référentiels supplémentaires Amazon Linux `mariadb10.5` pour obtenir la dernière version du package MariaDB.

   ```
   [ec2-user ~]$ sudo amazon-linux-extras install mariadb10.5
   ```

   Si vous recevez l’erreur `sudo: amazon-linux-extras: command not found`, votre instance n’a pas été lancée avec une AMI Amazon Linux 2 (vous utilisez peut-être l’AMI Amazon Linux). Vous pouvez afficher votre version d'Amazon Linux avec la commande suivante

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

1. Installez les référentiels `php8.2` Amazon Linux Extras pour obtenir la dernière version du PHP package pour AL2.

   ```
   [ec2-user ~]$ sudo amazon-linux-extras install php8.2
   ```

1. Maintenant que votre instance est à jour, vous pouvez installer le serveur web Apache, MariaDB et les packages logiciels PHP. Utilisez la commande yum install pour installer plusieurs packages logiciels et toutes les dépendances associées au même moment.

   ```
   [ec2-user ~]$ sudo yum install -y httpd
   ```

   Vous pouvez afficher les versions actuelles de ces packages avec la commande suivante :

   ```
   yum info package_name
   ```

1. Démarrez le serveur web Apache.

   ```
   [ec2-user ~]$ sudo systemctl start httpd
   ```

1.  Utilisez la commande **systemctl** pour configurer le serveur Web Apache afin qu’il soit lancé à chaque démarrage système. 

   ```
   [ec2-user ~]$ sudo systemctl enable httpd
   ```

   Vous pouvez vérifier que **httpd** est activé en exécutant la commande suivante :

   ```
   [ec2-user ~]$ sudo systemctl is-enabled httpd
   ```

1. Ajoutez une règle de sécurité pour autoriser les connexions HTTP entrantes (port 80) à votre instance si vous ne l’avez pas déjà fait. Par défaut, un groupe de *N* sécurité **avec assistant de lancement** a été configuré pour votre instance lors de l'initialisation. Ce groupe contient une règle unique pour autoriser les connexions SSH. 

   1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Choisissez **instances** et sélectionnez votre instance.

   1. Sous l’onglet **Sécurité**, affichez les règles entrantes. Vous devriez voir la règle suivante :

      ```
      Port range   Protocol     Source
      22           tcp          0.0.0.0/0
      ```
**Avertissement**  
L'utilisation `0.0.0.0/0` permet à toutes les IPv4 adresses d'accéder à votre instance via SSH. Cette solution 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, vous autorisez uniquement l’accès à votre instance pour une adresse IP ou une plage d’adresses spécifiques.

   1. Choisissez le lien pour le groupe de sécurité. À l'aide des procédures [décrites dans Ajouter des règles à un groupe de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule), ajoutez une nouvelle règle de sécurité entrante avec les valeurs suivantes :
      + **Type** : HTTP
      + **Protocole** : TCP
      + **Plage de ports** : 80
      + **Source** : Personnalisé

1. Testez votre serveur web. Dans un navigateur web, saisissez l’adresse DNS publique (ou l’adresse IP publique) de votre instance. S'il n'existe aucun contenu dans `/var/www/html`, vous devriez voir la page test Apache. Vous pouvez obtenir le DNS public de votre instance en utilisant la console Amazon EC2 (vérifiez la colonne **DNS public** ; si cette colonne est masquée, choisissez l’icône **Afficher/Masquer les colonnes** (icône en forme d’engrenage) et sélectionnez **DNS public**).

   Vérifiez que le groupe de sécurité de l’instance contient une règle autorisant le trafic HTTP sur le port 80. Pour plus d'informations, voir [Ajouter des règles au groupe de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).
**Important**  
Si vous n’utilisez pas Amazon Linux, il se peut que vous deviez aussi configurer le pare-feu sur votre instance pour autoriser ces connexions. Pour obtenir plus d’informations sur la configuration du pare-feu, consultez la documentation de votre distribution spécifique.  
![\[Le test du serveur affiche la page de test d'Apache.\]](http://docs.aws.amazon.com/fr_fr/linux/al2/ug/images/apache_test_page_al2_2.4.png)

La commande **httpd** traite les fichiers qui sont conservés dans un répertoire appelé racine du document Apache. La racine du document Apache d’Amazon Linux est `/var/www/html` qui est détenu par défaut par la racine.

Pour autoriser le compte `ec2-user` à manipuler les fichiers de ce répertoire, vous devez modifier la propriété et les autorisations du répertoire. 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.<a name="setting-file-permissions-2"></a>

**Pour définir les autorisations sur les fichiers**

1. Ajoutez votre utilisateur (dans ce cas, `ec2-user`) au groupe `apache`.

   ```
   [ec2-user ~]$ sudo usermod -a -G apache ec2-user
   ```

1. Déconnectez-vous, puis reconnectez-vous pour sélectionner le nouveau groupe, puis vérifiez votre adhésion.

   1. Déconnectez-vous (utilisez la commande **exit** ou fermez la fenêtre de terminal) :

      ```
      [ec2-user ~]$ exit
      ```

   1. Pour vérifier votre adhésion au groupe `apache`, reconnectez-vous à votre instance, puis exécutez la commande suivante :

      ```
      [ec2-user ~]$ groups
      ec2-user adm wheel apache systemd-journal
      ```

1. Remplacez la propriété de groupe de `/var/www` et son contenu par le groupe `apache`.

   ```
   [ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
   ```

1. Pour ajouter des autorisations d’écriture de groupe et définir l’ID de groupe pour les futurs sous-répertoires, modifiez les autorisations sur les répertoires de `/var/www` et ses sous-répertoires.

   ```
   [ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. Pour ajouter des autorisations d’écriture de groupe, modifiez de façon récursive les autorisations sur les fichiers de `/var/www` et ses sous-répertoires :

   ```
   [ec2-user ~]$ 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. Vous pouvez ainsi ajouter du contenu, tel qu’un site Web statique ou une application PHP.

**Pour sécuriser votre serveur web (facultatif)**  
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 à l'aide d'un navigateur Web, 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 que vous soumettez sont visibles par les espions partout sur le réseau. Les bonnes pratiques en matière de sécurisation de votre serveur web consistent à installer la prise en charge HTTPS (HTTP Secure), qui protège vos données grâce au chiffrement SSL/TLS.

Pour plus d’informations sur l’activation de HTTPS sur votre serveur, consultez [Tutoriel : Configuration SSL/TLS sur AL2](SSL-on-amazon-linux-2.md).

## Étape 2 : Tester votre serveur LAMP
<a name="test-lamp-server"></a>

Si votre serveur est installé et en cours d'exécution, et que vos autorisations sur les fichiers sont correctement définies, votre compte `ec2-user` doit pouvoir créer un fichier PHP simple dans le répertoire `/var/www/html` qui est disponible à partir d'Internet.

**Pour tester votre serveur LAMP**

1. Créez un fichier PHP à la racine du document Apache.

   ```
   [ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
   ```

   Si l’erreur « Permission denied » s’affiche lorsque vous essayez d’exécuter cette commande, essayez de vous déconnecter et de vous reconnecter pour récupérer les autorisations d’un groupe que vous avez configurées dans [Pour définir les autorisations sur les fichiers](#setting-file-permissions-2).

1. Dans un navigateur web, saisissez l’URL du fichier que vous venez de créer. Cette URL est l’adresse DNS publique de votre instance suivie par une barre oblique et le nom du fichier. Exemples :

   ```
   http://my.public.dns.amazonaws.com/phpinfo.php
   ```

   Vous devriez voir la page d’informations PHP:  
![\[Le test du serveur LAMP affiche la page d'informations PHP.\]](http://docs.aws.amazon.com/fr_fr/linux/al2/ug/images/phpinfo7.2.10.png)

   Si vous ne voyez pas cette page, vérifiez que le fichier `/var/www/html/phpinfo.php` a été créé correctement à l’étape précédente. Vous pouvez également vérifier que les packages requis ont été installés avec la commande suivante.

   ```
   [ec2-user ~]$ sudo yum list installed httpd mariadb-server php-mysqlnd
   ```

   Si l’un des packages requis n’est pas présent dans votre sortie, installez-les avec la commande **sudo yum install *package***. Vérifiez également que les référentiels supplémentaires `php7.2` et `lamp-mariadb10.2-php7.2` sont activés dans la sortie de la commande **amazon-linux-extras**.

1. Supprimez le fichier `phpinfo.php`. Même si ces informations peuvent vous être utiles, elles ne doivent pas être diffusées sur Internet pour des raisons de sécurité.

   ```
   [ec2-user ~]$ rm /var/www/html/phpinfo.php
   ```

Vous devriez maintenant avoir un serveur web LAMP entièrement fonctionnel. Si vous ajoutez un contenu à la racine du document Apache à l'emplacement `/var/www/html`, vous devez pouvoir voir ce contenu à l'adresse du DNS public de votre instance. 

## Étape 3 : Sécuriser le serveur de base de données
<a name="secure-mariadb-lamp-server"></a>

L’installation par défaut du serveur MariaDB possède plusieurs fonctions qui sont parfaites pour les tests et le développement, mais elles devraient être désactivées ou supprimées des serveurs de production. La commande **mysql\$1secure\$1installation** vous guide à travers le processus de paramétrage d’un mot de passe racine et de suppression des fonctions non sécurisées de votre installation. Même si vous ne comptez pas utiliser le serveur MariaDB, nous vous recommandons de suivre cette procédure.<a name="securing-maria-db"></a>

**Pour sécuriser le serveur MariaDB**

1. Démarrez le serveur MariaDB.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Exécutez **mysql\$1secure\$1installation**.

   ```
   [ec2-user ~]$ sudo mysql_secure_installation
   ```

   1. A l’invite, saisissez un mot de passe pour le compte racine.

      1. Saisissez le mot de passe racine actuel. Par défaut, le compte racine n’a pas de mot de passe défini. Appuyez sur Entrée.

      1. Tapez **Y** pour définir un mot de passe et saisissez deux fois un mot de passe sécurisé. Pour plus d'informations sur la création d'un mot de passe sécurisé, consultez [https://identitysafe.norton.com/password-generator/](https://identitysafe.norton.com/password-generator/). Assurez-vous de stocker ce mot de passe en lieu sûr.

         La mesure la plus simple pour sécuriser votre base de données consiste à définir un mot de passe racine pour MariaDB. Lorsque vous concevez ou installez une application reposant sur une base de données, vous devez généralement créer un utilisateur de services de base de données pour cette application et éviter d’utiliser le compte racine, sauf pour administrer la base de données. 

   1. Tapez **Y** pour supprimer les comptes d’utilisateur anonymes.

   1. Tapez **Y** pour désactiver la connexion racine à distance.

   1. Tapez **Y** pour supprimer la base de données de test.

   1. Tapez **Y** pour recharger les tableaux de privilèges et enregistrer vos changements.

1. (Facultatif) Si vous ne comptez pas utiliser le serveur MariaDB tout de suite, arrêtez-le. Vous pouvez le redémarrer lorsque vous en avez de nouveau besoin.

   ```
   [ec2-user ~]$ sudo systemctl stop mariadb
   ```

1. (Facultatif) Si vous voulez que le serveur MariaDB soit lancé à chaque démarrage, saisissez la commande suivante.

   ```
   [ec2-user ~]$ sudo systemctl enable mariadb
   ```

## Étape 4 : (facultatif) Installation phpMyAdmin
<a name="install-phpmyadmin-lamp-server"></a>

[phpMyAdmin](https://www.phpmyadmin.net/)est un outil de gestion de base de données basé sur le Web que vous pouvez utiliser pour afficher et modifier les bases de données MySQL sur votre instance EC2. Suivez les étapes ci-dessous pour installer et configurer `phpMyAdmin` sur votre instance Amazon Linux.

**Important**  
Nous vous déconseillons de l'utiliser `phpMyAdmin` pour accéder à un serveur LAMP sauf si vous l'avez activé SSL/TLS dans Apache ; sinon, votre mot de passe d'administrateur de base de données et d'autres données ne seront pas transmis de manière sécurisée sur Internet. Pour connaître les recommandations de sécurité des développeurs, consultez la section [Sécurisation de votre phpMyAdmin installation](https://docs.phpmyadmin.net/en/latest/setup.html#securing-your-phpmyadmin-installation). Pour obtenir des informations générales sur la sécurisation d’un serveur Web sur une instance EC2, consultez [Tutoriel : Configuration SSL/TLS sur AL2](SSL-on-amazon-linux-2.md).

**Pour installer phpMyAdmin**

1. Installez les dépendances obligatoires.

   ```
   [ec2-user ~]$ sudo yum install php-mbstring php-xml -y
   ```

1. Redémarrez Apache.

   ```
   [ec2-user ~]$ sudo systemctl restart httpd
   ```

1. Redémarrez `php-fpm`.

   ```
   [ec2-user ~]$ sudo systemctl restart php-fpm
   ```

1. Accédez à la racine du document Apache sur `/var/www/html`.

   ```
   [ec2-user ~]$ cd /var/www/html
   ```

1. Sélectionnez un package source pour la dernière phpMyAdmin version [sur https://www.phpmyadmin.net/downloads](https://www.phpmyadmin.net/downloads). Pour télécharger le fichier directement sur votre instance, copiez le lien et collez-le dans une commande **wget**, comme dans cet exemple :

   ```
   [ec2-user html]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
   ```

1. Créez un dossier `phpMyAdmin` et extrayez le package dans celui-ci avec la commande suivante.

   ```
   [ec2-user html]$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
   ```

1. Supprimez l'*phpMyAdmin-latest-all-languages.tar.gz*archive.

   ```
   [ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
   ```

1.  (Facultatif) Si le serveur MySQL n’est pas en cours d’exécution, démarrez-le maintenant.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Dans un navigateur Web, saisissez l'URL de votre phpMyAdmin installation. Cette URL est l’adresse DNS publique (ou l’adresse IP publique) de votre instance suivie par une barre oblique et le nom du fichier de votre répertoire d’installation. Par exemple :

   ```
   http://my.public.dns.amazonaws.com/phpMyAdmin
   ```

   Vous devriez voir la page phpMyAdmin de connexion :  
![\[Le résultat de la saisie de l'URL de votre phpMyAdmin installation est l'écran de phpMyAdmin connexion.\]](http://docs.aws.amazon.com/fr_fr/linux/al2/ug/images/phpmyadmin_login.png)

1. Connectez-vous à votre phpMyAdmin installation avec le nom d'`root`utilisateur et le mot de passe root MySQL que vous avez créés précédemment.

   Votre installation doit être configurée avant que vous la mettiez en service. Nous vous suggérons de commencer par créer manuellement le fichier de configuration, comme suit :

   1. Pour commencer avec un fichier de configuration minimal, utilisez votre éditeur de texte favori pour créer un nouveau fichier, puis copiez le contenu de `config.sample.inc.php` dans celui-ci.

   1. Enregistrez le fichier `config.inc.php` dans le phpMyAdmin répertoire qui le contient`index.php`.

   1. Reportez-vous aux instructions après la création du fichier dans [la section Utilisation du script](https://docs.phpmyadmin.net/en/latest/setup.html#using-the-setup-script) d' phpMyAdmin installation des instructions d'installation pour toute configuration supplémentaire.

    Pour plus d'informations sur l'utilisation phpMyAdmin, consultez le [guide de phpMyAdmin l'utilisateur](http://docs.phpmyadmin.net/en/latest/user.html).

## Dépannage
<a name="lamp-troubleshooting"></a>

Cette section propose des suggestions pour résoudre les problèmes courants que vous pouvez rencontrer lors de la configuration d’un nouveau serveur LAMP. 

### Je ne parviens pas à me connecter à mon serveur à l’aide d’un navigateur Web.
<a name="is_apache_on"></a>

Effectuez les vérifications suivantes pour voir si votre serveur web Apache est en cours d’exécution et accessible.
+ **Le serveur web est-il en cours d’exécution ?**

  Vous pouvez vérifier que **httpd** est activé en exécutant la commande suivante :

  ```
  [ec2-user ~]$ sudo systemctl is-enabled httpd
  ```

  Si le processus **httpd** n’est pas en cours d’exécution, répétez les étapes décrites dans [Pour préparer le serveur LAMP](#install_apache-2).
+ **Le pare-feu est-il configuré correctement ?**

  Vérifiez que le groupe de sécurité de l’instance contient une règle autorisant le trafic HTTP sur le port 80. Pour plus d'informations, voir [Ajouter des règles au groupe de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

### Je ne parviens pas à me connecter à mon serveur en utilisant HTTPS
<a name="is-https-enabled"></a>

Effectuez les vérifications suivantes pour voir si votre serveur Web Apache est configuré pour prendre en charge HTTPS.
+ **Le serveur Web est-il correctement configuré ?**

  Après avoir installé Apache, le serveur est configuré pour le trafic HTTP. Pour prendre en charge HTTPS, activez TLS sur le serveur et installez un certificat SSL. Pour plus d’informations, veuillez consulter [Tutoriel : Configuration SSL/TLS sur AL2](SSL-on-amazon-linux-2.md).
+ **Le pare-feu est-il configuré correctement ?**

  Vérifiez que le groupe de sécurité de l’instance contient une règle autorisant le trafic HTTPS sur le port 443. Pour plus d'informations, voir [Ajouter des règles à un groupe de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

## Rubriques en relation
<a name="lamp-more-info"></a>

Pour plus d'informations sur le transfert de fichiers vers votre instance ou l'installation d'un WordPress blog sur votre serveur Web, consultez la documentation suivante :
+ [Transférez des fichiers vers votre instance Linux à l'aide](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html#Transfer_WinSCP) deWinSCP.
+ [Transférez des fichiers vers des instances Linux à l'aide d'un SCP client](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html#linux-file-transfer-scp).
+ [Tutoriel : héberger un WordPress blog sur AL2](hosting-wordpress.md)

Pour plus d’informations sur les commandes et le logiciel utilisés dans ce tutoriel, consultez les pages web suivantes :
+ Serveur Web Apache : [http://httpd.apache.org/](http://httpd.apache.org/)
+ Serveur de base de données MariaDB : [https://mariadb.org/](https://mariadb.org/)
+ Langage de programmation PHP : [http://php.net/](http://php.net/)
+ La `chmod` commande : [https://en.wikipedia. org/wiki/Chmod](https://en.wikipedia.org/wiki/Chmod)
+ La `chown` commande : [https://en.wikipedia. org/wiki/Chown](https://en.wikipedia.org/wiki/Chown)

Pour plus d’informations sur l’enregistrement d’un nom de domaine pour votre serveur web ou le transfert d’un nom de domaine existant vers cet hôte, consultez [Création et migration de domaines et de sous-domaines vers Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/creating-migrating.html) dans le *Amazon Route 53 Manuel du développeur*.

# Tutoriel : Configuration SSL/TLS sur AL2
<a name="SSL-on-amazon-linux-2"></a>

Secure Sockets Layer/Transport Layer Security (SSL/TLS) creates an encrypted channel between a web server and web client that protects data in transit from being eavesdropped on. This tutorial explains how to add support manually for SSL/TLSsur une instance EC2 avec AL2 un serveur Web Apache). Ce tutoriel suppose que vous n’utilisez pas d’équilibreur de charge. Si vous utilisez Elastic Load Balancing, vous pouvez choisir de configurer le déchargement SSL sur l’équilibreur de charge, en utilisant un certificat à partir de [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/).

Pour des raisons historiques, le chiffrement web est communément appelé SSL. Alors que les navigateurs web prennent toujours en charge SSL, son protocole successeur TLS est moins vulnérable en cas d'attaque. AL2 désactive la prise en charge côté serveur pour toutes les versions SSL par défaut. Les [organismes de normalisation de la sécurité](https://www.ssl.com/article/deprecating-early-tls/) considèrent que TLS 1.0 n’est pas sûr. TLS 1.0 et TLS 1.1 sont devenus officiellement [obsolètes](https://datatracker.ietf.org/doc/rfc8996/) en mars 2021. Ce tutoriel contient des conseils pour l’activation de TLS 1.2 exclusivement. Le protocole TLS 1.3 a été finalisé en 2018 et est disponible AL2 tant que la bibliothèque TLS sous-jacente (OpenSSL dans ce didacticiel) est prise en charge et activée. [Les clients doivent prendre en charge le protocole TLS 1.2 ou une version ultérieure d’ici le 28 juin 2023](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/). Pour plus d’informations sur les normes de chiffrement mises à jour, consultez [RFC 7568](https://tools.ietf.org/html/rfc7568) et [RFC 8446](https://tools.ietf.org/html/rfc8446).

Ce tutoriel fait référence au chiffrement Web moderne simplement comme TLS.

**Important**  
Ces procédures sont destinées à être utilisées avec AL2. Nous supposons également que vous commencez avec une nouvelle instance Amazon EC2. Si vous essayez de configurer une instance EC2 exécutant une distribution différente ou une instance exécutant une ancienne version de AL2, certaines procédures de ce didacticiel risquent de ne pas fonctionner. Pour Ubuntu, consultez la documentation de la communauté suivante : [Open SSL on Ubuntu](https://help.ubuntu.com/community/OpenSSL) (Ouvrir SSL sur Ubuntu). Pour Red Hat Enterprise Linux, consultez les informations suivantes :[Setting up the Apache HTTP Web Server](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/setting-apache-http-server_deploying-different-types-of-servers) (Configuration du serveur web HTTP Apache). Pour les autres distributions, consultez leur documentation spécifique.

**Note**  
Vous pouvez également utiliser AWS Certificate Manager (ACM) for AWS Nitro enclaves, une application d'enclave qui vous permet d'utiliser des SSL/TLS certificats publics et privés avec vos applications Web et vos serveurs exécutés sur des instances Amazon EC2 avec Nitro Enclaves. AWS Nitro Enclaves est une fonctionnalité Amazon EC2 qui permet de créer des environnements informatiques isolés afin de protéger et de traiter en toute sécurité des données hautement sensibles, SSL/TLS telles que des certificats et des clés privées.  
ACM for Nitro Enclaves fonctionne avec **nginx** exécuté sur votre instance Amazon EC2 Linux pour créer des clés privées, distribuer des certificats et des clés privées et gérer le renouvellement des certificats.  
Pour utiliser ACM for Nitro Enclaves, vous devez utiliser une instance Linux compatible avec les enclaves.  
Pour plus d'informations, consultez [Qu'est-ce que AWS Nitro Enclaves ?](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html) et [AWS Certificate Manager pour Nitro Enclaves](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-refapp.html) dans le guide de l'utilisateur de *AWS Nitro Enclaves*.

**Topics**
+ [Conditions préalables](#ssl_prereq)
+ [Étape 1 : Activer TLS sur le serveur](#ssl_enable)
+ [Étape 2 : Obtenir un certificat signé par une autorité de certification (CA)](#ssl_certificate)
+ [Étape 3 : Tester et renforcer la configuration de sécurité](#ssl_test)
+ [Dépannage](#troubleshooting)

## Conditions préalables
<a name="ssl_prereq"></a>

Avant de commencer ce tutoriel, suivez les étapes suivantes :
+ Lancez une AL2 instance basée sur Amazon EBS. Pour plus d'informations, consultez [Lancer une instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) dans le guide de l'*utilisateur Amazon EC2*.
+ Configurez vos groupes de sécurité afin que votre instance puisse accepter des connexions sur les ports TCP suivants : 
  + SSH (port 22)
  + HTTP (port 80)
  + HTTPS (port 443)

  Pour plus d’informations, consultez [Règles des groupes de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules.html) dans le *Guide de l’utilisateur Amazon EC2*.
+ Installez le serveur Web Apache. Pour step-by-step obtenir des instructions, voir [Tutoriel : Installation d'un serveur Web LAMP sur AL2](ec2-lamp-amazon-linux-2.md). Seuls le package httpd et ses dépendances sont nécessaires. Par conséquent, vous pouvez ignorer les instructions impliquant PHP et MariaDB.
+ Pour identifier et authentifier les sites web, l’infrastructure à clés publiques (PKI) TLS repose sur le système de noms de domaine (DNS). Pour utiliser votre instance EC2 pour héberger un site web public, vous devez enregistrer un nom de domaine pour votre serveur web ou transférer un nom de domaine existant vers votre hôte Amazon EC2. Plusieurs services d’enregistrement de domaines tiers et d’hébergement DNS sont disponibles pour cela, ou vous pouvez utiliser [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html). 

## Étape 1 : Activer TLS sur le serveur
<a name="ssl_enable"></a>

**Option : Effectuer ce tutoriel en utilisant Automation**  
Pour terminer ce didacticiel en utilisant AWS Systems Manager Automation au lieu des tâches suivantes, exécutez le [document d'automatisation](https://console.aws.amazon.com/systems-manager/documents/AWSDocs-Configure-SSL-TLS-AL2/).

Cette procédure explique le processus de configuration du protocole TLS AL2 avec un certificat numérique autosigné. 

**Note**  
Un certificat auto-signé est acceptable dans un environnement de test, mais pas pour les environnements de production. Si vous exposez votre certificat auto-signé sur Internet, les visiteurs de votre site verront s’afficher des messages d’avertissement de sécurité. 

**Pour activer TLS sur un serveur**

1. [Connectez-vous à votre instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) et confirmez qu’Apache est en cours d’exécution.

   ```
   [ec2-user ~]$ sudo systemctl is-enabled httpd
   ```

   Si la valeur renvoyée n’est pas « activé », démarrez Apache et configurez-le pour qu’il démarre à chaque amorçage du système.

   ```
   [ec2-user ~]$ sudo systemctl start httpd && sudo systemctl enable httpd
   ```

1. Pour vous assurer que tous vos packages logiciels sont mis à jour, effectuez une mise à jour logicielle rapide sur votre instance. Ce processus peut prendre quelques minutes, mais il est important pour vous assurer que vous disposez des dernières mises à jour de sécurité et des nouveaux correctifs de bogues.
**Note**  
L’option `-y` installe les mises à jour sans demander de confirmation. Si vous souhaitez examiner les mises à jour avant l’installation, vous pouvez omettre cette option.

   ```
   [ec2-user ~]$ sudo yum update -y
   ```

1. Maintenant que votre instance est à jour, ajoutez la prise en charge de TLS en installant le module Apache `mod_ssl`.

   ```
   [ec2-user ~]$ sudo yum install -y mod_ssl
   ```

   Votre instance dispose désormais des fichiers suivants que vous utilisez pour configurer votre serveur sécurisé et créer un certificat pour les tests :
   +  `/etc/httpd/conf.d/ssl.conf` 

     Le fichier de configuration de mod\$1ssl. Il contient des *directives* indiquant à Apache où trouver les clés et les certificats de chiffrement, les versions de protocoles TLS à autoriser et les algorithmes de chiffrement à accepter. 
   + `/etc/pki/tls/certs/make-dummy-cert`

     Script pour générer un certificat X.509 auto-signé et une clé privée pour votre hôte serveur. Ce certificat est utile pour vérifier qu’Apache est correctement paramétré pour utiliser TLS. Comme il n’offre aucune preuve d’identité, il ne doit pas être utilisé en production. S’il est utilisé en production, il déclenche des avertissements dans les navigateurs web.

1. Exécutez le script pour générer un certificat factice auto-signé et une clé pour les tests.

   ```
   [ec2-user ~]$ cd /etc/pki/tls/certs
   sudo ./make-dummy-cert localhost.crt
   ```

   Cela génère un nouveau fichier `localhost.crt` dans le répertoire `/etc/pki/tls/certs/`. Le nom de fichier spécifié correspond au nom par défaut attribué dans la directive **SSLCertificateFile** dans `/etc/httpd/conf.d/ssl.conf`. 

   Ce fichier contient un certificat auto-signé et la clé privée du certificat. Apache exige que le certificat et la clé soient au format PEM qui est constitué de caractères ASCII codés en Base64, encadrés par des lignes « BEGIN » et « END », comme dans l’exemple abrégé ci-après.

   ```
   -----BEGIN PRIVATE KEY-----
   MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD2KKx/8Zk94m1q
   3gQMZF9ZN66Ls19+3tHAgQ5Fpo9KJDhzLjOOCI8u1PTcGmAah5kEitCEc0wzmNeo
   BCl0wYR6G0rGaKtK9Dn7CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vr
   GvwnKoMh3DlK44D9dX7IDua2PlYx5+eroA+1Lqf32ZSaAO0bBIMIYTHigwbHMZoT
   ...
   56tE7THvH7vOEf4/iUOsIrEzaMaJ0mqkmY1A70qQGQKBgBF3H1qNRNHuyMcPODFs
   27hDzPDinrquSEvoZIggkDMlh2irTiipJ/GhkvTpoQlv0fK/VXw8vSgeaBuhwJvS
   LXU9HvYq0U6O4FgD3nAyB9hI0BE13r1HjUvbjT7moH+RhnNz6eqqdscCS09VtRAo
   4QQvAqOa8UheYeoXLdWcHaLP
   -----END PRIVATE KEY-----                    
   
   -----BEGIN CERTIFICATE-----
   MIIEazCCA1OgAwIBAgICWxQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAi0t
   MRIwEAYDVQQIDAlTb21lU3RhdGUxETAPBgNVBAcMCFNvbWVDaXR5MRkwFwYDVQQK
   DBBTb21lT3JnYW5pemF0aW9uMR8wHQYDVQQLDBZTb21lT3JnYW5pemF0aW9uYWxV
   bml0MRkwFwYDVQQDDBBpcC0xNzItMzEtMjAtMjM2MSQwIgYJKoZIhvcNAQkBFhVy
   ...
   z5rRUE/XzxRLBZOoWZpNWTXJkQ3uFYH6s/sBwtHpKKZMzOvDedREjNKAvk4ws6F0
   CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vrGvwnKoMh3DlK44D9dlU3
   WanXWehT6FiSZvB4sTEXXJN2jdw8g+sHGnZ8zCOsclknYhHrCVD2vnBlZJKSZvak
   3ZazhBxtQSukFMOnWPP2a0DMMFGYUHOd0BQE8sBJxg==
   -----END CERTIFICATE-----
   ```

   Les noms et extensions de fichiers sont fournis à titre indicatif et n’ont aucun effet sur la fonction. Par exemple, vous pouvez appeler un certificat `cert.crt`, `cert.pem`, ou tout autre nom de fichier dans la mesure où la directive associée dans le fichier `ssl.conf` utilise le même nom.
**Note**  
Lorsque vous remplacez les fichiers TLS par défaut par vos propres fichiers personnalisés, veillez à ce qu’ils soient au format PEM. 

1. Ouvrez le fichier `/etc/httpd/conf.d/ssl.conf` en utilisant votre éditeur préféré (comme **vim** ou **nano**) en tant qu’utilisateur root et mettez en commentaire la ligne suivante, car le certificat fictif signé automatiquement contient aussi la clé. Si vous ne le faites pas avant d’exécuter l’étape suivante, le service Apache ne peut pas démarrer.

   ```
   SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
   ```

1. Redémarrez Apache.

   ```
   [ec2-user ~]$ sudo systemctl restart httpd
   ```
**Note**  
Assurez-vous que le port TCP 443 est accessible sur votre instance EC2, tel que décrit précédemment.

1. Votre serveur web Apache devrait maintenant prendre en charge HTTPS (HTTP sécurisé) sur le port 443. Testez-le en saisissant l’adresse IP ou le nom de domaine complet de votre instance EC2 dans une barre URL du navigateur avec le préfixe **https://**.

   Étant donné que vous vous connectez à un site avec un certificat d’hôte auto-signé non approuvé, il se peut que votre navigateur affiche une série d’avertissements de sécurité. Ignorez-les et poursuivez sur le site. 

   Si la page de test Apache par défaut s’ouvre, cela signifie que vous avez configuré correctement TLS sur votre serveur. Toutes les données transmises entre le navigateur et le serveur sont maintenant chiffrées.
**Note**  
Pour éviter aux visiteurs du site d’avoir des avertissements, vous devez obtenir un certificat signé par une CA qui chiffre mais vous authentifie aussi publiquement comme le propriétaire du site. 

## Étape 2 : Obtenir un certificat signé par une autorité de certification (CA)
<a name="ssl_certificate"></a>

Vous pouvez utiliser le processus suivant pour obtenir un certificat signé par une CA :
+ Générez une demande de signature de certificat (CSR) à partir d’une clé privée
+ Envoyez la demande de signature de certificat (CSR) à une autorité de certification (CA)
+ Obtenez un certificat d’hôte signé
+ Configurez Apache pour utiliser le certificat

Le chiffrement d’un certificat X.509 TLS auto-signé est identique à celui d’un certificat signé par une autorité de certification. La différence est sociale, pas mathématique. Une autorité de certification promet, au minimum, de valider la propriété d’un domaine avant de générer un certificat pour un demandeur. Chaque navigateur Web contient une liste des navigateurs auxquels le fournisseur du navigateur CAs fait confiance pour ce faire. Un certificat X.509 se compose surtout d’une clé publique qui correspond à votre clé de serveur privée et d’une signature de l’autorité de certification qui est cryptographiquement reliée à la clé publique. Lorsqu'un navigateur se connecte à un serveur Web via HTTPS, le serveur présente un certificat permettant au navigateur de vérifier sa liste de sites fiables CAs. Si le signataire est sur la liste ou s’il est accessible via une *chaîne de confiance* composée d’autres utilisateurs de confiance, le navigateur négocie un canal de données chiffrées rapide avec le serveur et charge la page. 

Les certificats coûtent généralement de l’argent à cause travail impliqué dans la validation des requêtes, donc il est intéressant de comparer les prix. Quelques-uns CAs proposent des certificats de base gratuits. Le plus remarquable d'entre eux CAs est le projet [Let's Encrypt](https://letsencrypt.org/), qui prend également en charge l'automatisation du processus de création et de renouvellement des certificats. Pour plus d’informations sur l’utilisation d’un certificat Let’s Encrypt, veuillez consulter la rubrique [Get Certbot](https://eff-certbot.readthedocs.io/en/stable/install.html).

Si vous prévoyez d’offrir des services de qualité commerciale, [AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) est une bonne option.

La clé est l’élément sous-jacent du certificat d’hôte. Depuis 2019, des groupes [gouvernementaux](http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r4.pdf) et [industriels](https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-1.6.5.pdf) recommandent l’utilisation d’une taille de clé minimale (module) de 2048 bits pour les clés RSA conçues pour protéger des documents, jusqu’en 2030. La taille du module par défaut générée par OpenSSL AL2 in est de 2048 bits, ce qui convient à une utilisation dans un certificat signé par une autorité de certification. Dans la procédure suivante, étape facultative pour ceux qui souhaitent une clé personnalisée, par exemple, une clé avec un module plus important ou utilisant un algorithme de chiffrement différent.

**Important**  
Ces instructions pour l’acquisition de certificats d’hôte signés par l’autorité de certification (CA) ne fonctionnent pas à moins que vous possédiez un domaine DNS enregistré et hébergé.

**Pour obtenir un certificat signé par une CA**

1.  [Connectez-vous](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) à votre instance et accédez à/etc/pki/tls/private/. Il s’agit du répertoire où vous stockez la clé privée du serveur pour TLS. Si vous préférez utiliser une clé d’hôte existante pour générez la CSR, passez à l’étape 3.

1. (Facultatif) Générez une nouvelle clé privée. Voici quelques exemples de configurations de clés. Toutes les clés obtenues fonctionnent avec votre serveur web, mais elles diffèrent dans le degré et le type de sécurité qu’elles mettent en œuvre.
   + **Exemple 1 :** création d’une clé d’hôte RSA par défaut. Le fichier obtenu, **custom.key**, est une clé privée RSA 2048 bits.

     ```
     [ec2-user ~]$ sudo openssl genrsa -out custom.key
     ```
   + **Exemple 2 :** création d’une clé RSA plus forte avec un modulus plus grand. Le fichier obtenu, **custom.key**, est une clé privée RSA 4096 bits.

     ```
     [ec2-user ~]$ sudo openssl genrsa -out custom.key 4096
     ```
   + **Exemple 3 :** création d’une clé RSA chiffrée 4096 bits avec protection par mot de passe. Le fichier obtenu, **custom.key**, est une clé privée RSA 4096 bits chiffrée avec le chiffrement AES-128.
**Important**  
Le chiffrement de la clé offre une plus grande sécurité, mais comme une clé chiffrée nécessite un mot de passe, les services qui en dépendent ne peuvent pas démarrer automatiquement. A chaque fois que vous utilisez cette clé, vous devez fournir le mot de passe (« abcde12345 » dans l’exemple précédent) sur une connexion SSH.

     ```
     [ec2-user ~]$ sudo openssl genrsa -aes128 -passout pass:abcde12345 -out custom.key 4096
     ```
   + **Exemple 4 :** création d’une clé avec un chiffrement non RSA. La cryptographie RSA peut être relativement lente en raison de la taille de ses clés publiques, lesquelles sont basées sur le produit de deux grands nombres premiers. Cependant, il est possible de créer des clés pour TLS qui utilisent des chiffrements non RSA. Les clés basées sur les mathématiques des courbes elliptiques sont plus petites et plus rapides en termes de calcul, tout en offrant un niveau de sécurité équivalent.

     ```
     [ec2-user ~]$ sudo openssl ecparam -name prime256v1 -out custom.key -genkey
     ```

     Le résultat est une clé privée 256 bits à courbes elliptiques utilisant prime256v1, une « courbe nommée » que OpenSSL prend en charge. Sa qualité cryptographique est légèrement plus importante qu’une clé RSA 2048 bits, [selon NIST](http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r4.pdf).
**Note**  
Tous ne CAs fournissent pas le même niveau de support pour les elliptic-curve-based clés que pour les clés RSA.

   Assurez-vous que la propriété et les autorisations de la nouvelle clé privée sont très restrictives (owner=root, group=root, read/write pour le propriétaire uniquement). Les commandes seraient similaires à celles illustrées dans l’exemple suivant.

   ```
   [ec2-user ~]$ sudo chown root:root custom.key
   [ec2-user ~]$ sudo chmod 600 custom.key
   [ec2-user ~]$ ls -al custom.key
   ```

   Les commandes ci-avant produisent le résultat suivant.

   ```
   -rw------- root root custom.key
   ```

    Une fois que vous avez créé et configuré une clé satisfaisante, vous pouvez créer une CSR. 

1. Créez une CSR à l’aide de votre clé préférée. L’exemple suivant utilise **custom.key**.

   ```
   [ec2-user ~]$ sudo openssl req -new -key custom.key -out csr.pem
   ```

   OpenSSL ouvre une boîte de dialogue et vous invite à compléter les informations affichées dans le tableau ci-dessous. Tous les champs à l’exception de **Common Name** sont facultatifs pour un certificat d’hôte basique avec validation de domaine.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/linux/al2/ug/SSL-on-amazon-linux-2.html)

   Au final, OpenSSL vous invite à donner un mot de passe de stimulation facultatif. Ce mot de passe s’applique uniquement à la CSR et aux transactions entre vous et votre autorité de certification, donc suivez les recommandations de l’autorité de certification sur cela, l’autre champ facultatif et le nom de l’entreprise facultatif. Le mot de passe de stimulation de la CSR n’a aucun effet sur le fonctionnement du serveur.

   Le fichier obtenu **csr.pem** contient votre clé publique, la signature numérique de votre clé publique et les métadonnées que vous avez saisies.

1. Envoyez la CSR à une autorité de certification. Elle consiste généralement en l’ouverture de votre fichier CSR dans un éditeur de texte et la reproduction du contenu dans un formulaire web. À ce stade, il peut vous être demandé de fournir un ou plusieurs noms alternatifs de sujet (SANs) à placer sur le certificat. Si **www.example.com** est le nom commun, **example.com** serait un bon SAN, et vice versa. Un visiteur de votre site qui saisit l’un de ces noms devrait bénéficier d’une connexion sans erreur. Si votre formulaire Web CA le permet, incluez le nom commun dans la liste des SANs. Certains l' CAs incluent automatiquement.

   Une fois que votre demande a été approuvée, vous recevrez un nouveau certificat d’hôte signé par l’autorité de certification. Il se peut que l’on vous demande également de télécharger un fichier de *certificat intermédiaire* qui contient des certificats supplémentaires nécessaires pour compléter la chaîne de confiance de l’autorité de certification. 
**Note**  
Votre autorité de certification peut vous envoyer des fichiers sous différents formats en fonction des finalités recherchées. Dans ce tutoriel, vous devez utiliser uniquement un fichier de certificat au format PEM, qui comporte habituellement (mais pas toujours) une extension de fichier `.pem` ou `.crt`. Si vous ne savez pas quel fichier utiliser, ouvrez les fichiers dans un éditeur de texte et recherchez celui qui contient un ou plusieurs blocs commençant par la ligne suivante.  

   ```
   - - - - -BEGIN CERTIFICATE - - - - - 
   ```
Le fichier doit également se terminer par la ligne suivante.  

   ```
   - - - -END CERTIFICATE - - - - -
   ```
Vous pouvez également tester le fichier dans la ligne de commande, comme suit.  

   ```
   [ec2-user certs]$ openssl x509 -in certificate.crt -text
   ```
Vérifiez que ces lignes apparaissent dans le fichier. N’utilisez pas de fichiers se terminant par `.p7b`, `.p7c` ou autres extensions similaires.

1. Placez le nouveau certificat signé par une CA et les certificats intermédiaires dans le répertoire `/etc/pki/tls/certs`.
**Note**  
Il existe plusieurs méthodes pour charger votre nouveau certificat dans votre instance EC2, mais le moyen le plus simple et informatif consiste à ouvrir un éditeur de texte (vi, nano, Bloc-notes, etc.) sur votre ordinateur local et votre instance, puis à copier et coller le contenu du fichier. Pour effectuer ces opérations sur l’instance EC2, vous devez disposer de privilèges racine [sudo]. Vous voyez ainsi immédiatement s’il existe des problèmes d’autorisation ou de chemin d’accès. Veillez toutefois à ne pas d’ajouter des lignes supplémentaires lors de la copie du contenu, ou à les modifier de quelque façon. 

   Depuis le `/etc/pki/tls/certs` répertoire, vérifiez que les paramètres de propriété, de groupe et d'autorisation du fichier correspondent aux AL2 valeurs par défaut très restrictives (owner=root, group=root, pour le propriétaire uniquement). read/write L’exemple suivant illustre les commandes à utiliser. 

   ```
   [ec2-user certs]$ sudo chown root:root custom.crt
   [ec2-user certs]$ sudo chmod 600 custom.crt
   [ec2-user certs]$ ls -al custom.crt
   ```

   Ces commandes devraient générer le résultat suivant. 

   ```
   -rw------- root root custom.crt
   ```

   Les autorisations pour le fichier de certificat intermédiaire sont moins contraignantes (propriétaire=racine, groupe=racine, le propriétaire peut écrire, le groupe peut lire, tout le monde peut lire). L’exemple suivant illustre les commandes à utiliser. 

   ```
   [ec2-user certs]$ sudo chown root:root intermediate.crt
   [ec2-user certs]$ sudo chmod 644 intermediate.crt
   [ec2-user certs]$ ls -al intermediate.crt
   ```

   Ces commandes devraient générer le résultat suivant.

   ```
   -rw-r--r-- root root intermediate.crt
   ```

1. Placez la clé privée que vous avez utilisée pour créer la CSR dans le répertoire `/etc/pki/tls/private/`. 
**Note**  
Il existe plusieurs méthodes pour charger votre clé personnalisée dans votre instance EC2, mais le moyen le plus simple et informatif consiste à ouvrir un éditeur de texte (vi, nano, Bloc-notes, etc.) sur votre ordinateur local et votre instance, puis à copier et coller le contenu du fichier. Pour effectuer ces opérations sur l’instance EC2, vous devez disposer de privilèges racine [sudo]. Vous voyez ainsi immédiatement s’il existe des problèmes d’autorisation ou de chemin d’accès. Veillez toutefois à ne pas d’ajouter des lignes supplémentaires lors de la copie du contenu, ou à les modifier de quelque façon.

   Depuis le `/etc/pki/tls/private` répertoire, utilisez les commandes suivantes pour vérifier que les paramètres de propriété, de groupe et d'autorisation du fichier correspondent aux AL2 valeurs par défaut très restrictives (owner=root, group=root, pour le propriétaire uniquement). read/write 

   ```
   [ec2-user private]$ sudo chown root:root custom.key
   [ec2-user private]$ sudo chmod 600 custom.key
   [ec2-user private]$ ls -al custom.key
   ```

   Ces commandes devraient générer le résultat suivant.

   ```
   -rw------- root root custom.key
   ```

1. Modifiez `/etc/httpd/conf.d/ssl.conf` pour refléter les nouveaux fichiers de certificat et de clé.

   1. Fournissez le chemin et le nom de fichier du certificat d’hôte signé par une CA dans la directive `SSLCertificateFile` d’Apache :

      ```
      SSLCertificateFile /etc/pki/tls/certs/custom.crt
      ```

   1. Si vous avez reçu un fichier de certificat intermédiaire (`intermediate.crt` dans cet exemple), indiquez son nom correct de chemin et de fichier à l’aide de la directive `SSLCACertificateFile` d’Apache :

      ```
      SSLCACertificateFile /etc/pki/tls/certs/intermediate.crt
      ```
**Note**  
Certains CAs combinent le certificat hôte et les certificats intermédiaires dans un seul fichier, ce qui rend la `SSLCACertificateFile` directive inutile. Consultez les instructions fournies par votre autorité de certification.

   1. Fournissez le chemin et le nom de fichier de la clé privée (`custom.key` dans cet exemple) dans la directive `SSLCertificateKeyFile` d’Apache :

      ```
      SSLCertificateKeyFile /etc/pki/tls/private/custom.key
      ```

1. Enregistrez `/etc/httpd/conf.d/ssl.conf` et redémarrez Apache.

   ```
   [ec2-user ~]$ sudo systemctl restart httpd
   ```

1. Testez votre serveur en saisissant votre nom de domaine dans la barre d’URL de navigateur avec le préfixe `https://`. Votre navigateur doit charger la page de test via HTTPS sans générer d’erreurs.

## Étape 3 : Tester et renforcer la configuration de sécurité
<a name="ssl_test"></a>

Une fois que votre TLS est opérationnel et exposé au public, vous devriez tester son niveau de sécurité. Il est facile de le faire avec des services en ligne comme [Qualys SSL Labs](https://www.ssllabs.com/ssltest/analyze.html) qui effectue une analyse gratuite et complète de votre configuration de sécurité. En fonction des résultats, vous pouvez décider de renforcer la configuration de sécurité par défaut en contrôlant les protocoles que vous acceptez, les chiffrements que vous préférez et que vous excluez. Pour plus d’informations, consultez [comment Qualys formule ses scores](https://github.com/ssllabs/research/wiki/SSL-Server-Rating-Guide).

**Important**  
Le test concret est essentiel pour la sécurité de votre serveur. Les petites erreurs de configuration peuvent entraîner des failles de sécurité et des pertes de données. Comme les pratiques de sécurité recommandées changent constamment en réponse à la recherche et aux menaces émergentes, des audits de sécurité périodiques sont essentiels pour la bonne administration du serveur. 

Sur le site [Qualys SSL Labs](https://www.ssllabs.com/ssltest/analyze.html), saisissez le nom de domaine complet de votre serveur dans le formulaire **www.example.com**. Après environ deux minutes, vous recevrez une note (de A à F) pour votre site et une analyse détaillée des résultats. Le tableau suivant résume le rapport pour un domaine dont les paramètres sont identiques à ceux de la configuration Apache par défaut et avec un certificat Certbot par défaut. AL2 


|  |  | 
| --- |--- |
| Score général | B | 
| Certificat | 100 % | 
| Support du protocole | 95 % | 
| Échange de clés | 70 % | 
| Force du chiffrement | 90 % | 

Même si l’aperçu montre que la configuration est principalement sûre, le rapport détaillé indique plusieurs problèmes potentiels, répertoriés ici dans l’ordre de gravité :

✗ **Le RC4 chiffrement est compatible avec certains anciens navigateurs**. Un chiffrement est le noyau mathématique d'un algorithme de chiffrement. RC4[, un algorithme de chiffrement rapide utilisé pour chiffrer les flux de données TLS, est connu pour présenter plusieurs faiblesses graves.](http://www.imperva.com/docs/hii_attacking_ssl_when_using_rc4.pdf) À moins que vous ayez une très bonne raison de prendre en charge des navigateurs existants, vous devez désactiver cette option.

✗ **Les anciennes versions de TLS sont prises en charge.** La configuration prend en charge TLS 1.0 (déjà obsolète) et TLS 1.1 (bientôt obsolète). Seul TLS 1.2 est recommandé depuis 2018.

✗ **La confidentialité persistante n’est pas entièrement prise en charge.** La [confidentialité persistante](https://en.wikipedia.org/wiki/Forward_secrecy) est une fonction des algorithmes qui chiffrent à l’aide de clés de session temporaires (éphémères) issues de la clé privée. Ceci signifie en pratique que les pirates informatiques ne peuvent pas déchiffrer les données HTTPS même s’ils possèdent la clé privée à long terme d’un serveur web.

**Pour corriger et prévenir les erreurs de configuration TLS**

1. Ouvrez le fichier de configuration `/etc/httpd/conf.d/ssl.conf` dans un éditeur de texte et mettez en commentaire la ligne suivante en saisissant « \$1 » au début de la ligne.

   ```
   #SSLProtocol all -SSLv3
   ```

1. Ajoutez la directive suivante :

   ```
   #SSLProtocol all -SSLv3
   SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2
   ```

   Cette directive désactive explicitement les versions SSL 2 et 3, ainsi que les versions TLS 1.0 et 1.1. Le serveur refuse désormais d’accepter les connexions chiffrées avec des clients utilisant tout sauf TLS 1.2. La formulation des commentaires dans la directive indique plus clairement, à un lecteur humain, ce pour quoi le serveur est configuré.
**Note**  
La désactivation des versions TLS 1.0 et 1.1 de cette manière empêche un faible pourcentage de navigateurs web obsolètes d’accéder à votre site.

**Pour modifier la liste des chiffrements autorisés**

1. Dans le fichier de configuration `/etc/httpd/conf.d/ssl.conf`, recherchez la section avec la directive **SSLCipherSuite** et mettez en commentaire la ligne existante en saisissant « \$1 » au début de la ligne.

   ```
   #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
   ```

1. Spécifiez explicitement des suites de chiffrement et un ordre de chiffrement qui donnent la priorité à la confidentialité persistante et évitent les chiffrements peu sûrs. La directive `SSLCipherSuite` utilisée ici est basée sur la sortie du [Mozilla SSL Configuration Generator](https://mozilla.github.io/server-side-tls/ssl-config-generator/), qui adapte une configuration TLS au logiciel spécifique s’exécutant sur votre serveur. Déterminez d’abord vos versions d’Apache et OpenSSL en utilisant la sortie des commandes suivantes.

   ```
   [ec2-user ~]$ yum list installed | grep httpd
   
   [ec2-user ~]$ yum list installed | grep openssl
   ```

   Par exemple, si l’information renvoyée est Apache 2.4.34 et OpenSSL 1.0.2, nous saisissons cela dans le générateur. Si vous choisissez le modèle de compatibilité « moderne », il crée une directive `SSLCipherSuite` qui applique la sécurité de façon stricte, tout en étant compatible avec la plupart des navigateurs. Si votre logiciel ne prend pas en charge la configuration moderne, vous pouvez mettre à jour le logiciel ou choisir la configuration « intermédiaire ».

   ```
   SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:
   ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
   ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
   ```

   Les chiffrements sélectionnés contiennent *ECDHE* (une abréviation pour *Elliptic Curve Diffie-Hellman Ephemeral*) dans leur nom. Le terme *ephemeral* indique la confidentialité persistante. En tant que sous-produit, ces chiffrements ne sont pas compatibles. RC4

   Nous vous recommandons d’utiliser une liste explicite de chiffrements au lieu de compter sur les valeurs par défaut ou les directives succinctes dont le contenu n’est pas visible.

   Copiez la directive générée dans `/etc/httpd/conf.d/ssl.conf`.
**Note**  
Même si la directive est affichée ici sur plusieurs lignes afin d’être plus lisible, elle doit être sur une seule ligne lorsqu’elle est copiée dans `/etc/httpd/conf.d/ssl.conf` avec un point (pas d’espace) entre les noms des chiffrements.

1. En dernier lieu, supprimez la mise en commentaire de la ligne suivante en retirant le « \$1 » au début de la ligne.

   ```
   #SSLHonorCipherOrder on
   ```

   Cette directive force le serveur à préférer les chiffrements de niveau élevé notamment (dans ce cas) ceux qui prennent en charge la confidentialité persistante. Avec cette directive activée, le serveur essaie d’établir une connexion très sécurisée avant d’avoir recours aux chiffrements autorisés dotés d’une sécurité moindre.

Après avoir terminé ces deux procédures, enregistrez les modifications dans `/etc/httpd/conf.d/ssl.conf` et redémarrez Apache.

Si vous testez à nouveau le domaine sur [Qualys SSL Labs](https://www.ssllabs.com/ssltest/analyze.html), vous devriez constater que la RC4 vulnérabilité et les autres avertissements ont disparu et que le résumé ressemble à ce qui suit.


|  |  | 
| --- |--- |
| Score général | A | 
| Certificat | 100 % | 
| Support du protocole | 100 % | 
| Échange de clés | 90 % | 
| Force du chiffrement | 90 % | 

Chaque mise à jour d’OpenSSL présente de nouveaux chiffrements et supprime le support des anciens. Conservez votre AL2 instance EC2 up-to-date, surveillez les annonces de sécurité d'[OpenSSL](https://www.openssl.org/) et soyez attentif aux informations faisant état de nouveaux exploits de sécurité dans la presse technique.

## Dépannage
<a name="troubleshooting"></a>
+ **Mon serveur Web Apache ne démarre pas si je ne fournis pas un mot de passe**

  Il s’agit du comportement attendu si vous avez installé une clé de serveur privée chiffrée et protégée par mot de passe.

  Vous pouvez supprimer l’obligation de chiffrement et de mot de passe de la clé. En supposant que vous disposez d’une clé RSA privée chiffrée nommée `custom.key` dans le répertoire par défaut et que le mot de passe de celle-ci est **abcde12345**, exécutez les commandes suivantes sur votre instance EC2 pour générer une version non chiffrée de la clé.

  ```
  [ec2-user ~]$ cd /etc/pki/tls/private/
  [ec2-user private]$ sudo cp custom.key custom.key.bak
  [ec2-user private]$ sudo openssl rsa -in custom.key -passin pass:abcde12345 -out custom.key.nocrypt 
  [ec2-user private]$ sudo mv custom.key.nocrypt custom.key
  [ec2-user private]$ sudo chown root:root custom.key
  [ec2-user private]$ sudo chmod 600 custom.key
  [ec2-user private]$ sudo systemctl restart httpd
  ```

  Apache devrait maintenant démarrer sans vous demander de fournir un mot de passe.
+  **J’obtiens des erreurs lorsque j’exécute sudo yum install -y mod\$1ssl.**

  Lorsque vous installez les packages requis pour SSL, vous pouvez voir des erreurs similaires à ce qui suit.

  ```
  Error: httpd24-tools conflicts with httpd-tools-2.2.34-1.16.amzn1.x86_64
  Error: httpd24 conflicts with httpd-2.2.34-1.16.amzn1.x86_64
  ```

  Cela signifie généralement que votre instance EC2 n'est pas en cours d'exécution AL2. Ce didacticiel prend uniquement en charge les instances récemment créées à partir d'une AMI AL2 officielle.

# Tutoriel : héberger un WordPress blog sur AL2
<a name="hosting-wordpress"></a>

Les procédures suivantes vous aideront à installer, configurer et sécuriser un WordPress blog sur votre instance AL2. Ce didacticiel est une bonne introduction à l'utilisation d'Amazon EC2 dans la mesure où vous avez le contrôle total d'un serveur Web hébergeant votre WordPress blog, ce qui n'est pas typique d'un service d'hébergement traditionnel.

Vous êtes responsable de la mise à jour des packages logiciels et de la gestion des correctifs de sécurité pour votre serveur. Pour une WordPress installation plus automatisée qui ne nécessite pas d'interaction directe avec la configuration du serveur Web, le CloudFormation service fournit un WordPress modèle qui peut également vous aider à démarrer rapidement. Pour de plus amples informations, veuillez consulter [Démarrez](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.Walkthrough.html) dans le *AWS CloudFormation Guide de l’utilisateur*. *Si vous avez besoin d'une solution de haute disponibilité avec une base de données découplée, consultez la section [Déploiement d'un WordPress site Web à haute disponibilité](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/php-hawordpress-tutorial.html) dans le guide du développeur.AWS Elastic Beanstalk *

**Important**  
Ces procédures sont destinées à être utilisées avec AL2. Pour obtenir plus d’informations sur d’autres distributions, consultez leur documentation spécifique. Plusieurs étapes de ce tutoriel ne fonctionnent pas sur des instances Ubuntu. Pour obtenir de l'aide concernant l'installation WordPress sur une instance Ubuntu, consultez [WordPress](https://help.ubuntu.com/community/WordPress)la documentation Ubuntu. Vous pouvez également l'utiliser [CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-wordpress-launch-instance.html)pour accomplir cette tâche sur les systèmes Amazon Linux, macOS ou Unix.

**Topics**
+ [Conditions préalables](#hosting-wordpress-prereqs)
+ [Installer WordPress](#install-wordpress)
+ [Étapes suivantes](#wordpress-next-steps)
+ [Aide\$1 Mon nom DNS public a changé et mon blog ne fonctionne plus](#wordpress-troubleshooting)

## Conditions préalables
<a name="hosting-wordpress-prereqs"></a>

Ce didacticiel part du principe que vous avez lancé une AL2 instance avec un serveur Web fonctionnel compatible avec PHP et une base de données (MySQL ou MariaDB) en suivant toutes les étapes décrites. [Tutoriel : Installation d'un serveur LAMP sur AL2](ec2-lamp-amazon-linux-2.md) Ce tutoriel propose aussi des étapes pour la configuration d’un groupe de sécurité afin de permettre le trafic `HTTP` et `HTTPS` ainsi que plusieurs étapes afin de vous assurer que les autorisations sur les fichiers sont définies correctement pour votre serveur web. Pour plus d'informations sur l'ajout de règles à votre groupe de sécurité, voir [Ajouter des règles à un groupe de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

Nous vous recommandons vivement d'associer une adresse IP élastique (EIP) à l'instance que vous utilisez pour héberger un WordPress blog. Cela évite à l’adresse DNS publique de votre instance de changer et de détériorer votre installation. Si vous possédez un nom de domaine et que vous voulez l’utiliser pour votre blog, vous pouvez mettre à jour l’enregistrement DNS pour que le nom de domaine pointe vers votre EIP (afin d’obtenir de l’aide à ce sujet, veuillez contacter votre serveur d’inscriptions des noms de domaine). Vous pouvez avoir une EIP associée à une instance en cours d’exécution sans coût aucun. Pour plus d’informations, consultez la rubrique [Adresses IP Elastic](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) dans le *Guide de l’utilisateur Amazon EC2*.

Si vous n’avez pas encore de nom de domaine pour votre blog, vous pouvez enregistrer un nom de domaine avec Route 53 et associer l’adresse EIP de votre instance à votre nom de domaine. Pour de plus amples informations, veuillez consulter [Inscription de noms de domaines à l’aide d’Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html) dans le manuel *Amazon Route 53 Manuel du développeur*.

## Installer WordPress
<a name="install-wordpress"></a>

**Option : Effectuer ce tutoriel en utilisant Automation**  
Pour terminer ce didacticiel en utilisant AWS Systems Manager Automation au lieu des tâches suivantes, exécutez le [document d'automatisation](https://console.aws.amazon.com/systems-manager/documents/AWSDocs-HostingAWordPressBlog/).

Connectez-vous à votre instance et téléchargez le package WordPress d'installation.

**Pour télécharger et décompresser le package WordPress d'installation**

1. Téléchargez le dernier package WordPress d'installation à l'aide de la **wget** commande. La commande suivante devrait toujours télécharger la dernière version.

   ```
   [ec2-user ~]$ wget https://wordpress.org/latest.tar.gz
   ```

1. Décompressez et désarchivez le package d’installation. Le dossier d’installation est décompressé dans un dossier appelé `wordpress`.

   ```
   [ec2-user ~]$ tar -xzf latest.tar.gz
   ```<a name="create_user_and_database"></a>

**Pour créer un utilisateur de base de données et une base de données pour votre WordPress installation**

Votre WordPress installation doit stocker des informations, telles que les articles de blog et les commentaires des utilisateurs, dans une base de données. Cette procédure vous aide à créer la base de données de votre blog et un utilisateur qui est autorisé à lire et à enregistrer des informations dans cette dernière. 

1. Démarrez le serveur de base de données.
   + 

     ```
     [ec2-user ~]$ sudo systemctl start mariadb
     ```

1. Connectez-vous au serveur de base de données en tant qu’utilisateur `root`. Saisissez votre mot de passe `root` de base de données lorsque vous y êtes invité. Il peut être différent du mot de passe `root` de votre système ou il peut même être inexistant si vous n’avez pas sécurisé votre serveur de base de données.

   Si vous n’avez pas encore sécurisé votre serveur de base de données, il est important de le faire. Pour plus d'informations, consultez [Pour sécuriser le serveur MariaDB](ec2-lamp-amazon-linux-2.md#securing-maria-db) (AL2).

   ```
   [ec2-user ~]$ mysql -u root -p
   ```

1. <a name="create_database_user"></a>Créez un utilisateur et un mot de passe pour votre base de données MySQL. Votre WordPress installation utilise ces valeurs pour communiquer avec votre base de données MySQL. 

   Assurez-vous de créer un mot de passe fiable pour votre utilisateur. N’utilisez pas l’apostrophe ( ’ ) dans votre mot de passe, car elle détériorera la commande précédente. Ne réutilisez pas un mot de passe existant et assurez-vous de stocker ce mot de passe dans un endroit sûr.

   Saisissez la commande suivante en remplaçant les informations par un nom utilisateur et un mot de passe uniques.

   ```
   CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';
   ```

1. <a name="create_database"></a>Créez votre base de données. Donnez à votre base de données un nom descriptif pertinent comme `wordpress-db`.
**Note**  
Les signes de ponctuation autour du nom de la base de données dans la commande ci-dessous sont appelés « accents graves ». La touche « accent grave » (```) est généralement située au-dessus de la touche `Tab` d’un clavier QWERTY standard. Les « accents graves » ne sont pas toujours nécessaires, mais ils vous permettent d’utiliser des caractères qui sont normalement interdits dans les noms de base de données, comme les traits d’union.

   ```
   CREATE DATABASE `wordpress-db`;
   ```

1. Accordez des privilèges complets pour votre base de données à l' WordPress utilisateur que vous avez créé précédemment.

   ```
   GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
   ```

1. Annulez les privilèges de base de données pour récupérer tous vos changements.

   ```
   FLUSH PRIVILEGES;
   ```

1. Quittez le client `mysql`.

   ```
   exit
   ```

**Pour créer et modifier le fichier wp-config.php**

Le dossier WordPress d'installation contient un exemple de fichier de configuration appelé`wp-config-sample.php`. Dans cette procédure, vous copiez ce fichier avant de le modifier pour respecter votre configuration spécifique.

1. Copiez le fichier `wp-config-sample.php` sur un fichier appelé `wp-config.php`. Cela crée un nouveau fichier de configuration et garde le modèle de fichier original intact comme sauvegarde.

   ```
   [ec2-user ~]$ cp wordpress/wp-config-sample.php wordpress/wp-config.php
   ```

1. Modifiez le fichier `wp-config.php` avec votre éditeur de texte préféré (comme **nano** ou **vim**) et saisissez les valeurs pour votre installation. Si vous n’avez pas d’éditeur de texte préféré, `nano` convient aux débutants.

   ```
   [ec2-user ~]$ nano wordpress/wp-config.php
   ```

   1. Trouvez la ligne qui définit `DB_NAME` et remplacez `database_name_here` par le nom de la base de données que vous avez créée à l’[Step 4](#create_database) de la procédure [Pour créer un utilisateur de base de données et une base de données pour votre WordPress installation](#create_user_and_database).

      ```
      define('DB_NAME', 'wordpress-db');
      ```

   1. Trouvez la ligne qui définit `DB_USER` et remplacez `username_here` par l’utilisateur de base de données que vous avez créé à l’[Step 3](#create_database_user) de la procédure [Pour créer un utilisateur de base de données et une base de données pour votre WordPress installation](#create_user_and_database).

      ```
      define('DB_USER', 'wordpress-user');
      ```

   1. Trouvez la ligne qui définit `DB_PASSWORD` et remplacez `password_here` par le mot de passe fiable que vous avez créé à l’[Step 3](#create_database_user) de la procédure [Pour créer un utilisateur de base de données et une base de données pour votre WordPress installation](#create_user_and_database).

      ```
      define('DB_PASSWORD', 'your_strong_password');
      ```

   1. Trouvez la section appelée `Authentication Unique Keys and Salts`. Ces `SALT` valeurs `KEY` et ces valeurs fournissent une couche de cryptage aux cookies du navigateur que WordPress les utilisateurs stockent sur leurs machines locales. En gros, l’ajout de valeurs longues aléatoires à cet endroit rend votre site plus sécurisé. Visitez [https://api.wordpress. org/secret-key/1.1/salt](https://api.wordpress.org/secret-key/1.1/salt/)/pour générer de manière aléatoire un ensemble de valeurs clés que vous pouvez copier et coller dans votre `wp-config.php` fichier. Pour coller du texte dans un terminal PuTTY, placez le curseur où vous voulez coller le texte et faites un clic droit avec votre souris dans le terminal PuTTY.

      Pour plus d'informations sur les clés de sécurité, rendez-vous sur [https://wordpress. org/support/article/editing-wp-config-php/\$1security -clés.](https://wordpress.org/support/article/editing-wp-config-php/#security-keys)
**Note**  
Les valeurs ci-dessous sont proposées à titre d’exemple seulement. N’utilisez pas ces valeurs pour votre installation.

      ```
      define('AUTH_KEY',         ' #U$$+[RXN8:b^-L 0(WU_+ c+WFkI~c]o]-bHw+)/Aj[wTwSiZ<Qb[mghEXcRh-');
      define('SECURE_AUTH_KEY',  'Zsz._P=l/|y.Lq)XjlkwS1y5NJ76E6EJ.AV0pCKZZB,*~*r ?6OP$eJT@;+(ndLg');
      define('LOGGED_IN_KEY',    'ju}qwre3V*+8f_zOWf?{LlGsQ]Ye@2Jh^,8x>)Y |;(^[Iw]Pi+LG#A4R?7N`YB3');
      define('NONCE_KEY',        'P(g62HeZxEes|LnI^i=H,[XwK9I&[2s|:?0N}VJM%?;v2v]v+;+^9eXUahg@::Cj');
      define('AUTH_SALT',        'C$DpB4Hj[JK:?{ql`sRVa:{:7yShy(9A@5wg+`JJVb1fk%_-Bx*M4(qc[Qg%JT!h');
      define('SECURE_AUTH_SALT', 'd!uRu#}+q#{f$Z?Z9uFPG.${+S{n~1M&%@~gL>U>NV<zpD-@2-Es7Q1O-bp28EKv');
      define('LOGGED_IN_SALT',   ';j{00P*owZf)kVD+FVLn-~ >.|Y%Ug4#I^*LVd9QeZ^&XmK|e(76miC+&W&+^0P/');
      define('NONCE_SALT',       '-97r*V/cgxLmp?Zy4zUU4r99QQ_rGs2LTd%P;|_e1tS)8_B/,.6[=UK<J_y9?JWG');
      ```

   1. Enregistrez le fichier et quittez votre éditeur de texte.

**Pour installer vos WordPress fichiers sous la racine du document Apache**
+ Maintenant que vous avez décompressé le dossier d'installation, créé une base de données et un utilisateur MySQL et personnalisé le fichier de WordPress configuration, vous êtes prêt à copier vos fichiers d'installation sur le document root de votre serveur Web afin de pouvoir exécuter le script d'installation qui complète votre installation. L'emplacement de ces fichiers varie selon que vous souhaitez que votre WordPress blog soit disponible à la racine de votre serveur Web (par exemple,`my.public.dns.amazonaws.com`) ou dans un sous-répertoire ou un dossier situé sous la racine (par exemple,`my.public.dns.amazonaws.com/blog`).
  + Si vous souhaitez exécuter WordPress à la racine de votre document, copiez le contenu du répertoire d'installation de WordPress (mais pas le répertoire lui-même) comme suit : 

    ```
    [ec2-user ~]$ cp -r wordpress/* /var/www/html/
    ```
  + Si vous WordPress souhaitez exécuter dans un autre répertoire situé sous la racine du document, créez d'abord ce répertoire, puis copiez-y les fichiers. Dans cet exemple, s' WordPressexécutera à partir du répertoire `blog` :

    ```
    [ec2-user ~]$ mkdir /var/www/html/blog
    [ec2-user ~]$ cp -r wordpress/* /var/www/html/blog/
    ```

**Important**  
A des fins de sécurité, si vous ne passez pas à la prochaine procédure immédiatement, arrêtez le serveur web Apache (`httpd`) dès maintenant. Une fois que vous avez déplacé votre installation sous la racine du document Apache, le script WordPress d'installation n'est plus protégé et un attaquant pourrait accéder à votre blog si le serveur Web Apache était en cours d'exécution. Pour arrêter le serveur Web Apache, saisissez la commande **sudo systemctl stop httpd**. Si vous ne passez pas à la prochaine procédure, vous n’avez pas à arrêter le serveur web Apache.

**Pour autoriser l'utilisation WordPress de permaliens**

WordPress les permaliens doivent utiliser des `.htaccess` fichiers Apache pour fonctionner correctement, mais cela n'est pas activé par défaut sur Amazon Linux. Utilisez cette procédure pour permettre tous les remplacements à la racine du document Apache.

1. Ouvrez le fichier `httpd.conf` avec votre éditeur de texte préféré (comme **nano** ou **vim**). Si vous n’avez pas d’éditeur de texte préféré, `nano` convient aux débutants.

   ```
   [ec2-user ~]$ sudo vim /etc/httpd/conf/httpd.conf
   ```

1. Trouvez la section qui commence par `<Directory "/var/www/html">`.

   ```
   <Directory "/var/www/html">
       #
       # Possible values for the Options directive are "None", "All",
       # or any combination of:
       #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
       #
       # Note that "MultiViews" must be named *explicitly* --- "Options All"
       # doesn't give it to you.
       #
       # The Options directive is both complicated and important.  Please see
       # http://httpd.apache.org/docs/2.4/mod/core.html#options
       # for more information.
       #
       Options Indexes FollowSymLinks
   
       #
       # AllowOverride controls what directives may be placed in .htaccess files.
       # It can be "All", "None", or any combination of the keywords:
       #   Options FileInfo AuthConfig Limit
       #
       AllowOverride None
   
       #
       # Controls who can get stuff from this server.
       #
       Require all granted
   </Directory>
   ```

1. Modifiez la ligne `AllowOverride None` dans la section ci-dessus par `AllowOverride All`.
**Note**  
Il existe plusieurs lignes `AllowOverride` dans ce fichier. Assurez-vous de modifier la ligne dans la section `<Directory "/var/www/html">`.

   ```
   AllowOverride All
   ```

1. Enregistrez le fichier et quittez votre éditeur de texte.

**Pour installer la bibliothèque de dessins graphiques PHP sur AL2**  
La bibliothèque GD pour PHP vous permet de modifier des images. Installez cette bibliothèque si vous devez recadrer l’image d’en-tête pour votre blog. La version phpMyAdmin que vous installez peut nécessiter une version minimale spécifique de cette bibliothèque (par exemple, la version 7.2).

Utilisez la commande suivante pour installer la bibliothèque de dessins graphiques PHP sur AL2. Par exemple, si vous avez installé php7.2 dans le amazon-linux-extras cadre de l'installation de la pile LAMP, cette commande installe la version 7.2 de la bibliothèque de dessins graphiques PHP.

```
[ec2-user ~]$ sudo yum install php-gd
```

Pour vérifier la version installée, utilisez la commande suivante :

```
[ec2-user ~]$ sudo yum list installed php-gd
```

Voici un exemple de sortie :

```
php-gd.x86_64                     7.2.30-1.amzn2             @amzn2extra-php7.2
```

**Pour corriger les autorisations sur les fichiers pour le serveur web Apache**

Certaines des fonctionnalités disponibles WordPress nécessitent un accès en écriture à la racine du document Apache (comme le téléchargement de médias via les écrans d'administration). Si ce n'est pas déjà fait, appliquez les appartenances aux groupes et les autorisations suivantes (comme décrit plus en détail dans le[Tutoriel : Installation d'un serveur LAMP sur AL2](ec2-lamp-amazon-linux-2.md)).

1. Accordez la propriété du fichier `/var/www` et de son contenu à l’utilisateur `apache`.

   ```
   [ec2-user ~]$ sudo chown -R apache /var/www
   ```

1. Accordez la propriété de groupe de `/var/www` et de son contenu au groupe `apache`.

   ```
   [ec2-user ~]$ sudo chgrp -R apache /var/www
   ```

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

   ```
   [ec2-user ~]$ sudo chmod 2775 /var/www
   [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. Modifiez de façon récursive les autorisations sur les fichiers de `/var/www` et ses sous-répertoires.

   ```
   [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0644 {} \;
   ```
**Note**  
 Si vous avez l'intention de l'utiliser également WordPress en tant que serveur FTP, vous aurez besoin de paramètres de groupe plus permissifs ici. Pour ce faire, veuillez consulter [les étapes recommandées et WordPress les paramètres de sécurité](https://wordpress.org/support/article/changing-file-permissions/). 

1. Redémarrez le serveur web Apache pour récupérer les nouveaux groupe et autorisations.
   + 

     ```
     [ec2-user ~]$ sudo systemctl restart httpd
     ```

**Exécutez le script WordPress d'installation avec AL2**

Vous êtes prêt à procéder à l'installation WordPress. Les commandes que vous utilisez dépendent du système d’exploitation. Les commandes de cette procédure sont destinées à être utilisées avec AL2.

1. Utilisez la commande **systemctl** pour vous assurer que les services `httpd` et de base de données commencent à chaque démarrage système.

   ```
   [ec2-user ~]$ sudo systemctl enable httpd && sudo systemctl enable mariadb
   ```

1. Vérifiez que le serveur de base de données est en cours d’exécution.

   ```
   [ec2-user ~]$ sudo systemctl status mariadb
   ```

   Si le service de base de données n’est pas en cours d’exécution, démarrez-le.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Vérifiez que votre serveur web Apache (`httpd`) est en cours d’exécution.

   ```
   [ec2-user ~]$ sudo systemctl status httpd
   ```

   Si le service `httpd` n’est pas en cours d’exécution, démarrez-le.

   ```
   [ec2-user ~]$ sudo systemctl start httpd
   ```

1. Dans un navigateur Web, saisissez l'URL de votre WordPress blog (soit l'adresse DNS publique de votre instance, soit cette adresse suivie du `blog` dossier). Vous devriez voir le script WordPress d'installation. Fournissez les informations requises par l' WordPress installation. Choisissez **Installer WordPress** pour terminer l’installation. Pour plus d'informations, voir [Étape 5 : Exécuter le script d'installation](https://wordpress.org/support/article/how-to-install-wordpress/#step-5-run-the-install-script) sur le WordPress site Web.

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

Après avoir testé votre WordPress blog, pensez à mettre à jour sa configuration.

**Utiliser un nom de domaine personnalisé**  
Si vous avez un nom de domaine associé à l’EIP de votre instance EC2, vous pouvez configurer votre blog pour utiliser ce nom au lieu de l’adresse DNS publique EC2. Pour plus d'informations, voir [Modification de l'URL du site](https://wordpress.org/support/article/changing-the-site-url/) sur le WordPress site Web.

**Configurer votre blog**  
Vous pouvez configurer votre blog pour utiliser différents [thèmes](https://wordpress.org/themes/) et [plugins](https://wordpress.org/plugins/) afin de proposer une expérience plus personnalisée à vos lecteurs. Cependant, il peut arriver que le processus d’installation échoue ce qui entraînera la perte de tout votre blog. Nous vous recommandons vivement de créer une sauvegarde de l’Amazon Machine Image (AMI) de votre instance avant d’essayer d’installer des thèmes ou des plugins. Ainsi, vous pouvez restaurer votre blog en cas de problème pendant l’installation. Pour plus d'informations, consultez la section [Création de votre propre AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html#creating-an-ami).

**Augmenter la capacité**  
Si votre WordPress blog devient populaire et que vous avez besoin de plus de puissance de calcul ou de stockage, considérez les étapes suivantes :
+ Développez l’espace de stockage sur votre instance. Pour plus d’informations, consultez la section [Volumes Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-modify-volume.html) dans le *Guide de l’utilisateur Amazon EC2*.
+ Déplacez votre base de données MySQL vers [Amazon RDS](https://aws.amazon.com/rds) pour profiter de la capacité du service à se mettre à l’échelle facilement.

**Améliorer les performances réseau de votre trafic Internet**  
Si vous vous attendez à ce que votre blog génère du trafic provenant d’utilisateurs situés dans le monde entier, envisagez d’utiliser [AWS Global Accelerator](https://aws.amazon.com/global-accelerator). Global Accelerator vous aide à réduire le temps de latence en améliorant les performances du trafic Internet entre les appareils clients de vos utilisateurs et votre WordPress application en cours d'exécution AWS. Global Accelerator utilise le [réseau AWS mondial](https://aws.amazon.com/about-aws/global-infrastructure/global_network/) pour diriger le trafic vers un point de terminaison d'application sain dans la AWS région la plus proche du client.

**En savoir plus sur WordPress**  
Pour plus d'informations WordPress, consultez la documentation d'aide du WordPress Codex à l'adresse [http://codex.wordpress.org/](http://codex.wordpress.org/).

Pour plus d'informations sur le dépannage de votre installation, consultez la section [Problèmes d'installation courants](https://wordpress.org/support/article/how-to-install-wordpress/#common-installation-problems).

Pour plus d'informations sur le [renforcement de la sécurité de votre WordPress blog, consultez la section Renforcement WordPress](https://wordpress.org/support/article/hardening-wordpress/).

Pour plus d'informations sur la gestion de votre WordPress blog up-to-date, consultez la section [Mise à jour WordPress](https://wordpress.org/support/article/updating-wordpress/).

## Aide\$1 Mon nom DNS public a changé et mon blog ne fonctionne plus
<a name="wordpress-troubleshooting"></a>

Votre WordPress installation est automatiquement configurée à l'aide de l'adresse DNS publique de votre instance EC2. Si vous arrêtez et redémarrez l’instance, l’adresse DNS publique change (à moins qu’elle soit associée à une adresse IP Elastic) et votre blog ne fonctionne plus, car il fait référence à des ressources à une adresse qui n’existe plus (ou qui est assignée à une autre instance EC2). Une description plus détaillée du problème et plusieurs solutions possibles sont décrites dans la section [Modification de l'URL du site](https://wordpress.org/support/article/changing-the-site-url/).

Si cela est arrivé à votre WordPress installation, vous pourrez peut-être récupérer votre blog en suivant la procédure ci-dessous, qui utilise l'interface de ligne de **wp-cli** commande pour WordPress.

**Pour modifier l'URL de votre WordPress site à l'aide du **wp-cli****

1. Connectez-vous à votre instance EC2 avec SSH. 

1. Notez l’ancienne URL de site et la nouvelle URL de site pour votre instance. L'ancienne URL du site est probablement le nom DNS public de votre instance EC2 lors de l'installation WordPress. La nouvelle URL de site correspond au nom DNS public actuel pour votre instance EC2. Si vous n’êtes pas certain de votre ancienne URL de site, vous pouvez utiliser **curl** pour la trouver avec la commande suivante.

   ```
   [ec2-user ~]$ curl localhost | grep wp-content
   ```

   Vous devriez voir des références à votre ancien nom DNS public dans les données de sortie qui ressembleront à cela (ancienne URL de site en rouge) :

   ```
   <script type='text/javascript' src='http://ec2-52-8-139-223.us-west-1.compute.amazonaws.com/wp-content/themes/twentyfifteen/js/functions.js?ver=20150330'></script>
   ```

1. Téléchargez le kit **wp-cli** avec la commande suivante.

   ```
   [ec2-user ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
   ```

1. Recherchez et remplacez l'ancienne URL du site dans votre WordPress installation à l'aide de la commande suivante. Remplacez l'ancienne et la nouvelle URL du site par votre instance EC2 et par le chemin d'accès à votre WordPress installation (généralement `/var/www/html` ou`/var/www/html/blog`).

   ```
   [ec2-user ~]$ php wp-cli.phar search-replace 'old_site_url' 'new_site_url' --path=/path/to/wordpress/installation --skip-columns=guid
   ```

1. Dans un navigateur Web, entrez l'URL du nouveau site de votre WordPress blog pour vérifier que le site fonctionne à nouveau correctement. Si ce n'est pas le cas, consultez [les sections Modification de l'URL du site](https://wordpress.org/support/article/changing-the-site-url/) et [Problèmes d'installation courants](https://wordpress.org/support/article/how-to-install-wordpress/#common-installation-problems) pour plus d'informations.