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.