GNU/Linux >> Tutoriels Linux >  >> Fedora

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

La pile logicielle LEMP est un groupe de logiciels open source qui sont installés ensemble pour permettre à un serveur d'héberger des sites Web et des applications. C'est un acronyme pour L inux, E Serveur Nginx, M ySQL (en utilisant MariaDB ici) et P HP.

Dans ce guide, vous allez installer une pile LEMP sur un serveur basé sur Fedora 31. Nous installerons également PHPMyAdmin, Redis et Opcache.

Prérequis

  • Un serveur exécutant Fedora 31.

  • Un utilisateur sudo non root.

  • Assurez-vous que tout est mis à jour.

    $ sudo dnf upgrade
    
  • Peu de packages dont votre système a besoin.

    $ sudo dnf install wget curl nano -y
    

    Certains de ces packages sont peut-être déjà installés sur votre système.

  • Désactiver SELinux.

    $ sudo setenforce 0
    

Configurer le pare-feu

La première étape consiste à configurer le pare-feu. Le serveur Fedora est livré avec le pare-feu Firewalld préinstallé.

Vérifiez si le pare-feu est en cours d'exécution.

$ sudo firewall-cmd --state

Vous devriez obtenir le résultat suivant.

running

Définissez la zone par défaut du pare-feu sur public.

$ sudo firewall-cmd --set-default-zone=public

Vérifiez les services/ports actuellement autorisés.

$ sudo firewall-cmd --zone=public --permanent --list-services

Il devrait afficher la sortie suivante.

dhcpv6-client mdns ssh

Autoriser les ports HTTP et HTTPS.

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

Vérifiez à nouveau l'état du pare-feu.

$ sudo firewall-cmd --zone=public --permanent --list-services

Vous devriez voir une sortie similaire.

dhcpv6-client http https mdns ssh

Rechargez le pare-feu.

$ sudo systemctl reload firewalld

Installer PHP

Fedora 31 est livré par défaut avec PHP 7.3. Mais nous voulons installer PHP 7.4 pour lequel nous devons ajouter le référentiel REMI.

Installez le référentiel REMI qui est le référentiel Fedora officiel pour l'installation des packages PHP.

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-31.rpm

Activer le remi et remi-php74 référentiels et désactiver le remi-modular dépôt. Cela active le référentiel requis pour installer les packages PHP 7.4.

$ sudo dnf config-manager --set-enabled remi
$ sudo dnf config-manager --set-enabled remi-php74
$ sudo dnf config-manager --set-disabled remi-modular

Installez PHP 7.4 avec quelques packages supplémentaires.

$ sudo dnf install -y php-cli php-fpm php-mysqlnd

Vérifiez si PHP fonctionne correctement.

$ php --version

Vous devriez voir une sortie similaire.

PHP 7.4.3 (cli) (built: Feb 18 2020 11:53:05) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Installer MariaDB

MariaDB remplace MySQL, ce qui signifie que les commandes pour exécuter et faire fonctionner MariaDB sont les mêmes que celles de MySQL.

Fedora 31 est livré par défaut avec MariaDB 10.3 mais nous pouvons également installer la dernière version 10.4 (disponible au moment de la rédaction de ce tutoriel). Pour cela, nous devons ajouter le référentiel officiel MariaDB.

Créer MariaDB.repo dans le /etc/yum.repos.d/ répertoire.

$ sudo nano /etc/yum.repos.d/MariaDB.repo

Ajoutez-y le code suivant.

# MariaDB 10.4 Fedora repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/fedora31-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Pour installer MariaDB, lancez les commandes suivantes

$ sudo dnf install MariaDB-server -y

Remarquez la commande. Si vous souhaitez installer la copie (10.3) dans le référentiel Fedora, vous devez utiliser sudo dnf install mariadb-server mais pour la version 10.4, nous utilisons sudo dnf install MariaDB-server .

Vérifiez si MariaDB est installé correctement.

$ mysql --version

Vous devriez voir la sortie suivante.

mysql  Ver 15.1 Distrib 10.4.12-MariaDB, for Linux (x86_64) using  EditLine wrapper

Activez et démarrez le service MariaDB.

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

Exécutez la commande suivante pour effectuer la configuration par défaut, par exemple en donnant un mot de passe root, en supprimant les utilisateurs anonymes, en interdisant la connexion root à distance et en supprimant les tables de test.

$ sudo mysql_secure_installation

Avec MariaDB 10.4, il vous sera désormais demandé d'utiliser le mot de passe root ou le plugin unix_socket. Le plugin unix_socket vous permet de vous connecter à MariaDB avec vos informations d'identification d'utilisateur Linux. Il est considéré comme plus sûr, bien que vous ayez besoin d'un nom d'utilisateur/mot de passe traditionnel pour utiliser des applications tierces telles que PhpMyAdmin. Nous nous en tiendrons à l'utilisation du plugin unix_socket pour ce tutoriel. Vous pouvez toujours utiliser PhpMyAdmin via n'importe quel utilisateur que vous créez pour vos bases de données.

Appuyer sur Entrée choisit l'option par défaut (celle qui est en majuscule, Y dans ce cas).

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): [PRESS ENTER]
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] [PRESS ENTER]
Enabled successfully!
Reloading privilege tables..
 ... Success!

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] [ANSWER n]

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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] [PRESS ENTER]
 ... 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] [PRESS ENTER]
 ... Success!

By default, MariaDB 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] [PRESS ENTER]
 \- 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] [PRESS ENTER]
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

C'est ça. La prochaine fois que vous voudrez vous connecter à MySQL, utilisez la commande suivante

$ sudo mysql

Entrez votre mot de passe root lorsque vous y êtes invité.

Installer Nginx

Fedora 31 est livré par défaut avec la version stable de Nginx (1.16.1). Si vous souhaitez installer la version principale de Nginx, suivez notre guide de création de Nginx à partir de la source. Assurez-vous de récupérer la dernière version de Nginx et les dépendances mentionnées dans le didacticiel. Le reste des instructions restera le même (modifiez les noms de chemin en conséquence pendant le ./configure commande). Pour ce tutoriel, nous nous en tiendrons à la version stable de Nginx.

Installez le serveur Nginx.

$ sudo dnf install nginx -y

Vérifiez s'il fonctionne correctement.

$ nginx -v

Vous devriez voir la sortie suivante.

nginx version: nginx/1.16.1

Démarrez et activez Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Ouvrez l'adresse IP de votre serveur dans un navigateur pour voir la page suivante. Cela signifie que Nginx fonctionne correctement.

Configurer Nginx

Configurez les répertoires où vivront les blocs du serveur.

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

Créez le répertoire où votre site vivra.

$ sudo mkdir /var/www/example.com/html -p

Utiliser le -p crée des répertoires parents qui n'existaient pas auparavant.

Exécutez la commande suivante pour ajouter un fichier de configuration pour votre site.

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

Collez le code suivant dans l'éditeur.

server {
  listen          *:80;
  server_name     example.com;
  root            /var/www/example.com/html;
  index           index.php index.html;

  location / {
    try_files   $uri $uri/ =404;
  }
    
  access_log /var/log/nginx/example.com.access.log;
  error_log /var/log/nginx/example.com.error.log;

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass  unix:/run/php-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include  fastcgi_params;
  }
}

Ce fichier suppose que nous hébergerons example.com dans le répertoire /var/www/html . Si vous n'utilisez aucun domaine et que vous configurez votre serveur pour qu'il soit accessible uniquement via l'adresse IP/l'hôte local, vous devrez supprimer les paramètres de blocage de serveur correspondants de nginx.conf fichier sinon il gâchera le bloc de serveur que vous allez créer.

Activez ce fichier de configuration en le liant au sites-enabled répertoire.

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

Ouvrez le /etc/nginx/nginx.conf fichier à éditer.

$ sudo nano /etc/nginx/nginx.conf	

Collez les lignes suivantes après la ligne include /etc/nginx/conf.d/*.conf

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

Modifiez la valeur de types_hash_max_size de 2048 à 4096.

types_hash_max_size 4096;

Appuyez sur Ctrl + X pour fermer l'éditeur et appuyez sur Y lorsque vous êtes invité à enregistrer le fichier. Testez la configuration Nginx.

$ sudo nginx -t

Vous devriez voir la sortie suivante indiquant que votre configuration est correcte.

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

Rechargez le service Nginx.

$ sudo systemctl reload nginx

Configurer PHP-FPM

Ouvrez le fichier /etc/php-fpm.d/www.conf .

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

Nous devons définir l'utilisateur/groupe Unix de processus PHP sur nginx . Trouvez le user=apache et group=apache lignes dans le fichier et changez-les en 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 user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Définissez également les autorisations de propriété pour le socket unix sur nginx et supprimez le ; devant eux.

listen.owner = nginx
listen.group = nginx

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Redémarrez le processus PHP-fpm.

$ sudo systemctl restart php-fpm

Pour tester votre configuration PHP, créez un fichier test.php dans le html dossier.

$ sudo nano /var/www/example.com/html/test.php

Ajoutez-y le contenu suivant et enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

<?php phpinfo();

Lancez http://<yourserverip>/test.php dans votre navigateur Web et vous devriez voir ce qui suit.

Conclusion

C'est tout pour ce tutoriel. Votre configuration LEMP est terminée et vous pouvez commencer à créer et à héberger vos sites Web et vos applications.


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

  2. Comment installer Pagekit CMS avec Nginx sur Fedora 29

  3. Comment installer Nginx avec PHP et MySQL (pile LEMP) sur Ubuntu 18.04

  4. Comment installer Phorum avec Nginx sur Fedora 30

  5. Comment installer WordPress avec LEMP (Nginx, MariaDB et PHP) sur Rocky Linux 8 ?

Comment installer Nginx, MariaDB, PHP (pile LEMP) sur Debian 11

Comment installer Linux, Nginx, MariaDB, PHP (pile LEMP) sur Linux Mint 19

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

Comment installer la pile LEMP sur Fedora 35

Comment installer Linux, Nginx, MariaDB et PHP (LEMP) sur Fedora 22

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