GNU/Linux >> Tutoriels Linux >  >> AlmaLinux

Comment installer la pile LEMP (Nginx, MariaDB et PHP) sur AlmaLinux 8

LEMP est une collection de logiciels open source qui sont couramment utilisés ensemble pour servir des applications Web. Le terme LEMP est un acronyme qui représente la configuration d'un système d'exploitation Linux avec un Nginx (prononcé engine-x , d'où le E dans l'acronyme) serveur Web, avec des données de site stockées dans une base de données MySQL ou MariaDB et un contenu dynamique traité par PHP qui est couramment utilisé pour l'hébergement de sites Web étendus en raison de ses performances et de son évolutivité.

Dans le tutoriel suivant, vous apprendrez comment installer LEMP (Nginx, MariaDB, PHP 8.0) sur AlmaLinux 8 .

Prérequis

  • OS recommandé : AlmaLinux 8.
  • Compte utilisateur : Un compte utilisateur avec des privilèges sudo ou accès root (commande su) .

Mise à jour du système d'exploitation

Mettez à jour votre AlmaLinux système d'exploitation pour s'assurer que tous les packages existants sont à jour :

sudo dnf upgrade --refresh -y

Le tutoriel utilisera la commande sudo et en supposant que vous avez le statut sudo . Pour vérifier le statut sudo sur votre compte :

sudo whoami

Exemple de sortie montrant l'état de sudo :

[joshua@localhost ~]$ sudo whoami
root

Si vous n'avez pas configuré de compte utilisateur sudo et que vous souhaitez le faire, consultez notre tutoriel sur Comment ajouter un utilisateur à Sudoers sur AlmaLinux .

Pour utiliser le compte racine , utilisez la commande suivante avec le mot de passe root pour vous connecter.

su

Installer Nginx

Pour lancer l'installation de la pile LEMP, vous devrez installer le serveur Web Nginx, ce qui peut être fait avec la commande de terminal suivante :

sudo dnf install nginx

Exemple de résultat :

Tapez (O), puis appuyez sur (TOUCHE ENTRÉE) pour continuer.

Confirmez l'installation en vérifiant la version de compilation :

nginx -v

Exemple de résultat :

nginx version: nginx/1.14.1

Par défaut, lors de l'installation de Nginx sur AlmaLinux, il n'est pas activé. Pour activer au démarrage et démarrer, utilisez ce qui suit :

sudo systemctl enable nginx && sudo systemctl start nginx

Exemple d'activation réussie de (lien symbolique) :

Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

Maintenant, vérifiez l'état de votre service Nginx avec la commande de terminal suivante :

systemctl status nginx

Exemple de sortie indiquant que tout va bien :

C'est une bonne idée d'autoriser le trafic HTTP via votre pare-feu avec la commande suivante :

sudo firewall-cmd --zone=public --add-service=http --permanent 

Rechargez le pare-feu avec la commande suivante :

sudo firewall-cmd --reload

Maintenant, vous pouvez confirmer que votre serveur Web Nginx est opérationnel en entrant HTTP://server-ip ou HTTP://nom-de-domaine dans votre navigateur Internet, et vous devriez obtenir ce qui suit :

Installer et configurer MariaDB

Installation

MariaDB remplace MySQL et a été développée par d'anciens membres de l'équipe MySQL qui craignaient qu'Oracle ne transforme MySQL en un produit à source fermée et potentiellement payant.

Entrez la commande suivante pour installer MariaDB :

sudo dnf install mariadb-server mariadb

Exemple de résultat :

Tapez (O), puis appuyez sur (TOUCHE ENTRÉE) pour continuer.

Pour confirmer l'installation de MariaDB et vérifier quel build est installé, tapez la commande suivante :

mysql --version

Exemple de résultat :

mysql  Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1

Par défaut, MariaDB n'est pas activé de la même manière que Nginx auparavant. Pour démarrer et activer MariaDB au démarrage du système, utilisez la commande (systemctl) suivante commande terminal :

sudo systemctl enable mariadb && sudo systemctl start mariadb

Exemple d'activation réussie de (lien symbolique) :

Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

Maintenant, assurez-vous que tout est opérationnel avec la commande suivante :

systemctl status mariadb

Exemple de sortie indiquant que tout va bien :

Configuration

Maintenant que MariaDB est opérationnel sur votre système AlmaLinux, vous devez exécuter le script de sécurité post-installation car les paramètres par défaut doivent être revus car ils ne sont souvent pas sécurisés. Ceci est fortement recommandé de ne pas sauter.

Tout d'abord, exécutez la commande d'installation sécurisée de MariaDB comme suit :

sudo mysql_secure_installation

Ensuite, vous recevrez une invite vous demandant d'entrer votre (mot de passe root MariaDB). Pour l'instant, appuyez sur (ENTER) car le mot de passe root n'est pas encore défini comme ci-dessous :

Ensuite, tapez (Y) et appuyez sur Entrée pour configurer le (racine) mot de passe comme ci-dessous :

La prochaine série de questions que vous pouvez appuyer en toute sécurité sur (ENTER) , qui répondra (Y) à toutes les questions suivantes qui vous demandent de (supprimer les utilisateurs anonymes, désactiver la connexion root à distance et supprimer la base de données de test) . Notez le (O) est en majuscule, ce qui signifie qu'il s'agit de la réponse par défaut lorsque vous appuyez sur (ENTER) clé.

Exemple ci-dessous :

Aperçu de ce qui aurait dû être fait ci-dessus :

  • Définition du mot de passe pour root comptes.
  • Suppression des comptes racine accessibles depuis l'extérieur de l'hôte local.
  • Suppression des comptes d'utilisateurs anonymes
  • Suppression de la base de données de test, accessible par défaut aux utilisateurs anonymes.

Cette étape est essentielle pour la sécurité de la base de données MariaDB et ne doit pas être modifiée ou ignorée à moins que vous ne sachiez ce que vous faites.

Maintenant, connectez-vous au terminal de la base de données MariaDB avec la commande suivante :

sudo mysql -u root -p

Vous serez invité à entrer le mot de passe racine que vous avez défini dans la configuration de l'installation ou dans le script de sécurité post-installation. Une fois à l'intérieur de l'instance de service MySQL, vous pouvez exécuter la commande suivante en tant que test pour la voir en fonctionnement.

Tapez la commande AFFICHER LA BASE DE DONNÉES suivante :

SHOW DATABASES;

Pour ceux qui découvrent MySQL et MariaDB, toutes les commandes doivent se terminer par ".

Exemple :

Pour quitter le terminal de la base de données MariaDB, tapez (exit;) comme suit :

exit;

Installer PHP (PHP-FPM)

Importer le référentiel PHP 8.0

La dernière partie à installer dans votre installation LEMP est PHP. Vous devrez installer (PHP-FPM) qui est l'abréviation de (FastCGI Process Manager) . Il est fortement recommandé d'installer PHP (Remi) dépôt. Pour ceux qui ne le savent pas, Remi est le mainteneur des versions PHP de la famille Rhel. Pour le tutoriel, nous installerons le dernier PHP 8.0 :

La première tâche consiste à installer le (EPEL ) référentiel, qui signifie (Extra Packages for Enterprise Linux). Pour les utilisateurs plus récents de Rhel et AlmaLinux, EPEL contient les packages logiciels les plus couramment utilisés pour Enterprise Linux.

Pour installer EPEL, utilisez le code (dnf) suivant commande terminal :

sudo dnf install epel-release

Exemple de résultat :

Tapez (O), puis appuyez sur (TOUCHE ENTRÉE) pour continuer.

Maintenant que vous avez ajouté le référentiel EPEL, activez (référentiel Remi) avec ce qui suit :

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Tapez (O), puis appuyez sur (TOUCHE ENTRÉE) pour continuer.

Ensuite, utilisez le (dnf) commande pour mettre à jour votre liste de dépôts :

sudo dnf update

Vous remarquerez une requête dans votre terminal concernant l'importation de la (clé GPG) pour le référentiel Remi comme ci-dessous :

Tapez (O), puis appuyez sur (TOUCHE ENTRÉE) pour continuer.

Notez que vous serez invité deux fois de plus à taper (Y) deux fois de plus pour importer plus de clés GPG. C'est très bien à faire.

Ensuite, vous serez invité à mettre à jour la version EPEL :

Exemple :

Tapez (O), puis appuyez sur (TOUCHE ENTRÉE) pour continuer.

Votre référentiel EPEL est maintenant à jour et vous êtes prêt à passer à la partie suivante du didacticiel.

Activer le référentiel PHP 8.0 (Remi)

PHP 7.2 est le choix PHP par défaut pour une installation standard sur Rhel/Alma Linux avec le référentiel de Remi. Une astuce rapide consiste à utiliser le (list php) commande pour voir les options disponibles et la valeur par défaut. La commande suivante peut le faire :

sudo dnf module list php

Vous obtiendrez la sortie suivante comme ci-dessous. Notez le (d) tag pour PHP par défaut à installer :

Comme vous pouvez le voir ci-dessus, la balise (d) se trouve à côté de PHP 7.2, que vous devrez réinitialiser et modifier pour procéder à l'installation de PHP 8.0 sur AlmaLinux. Pour réinitialiser la liste PHP, rien de plus simple avec la commande suivante :

sudo dnf module list reset php

Ensuite, activez PHP 8.0 avec la commande suivante :

sudo dnf module enable php:remi-8.0 -y

Exemple de sortie une fois terminé :

Notez que vous pouvez activer PHP-7.4 en suivant la commande de réinitialisation du module dnf et en utilisant la commande dnf module enable php:remi-7.4 à la place. Choisissez la version dont vous avez besoin pour l'application, et ceci était juste un exemple d'avoir la dernière version PHP de n'importe quel choix PHP que vous décidez.

Installer PHP 8.0

Maintenant que vous avez ajouté le référentiel Remi PHP et activé PHP 8.0 comme version par défaut sur votre système AlmaLinux, vous pouvez installer PHP 8.0 avec la commande suivante :

sudo dnf install php

Exemple de résultat :

Tapez (O), puis appuyez sur (TOUCHE ENTRÉE) pour continuer.

Si vous souhaitez installer les extensions les plus couramment utilisées pour PHP 8.0, utilisez la commande suivante :

sudo dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imap php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml

Remarque, supprimez les options que vous ne voulez pas, ceci est facultatif.

Exemple de résultat :

Tapez (O), puis appuyez sur (TOUCHE ENTRÉE) pour continuer.

Maintenant que vous avez installé PHP 8.0 et les extensions, vérifiez la version avec la commande suivante :

php -v

Exemple de résultat :

PHP 8.0.10 (cli) (built: Aug 24 2021 15:40:40) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies

Enfin, PHP-FPM comme Nginx et MariaDB avant qu'il ne soit activé par défaut, pour activer PHP-FPM au démarrage du système et pour le démarrer, utilisez le suivant (systemctl) commande :

sudo systemctl enable php-fpm && sudo systemctl start php-fpm

Exemple d'activation réussie de (symlink) :

Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

Maintenant, comme auparavant pour vérifier l'état des autres exigences de votre installation LEMP, utilisez les éléments suivants :(systemctl) commande terminal pour vérifier l'état afin de s'assurer que tout fonctionne :

systemctl status php-fpm

Si aucune erreur n'est présente, vous devriez obtenir le résultat suivant :

Contrairement aux installations LEMP sur Debian/Ubuntu qui utilisent le (www-data) utilisateur, ce n'est pas le cas avec les installations de la famille RHEL. Par défaut sur AlmaLinux, le service PHP-FPM est conçu pour être exécuté (Apache) user, ce qui est incorrect puisque nous utilisons Nginx, et cela devait être corrigé.

Tout d'abord, ouvrez suivant (www.conf) fichier de configuration :

sudo nano /etc/php-fpm.d/www.conf

Ensuite, remplacez le (Apache) utilisateur et groupe avec le (Nginx) utilisateur et groupe :

Pour enregistrer, appuyez sur (CTRL+O) puis quittez (CTRL+X) .

Maintenant, vous allez également recharger ou redémarrer votre service PHP-FPM :

sudo systemctl restart php-fpm

Créer une page de destination PHP test

Pour tester PHP-FPM avec le serveur Web Nginx, vous devez créer un fichier dans le répertoire webroot.

Pour le guide, vous nommerez le fichier (info.php) comme suit :

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

Collez ce qui suit le (info.php) fichier :

<?php

phpinfo();

?>

Enregistrez le fichier (CTRL+O), puis quittez (CTRL+X) .

Maintenant, dans la barre d'adresse de votre navigateur Internet, entrez (server-ip-address/info.php) . Si vous avez installé Nginx sur votre ordinateur local, utilisez la valeur par défaut (127.0.0.1/info.php) ou (localhost/info.php) .

Vous devriez voir les informations PHP de votre serveur :

Ces informations montrent que les scripts PHP peuvent s'exécuter correctement avec le serveur Web Nginx.

Pour des raisons de sécurité, vous devez supprimer le fichier. Pour cela, utilisez la commande suivante :

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

Si vous préférez conserver le fichier à des fins futures, ajoutez ce qui suit à votre fichier de bloc de serveur Nginx dans le serveur {} rubrique :

    location ^~ /info.php {
     allow <YOUR IP ADDRESS>; 
     deny all;
    }

Cela permettra uniquement à l'adresse IP spécifiée d'accéder au fichier. Il est conseillé de cacher autant d'informations système aux pirates potentiels et aux acteurs malveillants.

Créer un bloc de serveur Nginx

Un bloc de serveur Nginx est l'équivalent d'un hôte virtuel dans Apache, qui contient une configuration pour votre serveur Web Nginx qui répond aux visiteurs publics. Vous trouverez ci-dessous un exemple complet de la façon d'y parvenir avec PHP-FPM à l'esprit.

Créer des répertoires de blocs de serveur

Le (.conf) les fichiers sont normalement situés dans (sites-available) et (compatible avec les sites). Les utilisateurs provenant de différentes distributions remarqueraient que cela serait déjà installé; cependant, pour AlmaLinux, vous devrez les créer.

Créez les deux (sites) requis répertoire avec la commande suivante :

sudo mkdir /etc/nginx/sites-available && sudo mkdir /etc/nginx/sites-enabled

Modifier le fichier de configuration Nginx

Après avoir créé les répertoires nécessaires, modifiez le fichier de configuration principal de Nginx (nginx.conf) comme suit :

sudo nano /etc/nginx/nginx.conf

Collez ensuite les quelques lignes suivantes dans le (HTTP) section de la (nginx.conf) fichier de configuration :

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Exemple :

Remarque, (server_names_hash_bucket_size) augmente la mémoire allouée à l'analyse des noms de domaine.

Enregistrez la configuration avec (CLTR+O) puis (CTRL+X) pour quitter.

Créer un fichier de configuration de bloc de serveur

Créez maintenant un fichier de bloc de serveur à l'aide de n'importe quel éditeur de texte, le guide utilisera (nano) :

sudo nano /etc/nginx/sites-available/example.com.conf

Ensuite, vous devez configurer le fichier de configuration avec un exemple de travail avec PHP-FPM activé.

Un exemple est fourni ci-dessous pour que vous puissiez copier et coller. Remarque pour remplacer (server_name) avec votre nom de domaine ou IP :

server {
  listen 80;
  listen [::]:80;
  server_name example.com www.example.com;
  root /var/www/html/example.com/;
  index index.php index.html index.htm index.nginx-debian.html;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;

  }

 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # disable access to hidden files
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Enregistrez maintenant le bloc serveur avec (CTRL+O), puis quittez avec (CTRL+X) .

Créer une page de destination de test

Une bonne idée est de créer un exemple de site de test. Vous trouverez ci-dessous une configuration standard de test index.html :

Si vous n'avez pas encore créé votre répertoire Web permanent ou de test :

sudo mkdir -p /var/www/htmlexample.com/

Vous devrez configurer les autorisations, et vous pouvez définir comme utilisateur actuellement connecté avec le $USER variables :

sudo chown -R $USER:$USER /var/www/html/example.com/

Le dernier paramètre d'autorisation est d'autoriser le public à lire le répertoire Web (accéder à votre site) en utilisant l'autorisation chmod 755 :

sudo chmod -R 755 /var/www

Ensuite, créez le index.html fichier :

sudo nano /var/www/html/example.com/index.html

Collez le contenu ci-dessous. Comme vous pouvez le voir, c'est assez basique car nous ne l'utilisons qu'à des fins de test.

<html>
  <head>
    <title>You have reached Example.com!</title>
  </head>
  <body>
    <h1>Congratulations! The server block is active!</h1>
  </body>
</html>

Enregistrez la configuration avec (CLTR+O) puis (CTRL+X) pour quitter.

Activer le blocage du serveur Nginx

Vous êtes maintenant dans les étapes finales et il est maintenant temps d'activer le fichier de configuration du bloc de serveur. Pour cela, vous devez créer un lien symbolique (symlink) pour le fichier de configuration du bloc serveur dans (sites-available) répertoire vers le (sites-enabled) répertoire à l'aide de la commande suivante :

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

Tester le bloc de serveur Nginx

Pour finir, vous devez toujours faire un essai avant de redémarrer ou de recharger votre service Nginx, ce qui est essentiel si vous travaillez dans un environnement réel. Tapez la commande suivante pour tester votre fichier de configuration de bloc de serveur :

sudo nginx -t

S'il n'y a pas d'erreurs, vous obtiendrez le résultat suivant :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ensuite, ouvrez votre navigateur Internet et entrez votre adresse de domaine (example.com) pour tester si votre serveur est joignable.

Félicitations, vous avez créé avec succès un bloc de serveur Nginx qui est PHP-FPM prêt.

Sécuriser Nginx avec le certificat gratuit Let's Encrypt SSL

Idéalement, vous voudriez exécuter votre Nginx sur HTTPS en utilisant un certificat SSL . La meilleure façon de le faire est d'utiliser Let's Encrypt, une autorité de certification gratuite, automatisée et ouverte gérée par le Groupe de recherche sur la sécurité Internet (ISRG) à but non lucratif .

Tout d'abord, installez le EPEL référentiel et le mod_ssl package pour des packages et une sécurité mieux mis à jour.

sudo dnf install epel-release mod_ssl -y

Ensuite, installez le package certbot comme suit :

sudo dnf install python3-certbot-nginx -y

Une fois installé, exécutez la commande suivante pour lancer la création de votre certificat :

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

Il s'agit de la configuration idéale qui inclut les redirections HTTPS 301 forcées, l'en-tête Strict-Transport-Security et l'agrafage OCSP. Assurez-vous simplement d'adapter l'adresse e-mail et le nom de domaine à vos besoins.

Maintenant, votre URL sera HTTPS://www.example.com au lieu de HTTP://www.example.com .

Remarque, si vous utilisez l'ancienne URL HTTP , il redirigera automatiquement vers HTTPS .

En option, vous pouvez définir une tâche cron pour renouveler automatiquement les certificats. Certbot propose un script qui le fait automatiquement, et vous pouvez d'abord tester pour vous assurer que tout fonctionne en effectuant une simulation.

sudo certbot renew --dry-run

Si tout fonctionne, ouvrez votre fenêtre crontab en utilisant la commande de terminal suivante.

sudo crontab -e

Ensuite, spécifiez l'heure à laquelle il doit se renouveler automatiquement. Cela doit être vérifié quotidiennement au minimum, et si le certificat doit être renouvelé, le script ne mettra pas à jour le certificat. Si vous avez besoin d'aide pour trouver un bon moment pour vous installer, utilisez l'outil gratuit crontab.guru.

00 00 */1 * * /usr/sbin/certbot-auto renew

Enregistrer (CTRL+O) puis quittez (CTRL+X), et le cronjob sera automatiquement activé.


AlmaLinux
  1. Comment installer la pile LEMP sur AlmaLinux

  2. Comment installer Nginx avec PHP et MySQL (pile LEMP) sur CentOS 7

  3. Comment installer Nginx avec PHP et MariaDB (pile LEMP) sur Fedora 31

  4. Comment installer Nginx avec PHP et MySQL (pile LEMP) sur CentOS 7.6

  5. Comment installer la pile Nginx, MariaDB et PHP (FEMP) sur FreeBSD

Comment installer phpBB avec LEMP sur AlmaLinux 8

Comment installer la pile LEMP sur AlmaLinux 8

Comment installer la pile LAMP sur AlmaLinux 8

Comment installer la pile LEMP sur Debian 11

Comment installer la pile LEMP sur Fedora 35

Comment installer LEMP (Nginx, MariaDB, PHP) sur Centos 7