Tutoriel : Installer un LAMP serveur sur AL2 023 - Amazon Linux 2023

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.

Tutoriel : Installer un LAMP serveur sur AL2 023

Les procédures suivantes vous aident à installer un serveur Web Apache compatible avec PHP MariaDB (un fork de SQL My développé par la communauté) sur AL2 votre instance 023 (parfois appelée LAMP serveur Web ou stack). LAMP Vous pouvez utiliser ce serveur pour héberger un site Web statique ou déployer une PHP application dynamique qui lit et écrit des informations dans une base de données.

Important

Ces procédures sont destinées à être utilisées avec AL2 023. Si vous essayez de configurer un serveur LAMP Web sur une autre distribution, telle qu'Ubuntu ou Red Hat Enterprise Linux, ce didacticiel ne fonctionnera pas. Pour Ubuntu, consultez la documentation de la communauté Ubuntu suivante : ApacheMySQLPHP. Pour les autres distributions, consultez leur documentation spécifique.

Étape 1 : préparer le LAMP serveur

Prérequis
  • Ce didacticiel part du principe que vous avez déjà lancé une nouvelle instance à l'aide de AL2 023, avec un DNS nom public accessible depuis Internet. Pour de plus amples informations, veuillez consulter AL2023 sur Amazon EC2. Vous devez également avoir configuré votre groupe de sécurité pour autoriser les connexions SSH (port 22), HTTP (port 80) et HTTPS (port 443). Pour plus d'informations sur ces prérequis, consultez Autoriser le trafic entrant pour vos instances Linux dans le guide de EC2l'utilisateur Amazon.

  • La procédure suivante installe la dernière PHP version disponible sur AL2 023, actuellement 8.1. Si vous envisagez d'utiliser PHP des applications autres que celles décrites dans ce didacticiel, vous devez vérifier leur compatibilité avec la version 8.1.

Pour préparer le LAMP serveur
  1. Connectez-vous à votre instance. Pour de plus amples informations, veuillez consulter Connexion à AL2 023 instances.

  2. 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 dnf upgrade -y
  3. Installez les dernières versions du serveur Web Apache et des PHP packages pour AL2 023.

    [ec2-user ~]$ sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel
  4. Installez le serveur web MariaDB et les packages logiciels. Utilisez la commande dnf install pour installer plusieurs packages logiciels et toutes les dépendances associées au même moment.

    [ec2-user ~]$ sudo dnf install mariadb105-server

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

    [ec2-user ~]$ sudo dnf info package_name

    Exemple :

    [root@ip-172-31-25-170 ec2-user]# dnf info mariadb105 Last metadata expiration check: 0:00:16 ago on Tue Feb 14 21:35:13 2023. Installed Packages Name : mariadb105 Epoch : 3 Version : 10.5.16 Release : 1.amzn2023.0.6 Architecture : x86_64 Size : 18 M Source : mariadb105-10.5.16-1.amzn2023.0.6.src.rpm Repository : @System From repo : amazonlinux Summary : A very fast and robust SQL database server URL : http://mariadb.org License : GPLv2 and LGPLv2 Description : MariaDB is a community developed fork from MySQL - a multi-user, multi-threaded : SQL database server. It is a client/server implementation consisting of : a server daemon (mariadbd) and many different client programs and libraries. : The base package contains the standard MariaDB/MySQL client programs and : utilities.
  5. Démarrez le serveur web Apache.

    [ec2-user ~]$ sudo systemctl start httpd
  6. 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
  7. Ajoutez une règle de sécurité pour autoriser les connexions entrantes HTTP (port 80) à votre instance si ce n'est déjà fait. Par défaut, un assistant de lancement-Nun groupe de sécurité a été créé pour votre instance lors du lancement. Si vous n'avez pas ajouté de règles de groupe de sécurité supplémentaires, ce groupe ne contient qu'une seule règle autorisant SSH les connexions.

    1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

    2. Dans le navigateur de gauche, choisissez Instances, puis sélectionnez votre instance.

    3. 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 en utilisantSSH. 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.

    4. S'il n'existe aucune règle entrante autorisant les connexions HTTP (port 80), vous devez maintenant ajouter la règle. Choisissez le lien pour le groupe de sécurité. À l'aide des procédures décrites dans la section Autoriser le trafic entrant pour vos instances Linux, ajoutez une nouvelle règle de sécurité entrante avec les valeurs suivantes :

      • Type : HTTP

      • Protocole : TCP

      • Plage de ports : 80

      • Source : Personnalisé

  8. Testez votre serveur web. Dans un navigateur Web, saisissez l'DNSadresse publique (ou l'adresse IP publique) de votre instance. S’il n’y a pas de contenu dans /var/www/html, vous devriez voir la page de test d’Apache, qui affichera le message « Ça marche ! ».

    Vous pouvez obtenir le public DNS de votre instance à l'aide de la EC2 console Amazon (consultez la IPv4 DNS colonne Public ; si cette colonne est masquée, choisissez Preferences (l'icône en forme d'engrenage) et activez Public). IPv4 DNS

    Vérifiez que le groupe de sécurité de l'instance contient une règle autorisant le HTTP trafic sur le port 80. Pour plus d'informations, voir Ajouter des règles au groupe de sécurité.

    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.

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.

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
  2. 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
    2. 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
  3. 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
  4. 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 {} \;
  5. 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 {} \;

Désormais ec2-user (et tous les futurs membres du apache groupe) peuvent ajouter, supprimer et modifier des fichiers dans la racine du document Apache, ce qui vous permet d'ajouter du contenu, tel qu'un site Web statique ou une PHP application.

Pour sécuriser votre serveur web (facultatif)

Un serveur Web exécutant le HTTP protocole n'assure aucune sécurité de transport pour les données qu'il envoie ou reçoit. Lorsque vous vous connectez à un HTTP serveur à l'aide d'un navigateur Web, les URLs informations que vous visitez, le contenu des pages Web que vous recevez et le contenu (y compris les mots de passe) de tous les HTML formulaires que vous soumettez sont visibles par les espions à tout moment sur le réseau. La meilleure pratique pour sécuriser votre serveur Web consiste à installer le support pour HTTPS (HTTPSecure), qui protège vos données avec le TLS chiffrementSSL/.

Pour plus d'informations HTTPS sur l'activation sur votre serveur, consultezTutoriel : Configurer SSL/TLS sur AL2023.

Étape 2 : Testez votre LAMP serveur

Si votre serveur est installé et fonctionne, et que les autorisations de vos fichiers sont correctement définies, votre ec2-user compte devrait être en mesure de créer un PHP fichier dans le /var/www/html répertoire disponible sur Internet.

Pour tester votre LAMP serveur
  1. Créez un PHP fichier dans 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.

  2. Dans un navigateur Web, saisissez URL le fichier que vous venez de créer. Il URL s'agit de l'DNSadresse publique de votre instance suivie d'une barre oblique et du nom du fichier. Par exemple :

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

    Vous devriez voir la page PHP d'information :

    Le test du LAMP serveur affiche la page PHP d'informations.

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

  3. 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 disposer d'un serveur LAMP Web entièrement fonctionnel. Si vous ajoutez du contenu à la racine du document Apache à l'adresse/var/www/html, vous devriez être en mesure de visualiser ce contenu à l'DNSadresse publique de votre instance.

Étape 3 : Sécuriser le serveur de base de données

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

Pour sécuriser le serveur MariaDB
  1. Démarrez le serveur MariaDB.

    [ec2-user ~]$ sudo systemctl start mariadb
  2. Exécutez mysql_secure_installation.

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

      2. 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/. 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.

    2. Tapez Y pour supprimer les comptes d’utilisateur anonymes.

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

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

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

  3. (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
  4. (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

phpMyAdminest un outil de gestion de base de données basé sur le Web que vous pouvez utiliser pour afficher et modifier la section Mes SQL bases de données de votre EC2 instance. 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 LAMP serveur, sauf si vous avez activéSSL/TLSdans 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. Pour obtenir des informations générales sur la sécurisation d'un serveur Web sur une EC2 instance, consultezTutoriel : Configurer SSL/TLS sur AL2023.

Pour installer phpMyAdmin
  1. Installez les dépendances obligatoires.

    [ec2-user ~]$ sudo dnf install php-mbstring php-xml -y
  2. Redémarrez Apache.

    [ec2-user ~]$ sudo systemctl restart httpd
  3. Redémarrez php-fpm.

    [ec2-user ~]$ sudo systemctl restart php-fpm
  4. Accédez à la racine du document Apache sur /var/www/html.

    [ec2-user ~]$ cd /var/www/html
  5. Sélectionnez un package source pour la dernière phpMyAdmin version sur 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
  6. 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
  7. Supprimez les photos ou les vidéos phpMyAdmin-latest-all-languages.tar.gz goudron.

    [ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
  8. (Facultatif) Si Mon SQL serveur n'est pas en cours d'exécution, démarrez-le maintenant.

    [ec2-user ~]$ sudo systemctl start mariadb
  9. Dans un navigateur Web, saisissez le nom URL de votre phpMyAdmin installation. Il s'URLagit de l'DNSadresse publique (ou de l'adresse IP publique) de votre instance suivie d'une barre oblique et du nom 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 URL de votre phpMyAdmin installation est l'écran phpMyAdmin de connexion.
  10. Connectez-vous à votre phpMyAdmin installation avec le nom root d'utilisateur et le mot de passe Mon SQL root 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.

    2. Enregistrez le fichier config.inc.php dans le phpMyAdmin répertoire qui le contientindex.php.

    3. Reportez-vous aux instructions après la création du fichier dans la section Utilisation du 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.

Dépannage

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

Je ne parviens pas à me connecter à mon serveur à l’aide d’un navigateur Web.

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 LAMP serveur.

  • Le pare-feu est-il configuré correctement ?

    Vérifiez que le groupe de sécurité de l'instance contient une règle autorisant le HTTP trafic sur le port 80. Pour plus d'informations, voir Ajouter des règles au groupe de sécurité.

Je ne parviens pas à me connecter à mon serveur en utilisant HTTPS

Effectuez les vérifications suivantes pour voir si votre serveur Web Apache est configuré pour prendre en chargeHTTPS.

  • Le serveur Web est-il correctement configuré ?

    Après avoir installé Apache, le serveur est configuré pour HTTP le trafic. Pour le supportHTTPS, activez-le TLS sur le serveur et installez un SSL certificat. Pour plus d’informations, veuillez consulter Tutoriel : Configurer SSL/TLS sur AL2023.

  • Le pare-feu est-il configuré correctement ?

    Vérifiez que le groupe de sécurité de l'instance contient une règle autorisant le HTTPS trafic sur le port 443. Pour plus d'informations, consultez Autoriser le trafic entrant pour vos instances Linux.

Rubriques en relation

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 :

Pour plus d’informations sur les commandes et le logiciel utilisés dans ce tutoriel, consultez les pages web suivantes :

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 dans le Amazon Route 53 Manuel du développeur.