Commencez par télécharger et installer VirtualBox à partir de ce lien.
Téléchargez une image ISO d'Ubuntu à partir du site officiel d'Ubuntu.
Ouvrez VirtualBox et créez une nouvelle machine virtuelle. Vous devrez spécifier la quantité de mémoire à allouer à la machine virtuelle et créer un disque dur virtuel.
Une fois que vous avez créé la machine virtuelle, sélectionnez-la et cliquez sur "Settings". Allez dans l'onglet "Storage" et sous "Controller: IDE", cliquez sur le disque avec le signe plus pour ajouter un disque optique. Sélectionnez l'image ISO d'Ubuntu que vous avez téléchargée précédemment.
Démarrez la machine virtuelle et suivez les instructions à l'écran pour installer Ubuntu.
Ouvrez le terminal en appuyant sur Ctrl + Alt + T.
Utilisez la commande sudo apt update pour mettre à jour la liste des paquets disponibles.
Utilisez la commande sudo apt upgrade pour installer les mises à jour disponibles pour les paquets déjà installés.
Installation d'Apache :
Utilisez la commande pour installer Apache.
Une fois l'installation terminée, ouvrez un navigateur web et naviguez jusqu'à http://localhost. Vous devriez voir la page d'accueil d'Apache, ce qui confirme que Apache fonctionne correctement.
Utilisez la commande sudo apt install mysql-server pour installer MySQL.
Pendant l'installation, un écran apparaîtra vous demandant de définir un mot de passe pour l'utilisateur root de MySQL. Choisissez un mot de passe fort et notez-le pour référence future.
Une fois l'installation terminée, sécurisez votre installation de MySQL en utilisant la commande
Il vous sera demandé de configurer "VALIDATE PASSWORD PLUGIN", de changer le mot de passe root, de supprimer les utilisateurs anonymes, de désactiver l'accès root à distance, de supprimer la base de données test et d'accéder à ses privilèges, et de recharger les tables de privilèges.
Utilisez la commande pour installer PHP et les modules nécessaires pour l'interaction de PHP avec Apache et MySQL.
Pour tester si PHP fonctionne, créez un fichier de test en utilisant la commande
Ceci créera un nouveau fichier appelé phptest.php dans le répertoire web root d'Apache.
Ouvrez un navigateur web et naviguez jusqu'à http://localhost/phptest.php.
Si vous voyez une page affichant des informations sur votre installation de PHP, cela signifie que PHP fonctionne correctement.
Maintenant, vous devriez avoir une pile LAMP fonctionnelle sur votre machine virtuelle Ubuntu. Vous pouvez commencer à déployer votre application PHP sur ce serveur.
Une pile « LAMP » est un groupe de logiciels open-source qui sont généralement installés ensemble afin de permettre à un serveur d’héberger des sites web dynamiques et des applications web écrits en PHP. Ce terme est en fait un sigle qui représente le système d’exploitation Linux, avec le serveur web Apache. Les données du site sont stockées dans une base de données MySQL, et le contenu dynamique est traité par PHP.
Dans ce guide, nous allons installer une pile LAMP sur un serveur Ubuntu 20.04.
e serveur web Apache est l’un des serveurs web les plus populaires au monde. Il est bien documenté, a une communauté d’utilisateurs active et a été largement utilisé pendant une grande partie de l’histoire du web, ce qui en fait un excellent choix par défaut pour l’hébergement d’un site web.
Installez Apache en utilisant le gestionnaire de paquets d’Ubuntu, apt :
Si c’est la première fois que vous utilisez sudo dans cette session, vous serez invité à fournir votre mot de passe d’utilisateur pour confirmer que vous avez les bons privilèges pour gérer les paquets système avec apt. Vous serez également invité à confirmer l’installation d’Apache en appuyant sur Y, puis sur ENTRÉE.
Une fois l’installation terminée, vous devrez ajuster les paramètres de votre pare-feu pour autoriser le trafic HTTP et HTTPS. UFW a différents profils d’application que vous pouvez exploiter pour y parvenir. Pour obtenir la liste de tous les profils d’application UFW actuellement disponibles, vous pouvez lancer :
Vous verrez une sortie de ce type :
Voici ce que signifie chacun de ces profils :
Apache : Ce profil n’ouvre que le port 80 (trafic web normal, non crypté).
Apache Full : Ce profil ouvre à la fois le port 80 (trafic web normal, non crypté) et le port 443 (trafic crypté TLS/SSL).
Apache Secure : Ce profil n’ouvre que le port 443 (trafic crypté TLS/SSL).
Pour l’instant, il est préférable de n’autoriser que les connexions sur le port 80, car il s’agit d’une nouvelle installation d’Apache et vous n’avez toujours pas de certificat TLS/SSL configuré pour autoriser le trafic HTTPS sur votre serveur.
Pour n’autoriser le trafic que sur le port 80, utilisez le profil Apache :
Vous pouvez vérifier le changement avec :
Le trafic sur le port 80 est désormais autorisé à travers le pare-feu.
Vous pouvez effectuer un contrôle ponctuel immédiatement pour vérifier que tout s’est passé comme prévu en consultant l’adresse IP publique de votre serveur dans votre navigateur web (voir la note sous le titre suivant pour savoir quelle est votre adresse IP publique si vous ne disposez pas déjà de cette information) :
Vous verrez la page web par défaut d’Ubuntu 20.04 Apache qui est là à des fins d’information et de test. Il devrait ressembler à cela :
Si vous voyez cette page, alors votre serveur web est maintenant correctement installé et accessible à travers votre pare-feu.
Si vous ne savez pas quelle est l’adresse IP publique de votre serveur, vous pouvez la trouver de plusieurs façons. En général, il s’agit de l’adresse que vous utilisez pour vous connecter à votre serveur via SSH.
Il existe plusieurs façons de le faire à partir de la ligne de commande. Tout d’abord, vous pouvez utiliser les outils iproute2 pour obtenir votre adresse IP en tapant ceci :
Cela vous permettra de récupérer deux ou trois lignes. Ce sont toutes des adresses correctes, mais votre ordinateur ne pourra peut-être utiliser qu’une seule d’entre elles, alors n’hésitez pas à les essayer toutes.
Une autre méthode consiste à utiliser l’utilitaire curl pour contacter une partie extérieure afin de vous dire comment elle voit votre serveur. Cela se fait en demandant à un serveur spécifique quelle est votre adresse IP :
Quelle que soit la méthode que vous utilisez pour obtenir votre adresse IP, tapez celle-ci dans la barre d’adresse de votre navigateur web pour afficher la page Apache par défaut.
Maintenant que vous avez un serveur web opérationnel, vous devez installer le système de base de données pour pouvoir stocker et gérer les données de votre site. MySQL est un système de gestion de base de données populaire utilisé dans les environnements PHP.
Là encore, utilisez apt pour acquérir et installer ce logiciel :
Lorsque vous y êtes invité, confirmez l’installation en tapant Y, puis ENTRÉE.
Une fois l’installation terminée, il est recommandé d’exécuter un script de sécurité, préinstallé avec MySQL. Ce script supprimera certains paramètres par défaut peu sûrs et verrouillera l’accès à votre système de base de données. Lancez le script interactif en exécutant :
Il vous sera demandé si vous souhaitez configurer le VALIDATE PASSWORD PLUGIN.
Répondez Y pour oui, ou tout autre chose pour continuer sans activer.
Si vous répondez « oui », il vous sera demandé de choisir un niveau de validation du mot de passe. Gardez à l’esprit que si vous entrez 2 pour le niveau le plus fort, vous recevrez des erreurs lorsque vous tenterez de définir un mot de passe qui ne contient pas de chiffres, de lettres majuscules et minuscules et de caractères spéciaux, ou qui est basé sur des mots communs du dictionnaire.
Que vous ayez ou non choisi de configurer le VALIDATE PASSWORD PLUGIN, votre serveur vous demandera ensuite de sélectionner et de confirmer un mot de passe pour l’utilisateur root de MySQL. Il ne faut pas confondre ce dernier avec le root du système. L’utilisateur root de la base de données est un utilisateur administratif disposant de tous les privilèges sur le système de base de données. Même si la méthode d’authentification par défaut pour l’utilisateur root de MySQL dispense de l’utilisation d’un mot de passe, même si celui-ci est défini, vous devez définir ici un mot de passe fort pour plus de sécurité. Nous en parlerons dans un instant.
Si vous avez activé la validation du mot de passe, la force du mot de passe root que vous venez d’entrer vous sera indiquée et votre serveur vous demandera si vous voulez continuer avec ce mot de passe. Si vous êtes satisfait de votre mot de passe actuel, saisissez Y pour « oui » à l’invite :-1:
Pour le reste des questions, appuyez sur Y et appuyez sur la touche ENTRÉE à chaque invite. Cela supprimera les utilisateurs anonymes et la base de données de test, désactivera les connexions root à distance, et chargera ces nouvelles règles afin que MySQL respecte immédiatement les modifications que vous avez apportées.
Lorsque vous avez terminé, vérifiez si vous êtes capable de vous connecter à la console MySQL en tapant :
Cela permettra de se connecter au serveur MySQL en tant que root de l’utilisateur de la base de données administrative, ce qui est déduit par l’utilisation de sudo lors de l’exécution de cette commande. Vous devriez voir une sortie comme celle-ci :
Pour quitter la console MySQL, tapez :
[note] Notez que vous n’avez pas eu besoin de fournir un mot de passe pour vous connecter en tant qu’utilisateur root, même si vous en avez défini un lors de l’exécution du script mysql_secure_installation. En effet, la méthode d’authentification par défaut pour l’utilisateur administratif de MySQL est unix_socket au lieu du mot de passe. Même si cela peut sembler être un problème de sécurité au premier abord, cela rend le serveur de base de données plus sûr car les seuls utilisateurs autorisés à se connecter en tant qu’utilisateur MySQL root sont les utilisateurs du système ayant des privilèges sudo qui se connectent depuis la console ou par le biais d’une application fonctionnant avec les mêmes privilèges. Concrètement, cela signifie que vous ne pourrez pas utiliser l’utilisateur root de la base de données administrative pour vous connecter à partir de votre application PHP. La définition d’un mot de passe pour le compte root MySQL fonctionne comme une sauvegarde, dans le cas où la méthode d’authentification par défaut est changée de unix_socket au mot de passe.
Pour une sécurité accrue, il est préférable de créer des comptes d’utilisateurs dédiés avec des privilèges moins étendus pour chaque base de données, surtout si vous prévoyez d’héberger plusieurs bases de données sur votre serveur.
[note] Note : Au moment de la rédaction de ce document, la bibliothèque MySQL PHP native mysqlnd ne prend pas en charge caching_sha2_authentification,la méthode d’authentification par défaut pour MySQL 8. Pour cette raison, lorsque vous créez des utilisateurs de base de données pour des applications PHP sur MySQL 8, vous devez vous assurer qu’ils sont configurés pour utiliser le mot de passe mysql_native_password à la place. Nous démontrerons comment le faire dans l’Étape 6. <$>
Votre serveur MySQL est maintenant installé et sécurisé. Ensuite, nous allons installer PHP, le dernier composant de la pile LAMP.
Vous avez installé Apache pour servir votre contenu et MySQL pour stocker et gérer vos données. PHP est le composant de notre installation qui traitera le code pour afficher un contenu dynamique à l’utilisateur final. En plus du paquet php, vous aurez besoin de php-mysql, un module PHP qui permet à PHP de communiquer avec des bases de données MySQL. Vous aurez également besoin de libapache2-mod-php pour permettre à Apache de gérer les fichiers PHP. Les packages PHP de base seront automatiquement installés en tant que dépendances.
Pour installer ces paquets, exécutez :
Une fois l’installation terminée, vous pouvez exécuter la commande suivante pour confirmer votre version de PHP :
Output :
À ce stade, votre pile LAMP est pleinement opérationnelle, mais avant de pouvoir tester votre installation avec un script PHP, il est préférable de mettre en place un hôte virtuel Apache approprié pour conserver les fichiers et dossiers de votre site web. C’est ce que nous ferons dans la prochaine étape.
Lorsque vous utilisez le serveur web Apache, vous pouvez créer des hôtes virtuels (similaires aux blocs de serveurs dans Nginx) pour encapsuler les détails de la configuration et héberger plusieurs domaines à partir d’un seul serveur. Dans ce guide, nous allons mettre en place un domaine appelé your_domain, mais vous devez le remplacer par votre propre nom de domaine.
<$>[note] Note : si vous utilisez DigitalOcean comme fournisseur d’hébergement DNS, vous pouvez consulter la documentation de nos produits pour obtenir des instructions détaillées sur la façon de configurer un nouveau nom de domaine et de le faire pointer vers votre serveur.
Apache sur Ubuntu 20.04 a un bloc serveur activé par défaut qui est configuré pour servir des documents à partir du répertoire /var/www/html. Même si cela fonctionne bien pour un seul site, cela peut devenir ingérable si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html, nous allons créer une structure de répertoire au sein de /var/www pour le site your_domain, en laissant /var/www/html en place comme répertoire par défaut à servir si une demande du client ne correspond à aucun autre site.
Créez le répertoire pour your_domain comme suit :
Ensuite, attribuez la propriété du répertoire avec la variable d’environnement $USER qui fera référence à votre utilisateur actuel du système :
Ouvrez ensuite un nouveau fichier de configuration dans le répertoire sites-available en utilisant votre éditeur de ligne de commande préféré. Ici, nous utiliserons nano :
Cela créera un nouveau fichier vierge. Collez dans la configuration suivante :
Avec cette configuration de VirtualHost, nous disons à Apache de servir your_domain en utilisant /var/www/your_domain comme répertoire root web. Si vous souhaitez tester Apache sans nom de domaine, vous pouvez supprimer ou commenter les options ServerName et ServerAlias en ajoutant un caractère # au début des lignes de chaque option.
Vous pouvez désormais utiliser a2ensite pour activer le nouvel hôte virtuel :
Maintenant que vous avez un emplacement personnalisé pour héberger les fichiers et dossiers de votre site web, nous allons créer un script de test PHP pour confirmer qu’Apache est capable de gérer et de traiter les demandes de fichiers PHP.
Créer un nouveau fichier nommé info.php à l’intérieur de votre dossier root web personnalisé :
Cela ouvrira un fichier vierge. Ajoutez le texte suivant qui est un code PHP valide à l’intérieur du fichier :
Lorsque vous avez terminé, enregistrez et fermez le fichier.
Pour tester ce script, allez dans votre navigateur web et accédez au nom de domaine ou à l’adresse IP de votre serveur, suivi du nom du script, qui dans ce cas est info.php :
Vous verrez une page similaire à celle-ci :
Cette page fournit des informations sur votre serveur du point de vue de PHP. Il est utile pour le débogage et pour s’assurer que vos paramètres sont appliqués correctement.
Si vous pouvez voir cette page dans votre navigateur, alors votre installation de PHP fonctionne comme prévu.
Après avoir vérifié les informations pertinentes sur votre serveur PHP par le biais de cette page, il est préférable de supprimer le fichier que vous avez créé, car il contient des informations sensibles sur votre environnement PHP (et sur votre serveur Ubuntu). Pour ce faire, vous pouvez utiliser rm :
Si vous souhaitez tester si PHP est capable de se connecter à MySQL et d’exécuter des requêtes de base de données, vous pouvez créer une table de test avec des données factices et interroger son contenu à partir d’un script PHP. Avant cela, nous devons créer une base de données test et un nouvel utilisateur MySQL correctement configuré pour y accéder.
Au moment de la rédaction du présent document, la bibliothèque MySQL PHP native mysqlnd ne prend pas en charge caching_sha2_authentification, la méthode d’authentification par défaut pour MySQL 8. Nous devrons créer un nouvel utilisateur avec le mot de passe mysql_native_password afin de pouvoir se connecter à la base de données MySQL à partir de PHP.
Nous allons créer une base de données appelée exemple_database et un utilisateur nommé example_user, mais vous pouvez remplacer ces noms par des valeurs différentes.
Tout d’abord, connectez-vous à la console MySQL en utilisant le compte root :
Pour créer une nouvelle base de données, exécutez la commande suivante depuis votre console MySQL :
Vous pouvez maintenant créer un utilisateur et lui accorder tous les privilèges sur la base de données personnalisée que vous venez de créer.
La commande suivante crée un nouvel utilisateur nommé example_user, en utilisant mysql_native_password comme méthode d’authentification par défaut. Nous définissons le mot de passe de cet utilisateur comme password, mais vous devez remplacer cette valeur par un mot de passe sécurisé de votre choix.
Nous devons maintenant donner à cet utilisateur une autorisation sur la base de données example_database :
Cela donnera à l’utilisateur example_user tous les privilèges sur la base de données example_database, tout en empêchant cet utilisateur de créer ou de modifier d’autres bases de données sur votre serveur.
Maintenant, quittez le shell MySQL avec :
Vous pouvez tester si le nouvel utilisateur a les bonnes autorisations en vous connectant à nouveau à la console MySQL, cette fois-ci en utilisant les identifiants personnalisés de l’utilisateur :
Remarquez le drapeau -p dans cette commande qui vous demandera le mot de passe utilisé lors de la création de l’utilisateur example_user. Après vous être connecté à la console MySQL, confirmez que vous avez accès à la base de données example_database :
Cela donnera la sortie suivante :
Dans ce guide, nous avons établi une base souple pour offrir des sites web et des applications PHP à vos visiteurs en utilisant Apache comme serveur web et MySQL comme système de base de données