Comment installer la pile Linux, nginx, MySQL, PHP (LEMP) sur CentOS 6
Vous n'utilisez pas CentOS 6 ?Choisissez une version ou une distribution différente.
Statut : Obsolète
Cet article couvre une version de CentOS qui n'est plus supportée. Si vous utilisez actuellement un serveur fonctionnant sous CentOS 6, nous recommandons vivement de mettre à niveau ou de migrer vers une version supportée de CentOS.
Raison : CentOS 6 a atteint la fin de sa vie (EOL) le 30 novembre 2020 et ne reçoit plus de correctifs de sécurité ni de mises à jour. Pour cette raison, ce guide n'est plus maintenu.
Voir plutôt :
Ce guide peut encore être utile comme référence, mais peut ne pas fonctionner sur d'autres versions de CentOS. Si disponible, nous recommandons vivement d'utiliser un guide écrit pour la version de CentOS que vous utilisez.
Le tutoriel suivant de Linux-Console.net peut être intéressant, car il explique comment installer une pile LEMP sur un serveur CentOS 7 :
- Comment installer la pile Linux, Nginx, MySQL, PHP (LEMP) sur CentOS 7
À propos de Lemp
La pile LEMP est un groupe de logiciels open source pour mettre en place des serveurs web. L'acronyme signifie Linux, nginx (prononcé Engine x), MySQL et PHP. Puisque le serveur fonctionne déjà sous CentOS, la partie Linux est déjà prise en charge. Voici comment installer le reste.
Étape un—Installez les dépôts requis
Nous allons installer tous les logiciels requis avec Yum. Cependant, comme nginx n'est pas disponible directement depuis CentOS, nous devrons installer le dépôt epel.
sudo yum install epel-releaseÉtape Deux—Installer MySQL
L'étape suivante consiste à commencer l'installation du logiciel serveur sur le serveur privé virtuel, en commençant par MySQL et ses dépendances.
sudo yum install mysql-serverUne fois le téléchargement terminé, redémarrez MySQL :
sudo /etc/init.d/mysqld restartVous pouvez effectuer une certaine configuration de MySQL avec cette commande :
sudo /usr/bin/mysql_secure_installationL'invite vous demandera votre mot de passe root actuel.
Comme vous venez d’installer MySQL, vous n’en aurez très probablement pas, alors laissez-le vide en appuyant sur Entrée.
Enter current password for root (enter for none):
OK, successfully used password, moving on...Ensuite, l'invite vous demandera si vous voulez définir un mot de passe root. Allez-y et choisissez Y, puis suivez les instructions.
CentOS automatise le processus de configuration de MySQL, en vous posant une série de questions oui ou non.
Il est plus facile de simplement dire Oui à toutes les options. À la fin, MySQL se rechargera et appliquera les modifications.
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!Étape trois — Installer nginx
Comme pour MySQL, nous allons installer nginx sur notre serveur privé virtuel en utilisant yum :
sudo yum install nginxnginx ne démarre pas tout seul. Pour lancer nginx, tapez :
sudo /etc/init.d/nginx startVous pouvez confirmer que nginx est installé sur votre serveur privé virtuel en dirigeant votre navigateur vers votre adresse IP.
Vous pouvez exécuter la commande suivante pour révéler l'adresse IP de votre serveur.
ifconfig eth0 | grep inet | awk '{ print $2 }'Étape quatre — Installer PHP
Le paquet php-fpm se trouve dans le dépôt REMI, qui, à ce stade, est désactivé. La première chose que nous devons faire est d'activer le dépôt REMI et d'installer php et php-fpm :
sudo yum install php-fpm php-mysqlÉtape cinq — Configurer php
Nous devons apporter un petit changement dans la configuration de php. Ouvrez php.ini :
sudo vi /etc/php.iniTrouvez la ligne, cgi.fix_pathinfo=1, et changez le 1 en 0.
cgi.fix_pathinfo=0Si ce nombre est maintenu à 1, l'interpréteur PHP fera de son mieux pour traiter le fichier qui se rapproche le plus du fichier demandé. C'est un risque de sécurité potentiel. Si ce nombre est réglé sur 0, inversement, l'interpréteur ne traitera que le chemin de fichier exact—une alternative beaucoup plus sûre. Enregistrez et quittez.
Étape Six—Configurer nginx
Ouvrez le fichier de configuration nginx par défaut :
sudo vi /etc/nginx/nginx.confAugmentez le nombre de processus de travail à 4, puis enregistrez et quittez ce fichier.
Nous devrions maintenant configurer les hôtes virtuels nginx.
Afin de rendre le fichier nginx par défaut plus concis, les détails de l'hôte virtuel se trouvent à un autre endroit.
sudo vi /etc/nginx/conf.d/default.confLa configuration doit inclure les modifications ci-dessous (les détails des modifications se trouvent sous les informations de configuration) :
#
# The default server
#
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}Voici les détails des changements :
- Ajoutez index.php dans la ligne d'index.
- Changez le server_name par votre nom de domaine ou votre adresse IP (remplacez le example.com dans la configuration)
- Changez la racine en /usr/share/nginx/html ;
- Décommentez la section commençant par "location ~ \.php$ {"
- Changez la racine pour accéder à la racine réelle du document, /usr/share/nginx/html;
- Modifiez la ligne fastcgi_param pour aider l'interpréteur PHP à trouver le script PHP que nous avons stocké dans le répertoire racine du document.
Enregistrer et quitter
Ouvrez la configuration de php-fpm :
sudo vi /etc/php-fpm.d/www.confRemplacez apache dans l'utilisateur et le groupe par nginx :
[...]
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
[...]Terminez en redémarrant php-fpm.
sudo service php-fpm restartÉtape Sept—RÉSULTATS : Créez une page php info
Bien que LEMP soit installé, nous pouvons toujours jeter un coup d'œil et voir les composants en ligne en créant une page php info rapide
Pour configurer cela, créez d'abord un nouveau fichier :
sudo vi /usr/share/nginx/html/info.phpAjoutez la ligne suivante :
<?php
phpinfo();
?>Puis sauvegardez et quittez.
Redémarrez nginx afin que toutes les modifications prennent effet :
sudo service nginx restartTerminez en visitant votre page d'informations php (assurez-vous de remplacer l'adresse IP d'exemple par la vôtre) : http://12.34.56.789/info.php
Cela devrait ressembler à ceci.
Huitième étape—Configurer le démarrage automatique
Vous avez presque terminé. La dernière étape consiste à configurer tous les programmes nouvellement installés pour qu'ils démarrent automatiquement lorsque le VPS s'allume.
sudo chkconfig --levels 235 mysqld on
sudo chkconfig --levels 235 nginx on
sudo chkconfig --levels 235 php-fpm on