Comment installer Linux, Apache, MySQL, PHP (LAMP) stack sur Ubuntu 18.04

Classé dans : Articles | 0

Une version précédente de ce tutoriel a été écrit par Brennan Bearnes.

Introduction

Une pile « LAMP” est un groupe de logiciels open source qui est généralement installé ensemble pour permettre à un serveur d’héberger des sites Web dynamiques et des applications Web. Ce terme est en fait un acronyme 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 18.04.,

Prérequis

Pour compléter ce tutoriel, vous devez disposer d’un serveur Ubuntu 18.04 avec un compte utilisateur non rootsudoet un pare-feu de base. Cela peut être configuré en utilisant notre guide de configuration initiale du serveur pour Ubuntu 18.04.

Étape 1 — Installation d’Apache et mise à jour du pare-feu

Le serveur Web Apache est l’un des serveurs Web les plus populaires au monde. Il est bien documenté et a été largement utilisé pour une grande partie de l’histoire du web, qui en fait un excellent choix par défaut pour l’hébergement d’un site web.,

Installez Apache à l’aide du gestionnaire de paquets Ubuntu,apt:

  • sudo apt update
  • sudo apt install apache2

Puisqu’il s’agit d’une commandesudo, ces opérations sont exécutées avec les privilèges root. Il vous demandera le mot de passe de votre utilisateur régulier pour vérifier vos intentions.

Une fois que vous avez entré votre mot de passe,apt vous indiquera quels paquets il prévoit d’installer et combien d’espace disque supplémentaire ils prendront. Appuyez sur la touche Y et appuyez sur ENTER pour continuer, et l’installation se poursuit.,

Ajustez le Pare-feu pour autoriser le trafic Web

Ensuite, en supposant que vous avez suivi les instructions de configuration initiale du serveur et activé le pare-feu UFW, assurez-vous que votre pare-feu autorise le trafic HTTP et HTTPS.,ld montre qu’il active le trafic vers les ports 80 et 443:

  • sudo ufw app info "Apache Full"
Output
Profile: Apache FullTitle: Web Server (HTTP,HTTPS)Description: Apache v2 is the next generation of the omnipresent Apache webserver.Ports: 80,443/tcp

Autoriser le trafic HTTP et HTTPS entrant pour ce profil:

  • sudo ufw allow in "Apache Full"

Vous pouvez faire une vérification ponctuelle tout de suite pour vérifier que tout s’est déroulé comme prévu en visitant l’adresse IP publique de votre serveur dans votre navigateur Web (voir la note sous la rubrique suivante pour savoir quelle est votre adresse IP publique si vous n’avez pas déjà cette information):

You will see the default Ubuntu 18.04 Apache web page, which is there for informational and testing purposes. It should look something like this:

If you see this page, then your web server is now correctly installed and accessible through your firewall.

How To Find your Server’s Public IP Address

If you do not know what your server’s public IP address is, there are a number of ways you can find it. Usually, this is the address you use to connect to your server through SSH.

There are a few different ways to do this from the command line. First, you could use the iproute2 tools to get your IP address by typing this:

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Cela vous donnera deux ou trois lignes en arrière., Ce sont toutes des adresses correctes, mais votre ordinateur ne peut en utiliser qu’une, alors n’hésitez pas à essayer chacune d’elles.

Une autre méthode consiste à utiliser l’utilitairecurl pour contacter un tiers pour vous dire comment il voit votre serveur. Pour ce faire, demandez à un serveur spécifique quelle est votre adresse IP:

  • sudo apt install curl
  • curl http://icanhazip.com

Quelle que soit la méthode utilisée pour obtenir votre adresse IP, tapez-la dans la barre d’adresse de votre navigateur Web pour afficher la page Apache par défaut.,

Étape 2 — Installation de MySQL

Maintenant que votre serveur Web est opérationnel, il est temps d’installer MySQL. MySQL est un système de gestion de base de données. Fondamentalement, il organisera et donnera accès à des bases de données où votre site peut stocker des informations.

Encore une fois, utilisez la balise apt acquérir et installer ce logiciel:

  • sudo apt install mysql-server

Remarque: Dans ce cas, vous n’avez pas à exécuter sudo apt update avant la commande. C’est parce que vous l’avez récemment exécuté dans les commandes ci-dessus pour installer Apache., L’index des paquets sur votre ordinateur doit déjà être à jour.

Cette commande, trop, vous montrera une liste des paquets qui seront installés, ainsi que la quantité d’espace disque qu’ils vont prendre. Entrez Y pour continuer.

Lorsque l’installation est terminée, exécutez un simple script de sécurité préinstallé avec MySQL qui supprimera certaines valeurs par défaut dangereuses et verrouillera l’accès à votre système de base de données. Lancer le script interactif en cours d’exécution:

  • sudo mysql_secure_installation

Cela va vous demander si vous souhaitez configurer le VALIDATE PASSWORD PLUGIN.,

Remarque: L’activation de cette fonctionnalité est une sorte d’appel de jugement. Si activé, les mots de passe qui ne correspondent pas aux critères spécifiés seront rejetés par MySQL avec une erreur. Cela entraînera des problèmes si vous utilisez un mot de passe faible en conjonction avec un logiciel qui configure automatiquement les informations d’identification de l’utilisateur MySQL, telles que les packages Ubuntu pour phpMyAdmin. Il est prudent de laisser la validation désactivée, mais vous devez toujours utiliser des mots de passe forts et uniques pour les informations d’identification de la base de données.

RéponseY pour oui, ou toute autre chose pour continuer sans activer.,

VALIDATE PASSWORD PLUGIN can be used to test passwordsand improve security. It checks the strength of passwordand allows the users to set only those passwords which aresecure enough. Would you like to setup VALIDATE PASSWORD plugin?Press y|Y for Yes, any other key for No:

Si vous répondez « oui”, vous serez invité à sélectionner 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 courants du dictionnaire.

There are three levels of password validation policy:LOW Length >= 8MEDIUM Length >= 8, numeric, mixed case, and special charactersSTRONG Length >= 8, numeric, mixed case, special characters and dictionary filePlease enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

peu importe si vous avez choisi de définir la balise VALIDATE PASSWORD PLUGIN, votre serveur vous demandera ensuite de choisir et confirmer un mot de passe pour l’utilisateur root MySQL., Il s’agit d’un compte administratif dans MySQL qui a des privilèges accrus. Pensez – y comme étant similaire au compte racine du serveur lui-même (bien que celui que vous configurez maintenant soit un compte spécifique à MySQL). Assurez-vous qu’il s’agit d’un mot de passe fort et unique, et ne le laissez pas vide.

Si vous avez activé la validation du mot de passe, vous verrez la force du mot de passe root que vous venez d’entrer et votre serveur vous demandera si vous souhaitez modifier ce mot de passe., Si vous êtes heureux avec votre mot de passe actuel, entrez N pour le « non” à l’invite de commandes:

Using existing password for root.Estimated strength of the password: 100Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Pour le reste des questions, appuyez sur la touche Y et a frappé le ENTER clé à chaque invite. Cela supprimera certains utilisateurs anonymes et la base de données de test, désactivera les connexions racine distantes et chargera ces nouvelles règles afin que MySQL respecte immédiatement les modifications que vous avez apportées.

Notez que dans les systèmes Ubuntu exécutant MySQL 5.,7 (et versions ultérieures), l’utilisateur racine MySQL est configuré pour s’authentifier à l’aide du plugin auth_socket par défaut plutôt qu’avec un mot de passe. Cela permet une sécurité et une convivialité accrues dans de nombreux cas, mais cela peut également compliquer les choses lorsque vous devez autoriser un programme externe (par exemple, phpMyAdmin) à accéder à l’utilisateur.

Si vous préférez utiliser un mot de passe lors de la connexion à MySQL en tant que root, vous devrez changer sa méthode d’authentification deauth_socket àmysql_native_password., Pour ce faire, ouvrez l’invite MySQL à partir de votre terminal:

  • sudo mysql

Ensuite, vérifiez quelle méthode d’authentification chacun de vos comptes d’utilisateur MySQL utilise avec la commande suivante:

  • SELECT user,authentication_string,plugin,host FROM mysql.user;

Dans cet exemple, vous pouvez voir que l’utilisateur root s’authentifie en div>plugin. Pour configurer le compte racine pour qu’il s’authentifie avec un mot de passe, exécutez la commande ALTER USER suivante., Assurez-vous de remplacer password par un mot de passe fort de votre choix:

  • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Ensuite, exécutez FLUSH PRIVILEGES qui indique au serveur de recharger les tables d’octroi et de mettre vos nouvelles modifications en vigueur:

  • FLUSH PRIVILEGES;

Vérifiez à nouveau les méthodes d’authentification utilisées par chacun de vos utilisateurs pour confirmer que root ne s’authentifie plus à l’aide du plugin auth_socket:

  • SELECT user,authentication_string,plugin,host FROM mysql.user;

Vous pouvez voir dans cet exemple de sortie que l’utilisateur root MySQL s’authentifie, Une fois que vous avez confirmé cela sur votre propre serveur, vous pouvez quitter le shell MySQL:

  • exit

À ce stade, votre système de base de données est maintenant configuré et vous pouvez passer à l’installation de PHP, le dernier composant de la pile LAMP.

Étape 3 — Installation de PHP

PHP est le composant de votre configuration qui traitera le code pour afficher le contenu dynamique. Il peut exécuter des scripts, se connecter à vos bases de données MySQL pour obtenir des informations et transmettre le contenu traité à votre serveur Web pour l’afficher.

Encore une fois, utilisez le systèmeapt pour installer PHP., De plus, incluez des packages d’assistance cette fois-ci afin que le code PHP puisse s’exécuter sous le serveur Apache et parler à votre base de données MySQL:

  • sudo apt install php libapache2-mod-php php-mysql

Cela devrait installer PHP sans aucun problème. On va tester ça dans un instant.

Dans la plupart des cas, vous devez modifier la façon dont Apache sert les fichiers lorsqu’un répertoire est demandé. Actuellement, si un utilisateur demande un répertoire au serveur, Apache cherchera d’abord un fichier appelé index.html., Nous voulons dire au serveur Web de préférer les fichiers PHP aux autres, alors demandez à Apache de rechercher d’abord un fichier index.php.

Pour ce faire, tapez cette commande pour ouvrir la balise dir.conf le fichier dans un éditeur de texte avec des privilèges root:

  • sudo nano /etc/apache2/mods-enabled/dir.conf

Il ressemble à ceci:

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm</IfModule>

Déplacez le fichier d’index PHP (mis en évidence ci-dessus) à la première position après la spécification DirectoryIndex, comme ceci:

/etc/apache2/mods-enabled/dir.,conf
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm</IfModule>

Lorsque vous avez terminé, enregistrez et fermez le fichier en appuyant sur la touche CTRL+X. Confirmer l’enregistrement en tapant Y, puis appuyez sur ENTER pour vérifier que le fichier de l’emplacement d’enregistrement.

Après cela, redémarrez le serveur web Apache pour que vos modifications soient reconnus., Pour ce faire, tapez ceci:

  • sudo systemctl restart apache2

Vous pouvez également vérifier l’état de la balise apache2 service à l’aide de systemctl:

  • sudo systemctl status apache2

Appuyez sur la touche Q pour sortir de cette situation de sortie.

Pour améliorer les fonctionnalités de PHP, vous avez la possibilité d’installer des modules supplémentaires., Pour voir les options disponibles pour les modules et bibliothèques PHP, canalisez les résultats de apt search dans less, un pager qui vous permet de faire défiler la sortie des autres commandes:

  • apt search php- | less

Utilisez les touches fléchées pour faire défiler 6143104e1a »> pour quitter.

Les résultats sont tous des composants optionnels que vous pouvez installer. Il vous donnera une courte description pour chacun:

bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64 Tracks usage of TCP/IP and builds html files with graphsbluefish/bionic 2.2.10-1 amd64 advanced Gtk+ text editor for web and software developmentcacti/bionic 1.1.38+ds1-1 all web interface for graphing of monitoring systemsganglia-webfrontend/bionic 3.6.1-3 all cluster monitoring toolkit - web front-endgolang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all PHP-like Compression and Archive Extensions in Gohaserl/bionic 0.9.35-2 amd64 CGI scripting program for embedded environmentskdevelop-php-docs/bionic 5.2.1-1ubuntu2 all transitional package for kdevelop-phpkdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all transitional package for kdevelop-php-l10n…:

Pour en savoir plus sur ce que fait chaque module, vous pouvez rechercher sur Internet pour plus d’informations à leur sujet., Sinon, regardez la longue description du paquet en tapant:

  • apt show package_name

Il y aura beaucoup de sortie, avec un champ appeléDescription qui aura une explication plus longue de la fonctionnalité fournie par le module.,

Par exemple, pour savoir ce que le php-cli module, vous pouvez taper ceci:

  • apt show php-cli

avec une grande quantité d’autres informations, vous trouverez quelque chose qui ressemble à ceci:

Output
…Description: command-line interpreter for the PHP scripting language (default) This package provides the /usr/bin/php command interpreter, useful for testing PHP scripts from a shell or performing general shell scripting tasks. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. . This package is a dependency package, which depends on Ubuntu's default PHP version (currently 7.2).…

Si, après des recherches, vous décidez que vous souhaitez installer un package, vous pouvez le faire en utilisant la balise apt install commande comme vous l’avez fait pour les autres logiciels.,

Si vous avez décidé que php-cli est quelque chose dont vous avez besoin, vous pouvez taper:

  • sudo apt install php-cli

Si vous souhaitez installer plus d’un module, vous pouvez le faire en listant chacun, séparé par un espace, en suivant la apt install/p>

  • sudo apt install package1 package2 ...

À ce stade, votre pile LAMP est installée et configurée. Avant de faire quoi que ce soit d’autre, nous vous recommandons de configurer un hôte virtuel Apache où vous pouvez stocker les détails de configuration de votre serveur.,

Étape 4 — Configuration des hôtes virtuels (Recommandé)

Lorsque vous utilisez le serveur Web Apache, vous pouvez utiliser des hôtes virtuels (similaires aux blocs de serveur dans Nginx) pour encapsuler les détails de configuration et héberger plusieurs domaines à partir d’un seul serveur. Nous allons configurer un domaine appelé your_domain, mais vous devez le remplacer par votre propre nom de domaine. Pour en savoir plus sur la configuration d’un nom de domaine avec DigitalOcean, consultez notre Introduction au DNS DigitalOcean.

Apache sur Ubuntu 18.,04 a un bloc de serveur activé par défaut qui est configuré pour servir des documents à partir du répertoire /var/www/html. Bien que cela fonctionne bien pour un seul site, cela peut devenir difficile si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html, créons une structure de répertoires dans /var/www pour notre site your_domain, en laissant /var/www/html en place comme répertoire par défaut à servir si une demande client ne correspond à aucun autre site.,your_domain comme suit:

sudo mkdir /var/www/your_domain

Ensuite, attribuez la propriété du répertoire avec la variable d’environnement $USER:

  • sudo chown -R $USER:$USER /var/www/your_domain

Les permissions de vos racines web devraient être correctes si vous n’avez pas modifié votre unmask valeur, mais vous pouvez vous assurer en tapant:

  • sudo chmod -R 755 /var/www/your_domain

Ensuite, créez un échantillon index.html page en utilisant nano ou votre éditeur préféré:

  • nano /var/www/your_domain/index.html

À l’intérieur, ajoutez l’exemple HTML suivant:

/var/www/your_domain/index.,html
<html> <head> <title>Welcome to Your_domain!</title> </head> <body> <h1>Success! The your_domain server block is working!</h1> </body></html>

Enregistrez et fermez le fichier lorsque vous avez terminé.

Pour qu’Apache puisse servir ce contenu, il est nécessaire de créer un fichier hôte virtuel avec les directives correctes. Au lieu de modifier directement le fichier de configuration par défaut situé à /etc/apache2/sites-available/000-default.conf, faisons-en un nouveau à /etc/apache2/sites-available/your_domain.conf:

  • sudo nano /etc/apache2/sites-available/your_domain.conf

Collez le bloc de configuration suivant, qui est similaire au fichier par défaut, mais mis à jour pour notre nouveau répertoire et nom de domaine:

/etc/apache2/sites-disponibles/your_domain.,conf

Notez que nous avons mis à jour leDocumentRoot vers notre nouveau répertoire et leServerAdmin vers un e-mail auquel l’administrateur du site your_domain peut accéder. Nous avons également ajouté deux directives: ServerName, qui établit le domaine de base qui doit correspondre à cette définition d’hôte virtuel, et ServerAlias, qui définit d’autres noms qui doivent correspondre comme s’ils étaient le nom de base.

Enregistrez et fermez le fichier lorsque vous avez terminé.,

Activons le fichier avec l’outila2ensite:

  • sudo a2ensite your_domain.conf

Désactivons le site par défaut défini dans000-default.conf:

  • sudo a2dissite 000-default.conf

Suivant, testons les erreurs de configuration:

  • sudo apache2ctl configtest

Vous devriez voir la sortie suivante:

Output
Syntax OK

Redémarrez Apache pour implémenter vos modifications:

  • sudo systemctl restart apache2

Apache devrait maintenant servir votre nom de domaine., Vous pouvez tester cela en accédant à  » , où vous devriez voir quelque chose comme ceci:

Avec ça, vous l’hôte virtuel est pleinement mis en place. Cependant, avant d’apporter d’autres modifications ou de déployer une application, il serait utile de tester de manière proactive votre configuration PHP au cas où des problèmes devraient être résolus.

Étape 5 — Tester le traitement PHP sur votre serveur Web

Afin de tester que votre système est correctement configuré pour PHP, créez un script PHP très basique appeléinfo.php., Pour qu’Apache puisse trouver ce fichier et le servir correctement, il doit être enregistré dans votre répertoire racine Web.

Créez le fichier à la racine Web que vous avez créée à l’étape précédente en exécutant:

  • sudo nano /var/www/your_domain/info.php

Cela ouvrira un fichier vide. Ajoutez le texte suivant, qui est du code PHP valide, dans le fichier:

info.php
<?phpphpinfo();?>

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Vous pouvez maintenant tester si votre serveur Web est capable d’afficher correctement le contenu généré par ce script PHP. Pour essayer cela, visitez cette page dans votre navigateur Web., Vous aurez à nouveau besoin de l’adresse IP publique de votre serveur.

L’adresse que vous souhaitez visiter est:

The page that you come to should look something like this:

This page provides some basic information about your server from the perspective of PHP. It is useful for debugging and to ensure that your settings are being applied correctly.

If you can see this page in your browser, then your PHP is working as expected.

You probably want to remove this file after this test because it could actually give information about your server to unauthorized users. To do this, run the following command:

  • sudo rm /var/www/your_domain/info.php

Vous pouvez toujours recréer cette page si vous avez besoin d’accéder à l’information plus tard.

Conclusion

Maintenant que vous avez installé une pile de LAMPES, vous avez beaucoup de choix pour ce qu’il faut faire ensuite. Fondamentalement, vous avez installé une plate-forme qui vous permettra d’installer la plupart des types de sites web et de logiciels sur votre serveur.

Dans l’immédiat, vous devez vous assurer que les connexions à votre serveur Web sont sécurisées, en les servant via HTTPS., L’option la plus simple ici est d’utiliser Let’s Encrypt pour sécuriser votre site avec un certificat TLS/SSL gratuit.

Quelques autres options populaires sont:

  • Installer WordPress le système de gestion de contenu le plus populaire sur Internet.
  • Configurez phpMyAdmin pour vous aider à gérer vos bases de données MySQL à partir d’un navigateur Web.
  • Apprenez à utiliser SFTP pour transférer des fichiers vers et depuis votre serveur.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *