Comment installer la pile Linux, Nginx, MySQL, PHP (LEMP) sur Ubuntu 14.04

De Get Docs
Aller à :navigation, rechercher

Introduction

La pile logicielle LEMP est un groupe de logiciels qui peuvent être utilisés pour servir des pages Web dynamiques et des applications Web. Il s'agit d'un acronyme qui décrit un système d'exploitation Linux, avec un serveur Web Nginx. Les données backend sont stockées dans MySQL et le traitement dynamique est géré par PHP.

Dans ce guide, nous montrerons comment installer une pile LEMP sur un serveur Ubuntu 14.04. Le système d'exploitation Ubuntu prend en charge la première exigence. Nous décrirons comment faire fonctionner le reste des composants.

Remarque : La pile LEMP peut être installée automatiquement sur votre droplet en ajoutant ce script à ses données utilisateur lors de son lancement. Consultez ce didacticiel pour en savoir plus sur les données utilisateur Droplet.


Conditions préalables

Avant de terminer ce didacticiel, vous devez disposer d'un compte d'utilisateur standard non root sur votre serveur avec les privilèges sudo. Vous pouvez apprendre à configurer ce type de compte en suivant les étapes 1 à 4 de notre Configuration initiale du serveur Ubuntu 14.04.

Une fois que votre compte est disponible, connectez-vous à votre serveur avec ce nom d'utilisateur. Vous êtes maintenant prêt à commencer les étapes décrites dans ce guide.

1. Installer le serveur Web Nginx

Afin d'afficher les pages Web aux visiteurs de notre site, nous allons utiliser Nginx, un serveur Web moderne et efficace.

Tous les logiciels que nous obtiendrons pour cette procédure proviendront directement des référentiels de packages par défaut d'Ubuntu. Cela signifie que nous pouvons utiliser la suite de gestion de packages apt pour terminer l'installation.

Comme c'est la première fois que nous utilisons apt pour cette session, nous devrions commencer par mettre à jour notre index de package local. On peut alors installer le serveur :

sudo apt-get update
sudo apt-get install nginx

Dans Ubuntu 14.04, Nginx est configuré pour commencer à s'exécuter lors de l'installation.

Vous pouvez tester si le serveur est opérationnel en accédant au nom de domaine ou à l'adresse IP publique de votre serveur dans votre navigateur Web.

Si vous n'avez pas de nom de domaine pointé vers votre serveur et que vous ne connaissez pas l'adresse IP publique de votre serveur, vous pouvez la trouver en tapant l'un des éléments suivants dans votre terminal :

 adresse ip afficher eth0 |  grep inet |  awk '{ imprime $2 ;  }' |  sed 's//.*$//'
  111.111.111.111 fe80::601:17ff:fe61:9801

Ou vous pouvez essayer d'utiliser :

 boucle  http://icanhazip.com
  111.111.111.111

Essayez l'une des lignes que vous recevez dans votre navigateur Web. Cela devrait vous amener à la page de destination par défaut de Nginx :

http:// nom_domaine_serveur_ou_IP

Si vous voyez la page ci-dessus, vous avez installé Nginx avec succès.

2. Installer MySQL pour gérer les données du site

Maintenant que nous avons un serveur Web, nous devons installer MySQL, un système de gestion de base de données, pour stocker et gérer les données de notre site.

Vous pouvez l'installer facilement en tapant :

sudo apt-get install mysql-server

Il vous sera demandé de fournir un mot de passe root (administrateur) à utiliser dans le système MySQL.

Le logiciel de base de données MySQL est maintenant installé, mais sa configuration n'est pas encore tout à fait terminée.

Tout d'abord, nous devons dire à MySQL de générer la structure de répertoires dont il a besoin pour stocker ses bases de données et ses informations. Nous pouvons le faire en tapant:

sudo mysql_install_db

Ensuite, vous voudrez exécuter un script de sécurité simple qui vous invitera à modifier certaines valeurs par défaut non sécurisées. Commencez le script en tapant :

sudo mysql_secure_installation

Vous devrez entrer le mot de passe root MySQL que vous avez sélectionné lors de l'installation.

Ensuite, il vous demandera si vous souhaitez modifier ce mot de passe. Si vous êtes satisfait de votre mot de passe root MySQL, tapez "N" pour non et appuyez sur "ENTRER". Ensuite, vous serez invité à supprimer certains utilisateurs et bases de données de test. Vous devez simplement appuyer sur "ENTRER" à travers ces invites pour supprimer les paramètres par défaut dangereux.

Une fois le script exécuté, MySQL est prêt à fonctionner.

3. Installer PHP pour le traitement

Nous avons maintenant installé Nginx pour servir nos pages et MySQL pour stocker et gérer nos données, mais nous avons encore besoin de quelque chose pour connecter ces deux éléments et générer du contenu dynamique. Nous pouvons utiliser PHP pour cela.

Étant donné que Nginx ne contient pas de traitement PHP natif comme certains autres serveurs Web, nous devrons installer php5-fpm, qui signifie « gestionnaire de processus fastCGI ». Nous dirons à Nginx de transmettre les requêtes PHP à ce logiciel pour traitement.

Nous pouvons installer ce module et récupérerons également un package d'assistance supplémentaire qui permettra à PHP de communiquer avec notre backend de base de données. L'installation récupérera les fichiers de base PHP nécessaires. Faites cela en tapant :

sudo apt-get install php5-fpm php5-mysql

Configurer le processeur PHP

Nos composants PHP sont maintenant installés, mais nous devons apporter une légère modification à la configuration pour rendre notre configuration plus sécurisée.

Ouvrez le fichier de configuration principal php5-fpm avec les privilèges root :

sudo nano /etc/php5/fpm/php.ini

Ce que nous recherchons dans ce fichier est le paramètre qui définit cgi.fix_pathinfo. Cela sera commenté avec un point-virgule (;) et mis à "1" par défaut.

Il s'agit d'un paramètre extrêmement peu sûr car il indique à PHP d'essayer d'exécuter le fichier le plus proche qu'il peut trouver si un fichier PHP ne correspond pas exactement. Cela permettrait essentiellement aux utilisateurs de créer des requêtes PHP d'une manière qui leur permettrait d'exécuter des scripts qu'ils ne devraient pas être autorisés à exécuter.

Nous allons changer ces deux conditions en décommentant la ligne et en la mettant à "0" comme ceci :

cgi.fix_pathinfo=0

Enregistrez et fermez le fichier lorsque vous avez terminé.

Maintenant, il nous suffit de redémarrer notre processeur PHP en tapant :

sudo service php5-fpm restart

Cela mettra en œuvre la modification que nous avons apportée.

4. Configurer Nginx pour utiliser notre processeur PHP

Maintenant, nous avons tous les composants requis installés. Le seul changement de configuration que nous devons encore faire est de dire à Nginx d'utiliser notre processeur PHP pour le contenu dynamique.

Nous faisons cela au niveau du bloc serveur (les blocs serveur sont similaires aux hôtes virtuels d'Apache). Ouvrez le fichier de configuration de bloc de serveur Nginx par défaut en tapant :

sudo nano /etc/nginx/sites-available/default

Actuellement, avec les commentaires supprimés, le fichier de blocage du serveur par défaut de Nginx ressemble à ceci :

 serveur { écouter 80 default_server ;  écoutez [::]:80 default_server ipv6only=on ;
root /usr/share/nginx/html;
index index.html index.htm;

server_name localhost;

location / {
    try_files $uri $uri/ =404;
}

}

Nous devons apporter quelques modifications à ce fichier pour notre site.

  • Tout d'abord, nous devons ajouter une option index.php comme première valeur de notre directive index pour permettre aux fichiers d'index PHP d'être servis lorsqu'un répertoire est demandé.
  • Nous devons également modifier la directive server_name pour qu'elle pointe vers le nom de domaine ou l'adresse IP publique de notre serveur.
  • Le fichier de configuration réel comprend des lignes commentées qui définissent les routines de traitement des erreurs. Nous les décommenterons pour inclure cette fonctionnalité.
  • Pour le traitement PHP proprement dit, nous devrons décommenter une partie d'une autre section. Nous devrons également ajouter une directive try_files pour nous assurer que Nginx ne transmet pas de mauvaises requêtes à notre processeur PHP.

Les modifications que vous devez apporter sont en rouge dans le texte ci-dessous :

 serveur { écouter 80 default_server ;  écoutez [::]:80 default_server ipv6only=on ;
root /usr/share/nginx/html;
index <span class="highlight">index.php</span> index.html index.htm;

server_name <span class="highlight">server_domain_name_or_IP</span>;

location / {
    try_files $uri $uri/ =404;
}

<span class="highlight">error_page 404 /404.html;</span>
<span class="highlight">error_page 500 502 503 504 /50x.html;</span>
<span class="highlight">location = /50x.html {</span>
    <span class="highlight">root /usr/share/nginx/html;</span>
<span class="highlight">}</span>

<span class="highlight">location ~ \.php$ {</span>
    <span class="highlight">try_files $uri =404;</span>
    <span class="highlight">fastcgi_split_path_info ^(.+\.php)(/.+)$;</span>
    <span class="highlight">fastcgi_pass unix:/var/run/php5-fpm.sock;</span>
    <span class="highlight">fastcgi_index index.php;</span>
    <span class="highlight">fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</span>
    <span class="highlight">include fastcgi_params;</span>
<span class="highlight">}</span>

}

Lorsque vous avez effectué les modifications ci-dessus, vous pouvez enregistrer et fermer le fichier.

Redémarrez Nginx pour apporter les modifications nécessaires :

sudo service nginx restart

5. Créer un fichier PHP pour tester la configuration

Votre pile LEMP devrait maintenant être complètement configurée. Nous devons encore tester pour nous assurer que Nginx peut correctement transmettre les fichiers .php à notre processeur PHP.

Nous pouvons le faire en créant un fichier PHP de test dans notre racine de document. Ouvrez un nouveau fichier appelé info.php dans la racine de votre document dans votre éditeur de texte :

sudo nano /usr/share/nginx/html/info.php

Nous pouvons le saisir dans le nouveau fichier. Ceci est un code PHP valide qui renverra des informations formatées sur notre serveur :

<?php
phpinfo();
?>

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

Maintenant, vous pouvez visiter cette page dans votre navigateur Web en visitant le nom de domaine ou l'adresse IP publique de votre serveur suivi de /info.php :

http:// nom_domaine_serveur_ou_IP /info.php

Vous devriez voir une page Web qui a été générée par PHP avec des informations sur votre serveur :

Si vous voyez une page qui ressemble à ceci, vous avez configuré le traitement PHP avec Nginx avec succès.

Après avoir testé cela, il est probablement préférable de supprimer le fichier que vous avez créé car il peut en fait donner aux utilisateurs non autorisés des indices sur votre configuration qui peuvent les aider à essayer de s'introduire. Vous pouvez toujours régénérer ce fichier si vous en avez besoin ultérieurement.

Pour l'instant, supprimez le fichier en tapant :

sudo rm /usr/share/nginx/html/info.php

Conclusion

Vous devriez maintenant avoir une pile LEMP configurée sur votre serveur Ubuntu 14.04. Cela vous donne une base très flexible pour fournir du contenu Web à vos visiteurs.

Par Justin Ellingwood