Comment installer des piles Linux, Apache, MySQL et PHP (LAMP) sur Ubuntu 16.04

introduction

Une pile «LAMP» est un groupe de logiciels open source généralement installés 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'exploitationLinux, avec le serveur web spacheA. Les données du site sont stockées dans une base de données sySQLMet le contenu dynamique est traité parPHP.

Dans ce guide, une pile LAMP sera installée sur un droplet Ubuntu 16.04. Ubuntu remplira notre première exigence: un système d'exploitation Linux.

Conditions préalables

Avant de commencer avec ce guide, vous devez avoir un compte utilisateur non root distinct avec les privilègessudo définis sur votre serveur. Vous pouvez apprendre comment faire cela en effectuant les étapes 1 à 4 desinitial server setup for Ubuntu 16.04.

Étape 1: Installer Apache et Autoriser dans le pare-feu

Le serveur Web Apache est l'un des serveurs Web les plus populaires au monde. Il est bien documenté et est largement utilisé dans l’histoire du Web, ce qui en fait un excellent choix par défaut pour l’hébergement d’un site Web.

Nous pouvons installer Apache facilement en utilisant le gestionnaire de paquets d'Ubuntu,apt. Un gestionnaire de paquets nous permet d'installer la plupart des logiciels sans douleur à partir d'un référentiel géré par Ubuntu. Vous pouvez en savoir plus surhow to use apt ici.

Pour nos besoins, nous pouvons commencer en tapant ces commandes:

sudo apt-get update
sudo apt-get install apache2

Puisque nous utilisons 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 les packages qu'il prévoit d'installer et l'espace disque supplémentaire qu'ils occuperont. Appuyez surY et appuyez surEnter pour continuer, et l'installation se poursuivra.

Définissez Global ServerName pour supprimer les avertissements de syntaxe

Ensuite, nous ajouterons une seule ligne au fichier/etc/apache2/apache2.conf pour supprimer un message d'avertissement. Bien que sans danger, si vous ne définissez pasServerName globalement, vous recevrez l'avertissement suivant lors de la vérification de votre configuration Apache pour les erreurs de syntaxe:

sudo apache2ctl configtest
OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Ouvrez le fichier de configuration principal avec votre édition de texte:

sudo nano /etc/apache2/apache2.conf

À l'intérieur, en bas du fichier, ajoutez une directiveServerName, pointant vers votre nom de domaine principal. Si aucun nom de domaine n'est associé à votre serveur, vous pouvez utiliser l'adresse IP publique de votre serveur:

Note

[.note] # Si vous ne connaissez pas l'adresse IP de votre serveur, passez à la section surhow to find your server’s public IP address pour la trouver.
#

/etc/apache2/apache2.conf

. . .
ServerName server_domain_or_IP

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, vérifiez les erreurs de syntaxe en tapant:

sudo apache2ctl configtest

Depuis que nous avons ajouté la directive globaleServerName, tout ce que vous devriez voir est:

OutputSyntax OK

Redémarrez Apache pour implémenter vos modifications:

sudo systemctl restart apache2

Vous pouvez maintenant commencer à ajuster le pare-feu.

Ajuster le pare-feu pour autoriser le trafic Web

Ensuite, en supposant que vous ayez suivi les instructions de configuration initiale du serveur pour activer le pare-feu UFW, assurez-vous que votre pare-feu autorise le trafic HTTP et HTTPS. Vous pouvez vous assurer que UFW a un profil d'application pour Apache comme suit:

sudo ufw app list
OutputAvailable applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Si vous regardez le profil deApache Full, il devrait montrer qu'il active le trafic vers les ports 80 et 443:

sudo ufw app info "Apache Full"
OutputProfile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
  80,443/tcp

Autoriser le trafic entrant pour ce profil:

sudo ufw allow in "Apache Full"

Vous pouvez immédiatement effectuer une vérification ponctuelle pour vérifier que tout s'est passé comme prévu en visitant 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 de ces informations.) déjà):

http://your_server_IP_address

Vous verrez la page Web par défaut Ubuntu 16.04 Apache, qui est là à des fins d’information et de test. Ça devrait ressembler a quelque chose comme ca:

Ubuntu 16.04 Apache default

Si vous voyez cette page, votre serveur Web est maintenant correctement installé et accessible via votre pare-feu.

Comment trouver l’adresse IP publique de votre serveur

Si vous ne connaissez pas l’adresse IP publique de votre serveur, vous pouvez la trouver de différentes façons. Il s’agit généralement de l’adresse que vous utilisez pour vous connecter à votre serveur via SSH.

A partir de la ligne de commande, vous pouvez trouver ceci de plusieurs manières. Tout d'abord, vous pouvez utiliser les outilsiproute2 pour obtenir votre adresse en tapant ceci:

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 seule, alors n'hésitez pas à les essayer.

Une autre méthode consiste à utiliser l'utilitairecurl pour contacter un tiers pour vous dire commentit voit votre serveur. Vous pouvez le faire en demandant à un serveur spécifique quelle est votre adresse IP:

sudo apt-get install curl
curl http://icanhazip.com

Quelle que soit la méthode utilisée pour obtenir votre adresse IP, vous pouvez la saisir dans la barre d'adresse de votre navigateur Web pour accéder à votre serveur.

Étape 2: Installez MySQL

Maintenant que notre 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 fournira un accès aux bases de données sur lesquelles notre site peut stocker des informations.

Encore une fois, nous pouvons utiliserapt pour acquérir et installer notre logiciel. Cette fois-ci, nous installerons également d’autres packages «auxiliaires» qui nous aideront à faire communiquer nos composants:

sudo apt-get install mysql-server

[.note] #Note: Dans ce cas, vous n'avez pas besoin d'exécutersudo apt-get update avant la commande. C'est parce que nous l'avons récemment exécuté dans les commandes ci-dessus pour installer Apache. L'index des packages sur notre ordinateur devrait déjà être à jour.
#

Là encore, une liste des packages qui seront installés ainsi que la quantité d’espace disque qu’ils vont occuper apparaît. EntrezY pour continuer.

Pendant l’installation, votre serveur vous demandera de sélectionner et de confirmer un mot de passe pour l’utilisateur «racine» de MySQL. C'est un compte administratif dans MySQL qui a augmenté ses privilèges. Considérez-le comme similaire au compte racine du serveur lui-même (celui que vous configurez maintenant est un compte spécifique à MySQL, cependant). Assurez-vous qu'il s'agit d'un mot de passe fort et unique et ne le laissez pas vierge.

Une fois l’installation terminée, nous souhaitons exécuter un simple script de sécurité permettant de supprimer certaines valeurs par défaut dangereuses et de verrouiller un peu l’accès à notre système de base de données. Démarrez le script interactif en exécutant:

mysql_secure_installation

Il vous sera demandé de saisir le mot de passe que vous avez défini pour le compte racine MySQL. Ensuite, il vous sera demandé si vous souhaitez configurer lesVALIDATE PASSWORD PLUGIN.

[.warning] #Warning: L'activation de cette fonction est une sorte 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 causera des problèmes si vous utilisez un mot de passe faible en conjonction avec un logiciel qui configure automatiquement les informations d'identification des utilisateurs MySQL, tels 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épondez ày pour oui, ou toute autre chose pour continuer sans activer.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Vous serez invité à sélectionner un niveau de validation du mot de passe. Gardez à l'esprit que si vous entrez2, 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 un dictionnaire commun mots.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Si vous avez activé la validation du mot de passe, le niveau de mot de passe du mot de passe root existant vous sera indiqué. Il vous sera demandé si vous souhaitez modifier ce mot de passe. Si vous êtes satisfait de votre mot de passe actuel, entrezn pour «non» à l'invite:

Using existing password for root.

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

Pour le reste des questions, vous devez appuyer surY et appuyer sur la toucheEnter à chaque invite. Cela supprimera certains 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 nous avons apportées.

À ce stade, votre système de base de données est maintenant configuré et nous pouvons continuer.

Étape 3: Installez PHP

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

Nous pouvons à nouveau tirer parti du systèmeapt pour installer nos composants. Nous allons également inclure des packages d’aide pour que le code PHP puisse s’exécuter sous le serveur Apache et communiquer avec notre base de données MySQL:

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

Cela devrait installer PHP sans aucun problème. Nous allons tester cela dans un instant.

Dans la plupart des cas, nous voudrons 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 recherchera d'abord un fichier appeléindex.html. Nous voulons dire à notre serveur Web de préférer les fichiers PHP, nous allons donc demander à Apache de rechercher d'abord un fichierindex.php.

Pour ce faire, tapez cette commande pour ouvrir le fichierdir.conf dans un éditeur de texte avec les privilèges root:

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

Il ressemblera à ceci:

/etc/apache2/mods-enabled/dir.conf


    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

Nous voulons déplacer le fichier d'index PHP mis en évidence ci-dessus à la première position après la spécificationDirectoryIndex, comme ceci:

/etc/apache2/mods-enabled/dir.conf


    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

Lorsque vous avez terminé, enregistrez et fermez le fichier en appuyant surCtrl-X. Vous devrez confirmer l'enregistrement en tapantY, puis appuyez surEnter pour confirmer l'emplacement d'enregistrement du fichier.

Après cela, nous devons redémarrer le serveur Web Apache pour que nos modifications soient reconnues. Vous pouvez le faire en tapant ceci:

sudo systemctl restart apache2

Nous pouvons également vérifier l'état du serviceapache2 en utilisantsystemctl:

sudo systemctl status apache2
Sample Output● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 6 (limit: 512)
   CGroup: /system.slice/apache2.service
           ├─13623 /usr/sbin/apache2 -k start
           ├─13626 /usr/sbin/apache2 -k start
           ├─13627 /usr/sbin/apache2 -k start
           ├─13628 /usr/sbin/apache2 -k start
           ├─13629 /usr/sbin/apache2 -k start
           └─13630 /usr/sbin/apache2 -k start

Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server.
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server...
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]:  * Starting Apache httpd web server apache2
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam
Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]:  *
Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

Installer des modules PHP

Pour améliorer les fonctionnalités de PHP, nous pouvons éventuellement installer des modules supplémentaires.

Pour voir les options disponibles pour les modules et bibliothèques PHP, vous pouvez diriger les résultats deapt-cache search dansless, un pager qui vous permet de faire défiler la sortie d'autres commandes:

apt-cache search php- | less

Utilisez les touches fléchées pour faire défiler vers le haut et vers le bas etq pour quitter.

Les résultats sont tous des composants facultatifs que vous pouvez installer. Il vous donnera une brève description pour chacun:

libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
…
:

Pour obtenir plus d'informations sur chaque module, vous pouvez effectuer une recherche sur Internet ou consulter la description longue du paquet en tapant:

apt-cache show package_name

Il y aura beaucoup de sortie, avec un champ appeléDescription-en qui expliquera plus en détail les fonctionnalités fournies par le module.

Par exemple, pour savoir ce que fait le modulephp-cli, nous pourrions taper ceci:

apt-cache show php-cli

Outre de nombreuses autres informations, vous trouverez quelque chose qui ressemble à ceci:

Output…
Description-en: 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 Debian's default
 PHP version (currently 7.0).
…

Si, après des recherches, vous décidez que vous souhaitez installer un paquet, vous pouvez le faire en utilisant la commandeapt-get install comme nous l'avons fait pour nos autres logiciels.

Si nous décidons quephp-cli est quelque chose dont nous avons besoin, nous pourrions taper:

sudo apt-get install php-cli

Si vous souhaitez installer plusieurs modules, vous pouvez le faire en listant chacun d'eux, séparés par un espace, en suivant la commandeapt-get install, comme ceci:

sudo apt-get install package1 package2 ...

À ce stade, votre pile LAMP est installée et configurée. Nous devrions quand même tester notre PHP.

Étape 4: Testez le traitement PHP sur votre serveur Web

Afin de vérifier que notre système est correctement configuré pour PHP, nous pouvons créer un script PHP très basique.

Nous appellerons ce scriptinfo.php. Pour qu'Apache trouve le fichier et le serve correctement, il doit être enregistré dans un répertoire très spécifique, appelé "racine Web".

Dans Ubuntu 16.04, ce répertoire est situé à/var/www/html/. Nous pouvons créer le fichier à cet emplacement en tapant:

sudo nano /var/www/html/info.php

Cela ouvrira un fichier vierge. Nous voulons mettre le texte suivant, qui est un code PHP valide, dans le fichier:

info.php

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

Nous pouvons maintenant vérifier si notre serveur Web peut afficher correctement le contenu généré par un script PHP. Pour essayer cela, il suffit de visiter cette page dans votre navigateur Web. Vous aurez à nouveau besoin de l’adresse IP publique de votre serveur.

L'adresse que vous souhaitez visiter sera:

http://your_server_IP_address/info.php

La page à laquelle vous venez devrait ressembler à ceci:

Ubuntu 16.04 default PHP info

Cette page vous fournit essentiellement des informations sur votre serveur du point de vue de PHP. C'est utile pour le débogage et pour vous assurer que vos paramètres sont appliqués correctement.

Si cela réussit, votre PHP fonctionne comme prévu.

Vous voudrez probablement supprimer ce fichier après ce test, car il pourrait en fait fournir des informations sur votre serveur à des utilisateurs non autorisés. Pour ce faire, vous pouvez taper ceci:

sudo rm /var/www/html/info.php

Vous pouvez toujours recréer cette page si vous devez accéder aux informations ultérieurement.

Conclusion

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

Lors de la prochaine étape, vous devez vous assurer que les connexions à votre serveur Web sont sécurisées en les desservant via HTTPS. L'option la plus simple ici est deuse Let’s Encrypt pour sécuriser votre site avec un certificat TLS / SSL gratuit.

Quelques autres options populaires sont:

Note: Nous mettrons à jour les liens ci-dessus vers notre documentation 16.04 au fur et à mesure de sa rédaction.