Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

tutoriel:internet:lemp:start [2021/01/24 10:56] – [Autres étapes] admintutoriel:internet:lemp:start [2022/10/01 23:26] (Version actuelle) – modification externe 127.0.0.1
Ligne 4: Ligne 4:
  
 **LEMP** ((**L**inux, NGINX (**e**ngine X), **M**ySQL/MariaDB, **P**HP/**P**erl/**P**ython)) est un serveur HTTP composé de : **LEMP** ((**L**inux, NGINX (**e**ngine X), **M**ySQL/MariaDB, **P**HP/**P**erl/**P**ython)) est un serveur HTTP composé de :
-  * **[[logiciel:internet:nginx:start|]]**+  * **[[logiciel:internet:nginx:start]]**
   * **PHP**, ou plutôt le packet **php-fpm**, interface pour communiquer avec le serveur NGINX et PHP.   * **PHP**, ou plutôt le packet **php-fpm**, interface pour communiquer avec le serveur NGINX et PHP.
-  * **[[logiciel:sql:mariadb:start|]]** +  * **[[logiciel:sql:mariadb:start]]** 
-  * **[[logiciel:internet:adminer:start|]]**+  * **[[logiciel:internet:adminer:start]]**
  
- +===== Pré-requis =====
-+
-====== Pré-requis ======+
  
 <WRAP center round info 60%> <WRAP center round info 60%>
Ligne 22: Ligne 20:
 ...@...:~$ sudo apt dist-upgrade</cli> ...@...:~$ sudo apt dist-upgrade</cli>
  
-====== Première étape ======+===== Première étape =====
  
   - **Installez** les paquets **[[apt>nginx,php-{fpm,gd,curl,intl,xmlrpc,mbstring,mysql,xml,zip}]]** ou en ligne de commande :<cli prompt='$ '>...@...:~$ sudo apt install nginx php-{fpm,gd,curl,intl,xmlrpc,mbstring,mysql,xml,zip}</cli>Pour gérer les fichiers PHP avec Nginx, nous utilisons **php-fpm** (une version plus rapide de PHP) plutôt que PHP.\\ Cette installation a créé le répertoire **/var/www/html** pour la racine des sites.   - **Installez** les paquets **[[apt>nginx,php-{fpm,gd,curl,intl,xmlrpc,mbstring,mysql,xml,zip}]]** ou en ligne de commande :<cli prompt='$ '>...@...:~$ sudo apt install nginx php-{fpm,gd,curl,intl,xmlrpc,mbstring,mysql,xml,zip}</cli>Pour gérer les fichiers PHP avec Nginx, nous utilisons **php-fpm** (une version plus rapide de PHP) plutôt que PHP.\\ Cette installation a créé le répertoire **/var/www/html** pour la racine des sites.
Ligne 28: Ligne 26:
 active</cli> active</cli>
   - **Sauvegardez les fichiers de configuration** :<cli prompt='$ '>...@...:~$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.dist</cli>   - **Sauvegardez les fichiers de configuration** :<cli prompt='$ '>...@...:~$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.dist</cli>
-====== Autres étapes ======+ 
 +===== Autres étapes =====
  
   - **[[tutoriel:internet:serveur:racine:start]]**   - **[[tutoriel:internet:serveur:racine:start]]**
Ligne 61: Ligne 60:
 </cli> </cli>
     * **Sur un PC du réseau, ouvrez en http l'adresse IP du serveur** [[http://<AdresseIpDeVotreServeur>]]. Si tout va bien, une page affiche les informations de PHP.     * **Sur un PC du réseau, ouvrez en http l'adresse IP du serveur** [[http://<AdresseIpDeVotreServeur>]]. Si tout va bien, une page affiche les informations de PHP.
-  - **Installez [[logiciel:sql:mariadb:start|]]**+  - **Installez [[logiciel:sql:mariadb:start]]**
   - **Installez [[logiciel:internet:ftp:vsftpd:start]]**   - **Installez [[logiciel:internet:ftp:vsftpd:start]]**
-  - **Installez [[logiciel:internet:adminer:start|]]**+  - **Installez [[logiciel:internet:adminer:start]]**
   - **Sécurisez Nginx** :   - **Sécurisez Nginx** :
     * **[[tutoriel:internet:nginx:ssl:autosigne:raspi:start]]**     * **[[tutoriel:internet:nginx:ssl:autosigne:raspi:start]]**
-    * **[[tutoriel:internet:nginx:ssl:letsencrypt:start|]]**+    * **[[tutoriel:internet:nginx:ssl:letsencrypt:start]]**
  
-===== Désinstallation =====+==== Désinstallation ====
  
   - **Arrêtez nginx** :<cli prompt='$ '>...@...:~$ sudo systemctl stop nginx.service</cli>   - **Arrêtez nginx** :<cli prompt='$ '>...@...:~$ sudo systemctl stop nginx.service</cli>
Ligne 78: Ligne 77:
   - **Terminez l'effacement** :<cli prompt='$ '>...@...:~$ sudo apt autoremove</cli>   - **Terminez l'effacement** :<cli prompt='$ '>...@...:~$ sudo apt autoremove</cli>
   - **Effacez /var/www/** et ses sous-répertoires :<cli prompt='$ '>...@...:~$ sudo rm -R /var/www/</cli>   - **Effacez /var/www/** et ses sous-répertoires :<cli prompt='$ '>...@...:~$ sudo rm -R /var/www/</cli>
-===== Installation du serveur MariaDB et du client en ligne de commande =====+ 
 +==== Installation du serveur MariaDB et du client en ligne de commande ====
  
   - Installez le paquet **[[apt>mariadb-server]]** ou en ligne de commande :<cli prompt='$ '>...@...:~$ sudo apt install mariadb-server</cli>   - Installez le paquet **[[apt>mariadb-server]]** ou en ligne de commande :<cli prompt='$ '>...@...:~$ sudo apt install mariadb-server</cli>
Ligne 94: Ligne 94:
 </cli>Sortez de la session en tapant **exit**\\ C'est cet outil que vous utiliserez pour configurer l'instance de base de données pour votre application PHP. </cli>Sortez de la session en tapant **exit**\\ C'est cet outil que vous utiliserez pour configurer l'instance de base de données pour votre application PHP.
  
- +==== Configuration par défaut de Nginx pour qu'il traite les requêtes PHP ====
-===== Configuration par défaut de Nginx pour qu'il traite les requêtes PHP =====+
  
   - Faites une copie du fichier **/etc/nginx/sites-available/default** :<cli prompt='$ '>...@...:~$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.dist</cli>   - Faites une copie du fichier **/etc/nginx/sites-available/default** :<cli prompt='$ '>...@...:~$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.dist</cli>
Ligne 127: Ligne 126:
   - Redémarrez Nginx <cli prompt='$ '>...@...:~$ sudo systemctl restart nginx</cli>   - Redémarrez Nginx <cli prompt='$ '>...@...:~$ sudo systemctl restart nginx</cli>
   - Pour vérifier que Nginx exécute PHP, créez le fichier **/var/www/html/index.php** :<code - ><?php   - Pour vérifier que Nginx exécute PHP, créez le fichier **/var/www/html/index.php** :<code - ><?php
-phpinfo();</code>Dans votre navigateur, allez à [[http://<adresse_ip_de_votre_serveur>]] :{{ :tutoriel:internet:lemp:lemp-02.png?400 |}}+phpinfo();</code>Dans votre navigateur, allez à [[http://<adresse_ip_de_votre_serveur>]] :{{ tutoriel:internet:lemp:lemp-02.png?400 |}}
  
-===== Configurer Nginx pour qu'il traite les requêtes PHP pour un nom de domaine =====+==== Configurer Nginx pour qu'il traite les requêtes PHP pour un nom de domaine ====
  
 Supposons que nous souhaitons répondre aux requêtes PHP pour **abcd1234.com**. Supposons que nous souhaitons répondre aux requêtes PHP pour **abcd1234.com**.
Ligne 155: Ligne 154:
     }     }
 }</code> }</code>
-===== Mise en place de PHP =====+ 
 +==== Mise en place de PHP ====
  
   - éditez avec les droits d'administration le fichier **/etc/nginx/sites-available** pour y écrire ceci :<code - /etc/nginx/sites-available>   - éditez avec les droits d'administration le fichier **/etc/nginx/sites-available** pour y écrire ceci :<code - /etc/nginx/sites-available>
Ligne 206: Ligne 206:
     * Pour les installer :<cli>...@...:~$ sudo apt install php7.4-{fpm,cli,opcache,mbstring,curl,xml,gd,mysql,common,json,bcmath,bz2,intl,zip,pdo,imagick,tidy,xmlrpc,dev,imap,soap}</cli> FIXME php7.4-apc n'est pas retrouvé     * Pour les installer :<cli>...@...:~$ sudo apt install php7.4-{fpm,cli,opcache,mbstring,curl,xml,gd,mysql,common,json,bcmath,bz2,intl,zip,pdo,imagick,tidy,xmlrpc,dev,imap,soap}</cli> FIXME php7.4-apc n'est pas retrouvé
          
-  - **Installez [[logiciel:programmation:php:start|]]** +  - **Installez [[logiciel:programmation:php:start]]** 
-  - [[logiciel:internet:nginx:start|]] +  - [[logiciel:internet:nginx:start]] 
-    * **Installez [[logiciel:internet:nginx:raspi:start|]]**+    * **Installez [[logiciel:internet:nginx:raspi:start]]**
   - **Installez la base de données SQL**, selon le cas :   - **Installez la base de données SQL**, selon le cas :
     * **MariaDB** : définissez le mot de passe de l'utilisateur root de MariaDb :<cli>$ sudo mysql_secure_installation</cli>Au début, répondre <key>Entrée</key> car il n'y a pas de mot de passe, puis en donner un). MariaDB est installé et prêt à l'emploi.     * **MariaDB** : définissez le mot de passe de l'utilisateur root de MariaDb :<cli>$ sudo mysql_secure_installation</cli>Au début, répondre <key>Entrée</key> car il n'y a pas de mot de passe, puis en donner un). MariaDB est installé et prêt à l'emploi.
Ligne 218: Ligne 218:
 ... ...
 </cli> </cli>
- 
  
   - Configurer MariaDB : vérifiez que MariaDb est bien démarré :<cli>$ sudo systemctl is-active nginx   - Configurer MariaDB : vérifiez que MariaDb est bien démarré :<cli>$ sudo systemctl is-active nginx
Ligne 224: Ligne 223:
 </cli> </cli>
  
-===== Démarrer le gestionnaire de processus FastCGI =====+==== Démarrer le gestionnaire de processus FastCGI ====
  
 Affichez la version de php :<cli>$ php -v Affichez la version de php :<cli>$ php -v
Ligne 240: Ligne 239:
 PHP-FPM est une alternative à PHP FastCGI. PHP-FPM est une alternative à PHP FastCGI.
  
-===== Configurer et démarrer le serveur NGINX =====+==== Configurer et démarrer le serveur NGINX ====
  
 Une fois PHP installé, il faut indiquer à NGINX d'exécuter PHP en utilisant PHP-FPM. Une fois PHP installé, il faut indiquer à NGINX d'exécuter PHP en utilisant PHP-FPM.
Ligne 386: Ligne 385:
 Vérification : [[http://localhost/test]] Vérification : [[http://localhost/test]]
  
-===== Serveurs virtuels =====+==== Serveurs virtuels ====
  
 Créez avec les droits d'administration le fichier **/etc/nginx/sites-available/monsite.tld** pour y écrire : Créez avec les droits d'administration le fichier **/etc/nginx/sites-available/monsite.tld** pour y écrire :
Ligne 416: Ligne 415:
 Voici ce que font ces directives et ces blocs location : Voici ce que font ces directives et ces blocs location :
  
-  listen+  listen
   : Port sur lequel Nginx écoute.   : Port sur lequel Nginx écoute.
   : 80 = port par défaut pour HTTP   : 80 = port par défaut pour HTTP
-  root+  root
   : emplacement de la racine du site Web.   : emplacement de la racine du site Web.
-  index+  index
   : fichiers index.php prioritaires   : fichiers index.php prioritaires
-  server_name+  server_name
   : nom de domaine ou adresse IP de votre serveur.   : nom de domaine ou adresse IP de votre serveur.
-  location /+  location /
   : La directive try_files vérifie l’existence de fichiers demandés   : La directive try_files vérifie l’existence de fichiers demandés
   : Si Nginx ne le trouve pas, il retourne une erreur 404.   : Si Nginx ne le trouve pas, il retourne une erreur 404.
-  location ~ \.php$+  location ~ \.php$
   : gère le traitement PHP en pointant Nginx vers le fichier de configuration fastcgi-php.conf et le fichier php7.2-fpm.sock, qui indique le type de socket associé à php-fpm..   : gère le traitement PHP en pointant Nginx vers le fichier de configuration fastcgi-php.conf et le fichier php7.2-fpm.sock, qui indique le type de socket associé à php-fpm..
-  location ~ /\.ht+  location ~ /\.ht
   : bloc location pour les fichiers .htaccess, que Nginx ne traite pas.   : bloc location pour les fichiers .htaccess, que Nginx ne traite pas.
   : La directive deny all ne transmet pas aux visiteurs des éventuels fichiers .htaccess   : La directive deny all ne transmet pas aux visiteurs des éventuels fichiers .htaccess
Ligne 442: Ligne 441:
 <cli>$ sudo nginx -s reload</cli> <cli>$ sudo nginx -s reload</cli>
  
-==== Configuration d'hôtes virtuels sur NGinx avec support automatique des sous-domaines, du SSL et de l'authentification ====+=== Configuration d'hôtes virtuels sur NGinx avec support automatique des sous-domaines, du SSL et de l'authentification ===
  
-==== Configurer Nginx pour gérer automatiquement les sous-domaines locaux ====+=== Configurer Nginx pour gérer automatiquement les sous-domaines locaux ===
  
-=== Création d’un nouveau site nginx ===+== Création d’un nouveau site nginx ==
  
 éditez avec les droits d'administration le fichier **/etc/nginx/sites-available/monsite.local** pour y écrire : éditez avec les droits d'administration le fichier **/etc/nginx/sites-available/monsite.local** pour y écrire :
Ligne 525: Ligne 524:
 </code> </code>
  
-==== Création des domaines génériques avec dnsmasq ====+=== Création des domaines génériques avec dnsmasq ===
  
 Installez le paquet **[[apt>dnsmasq]]** ou en ligne de commande :<cli>$ sudo apt install dnsmask</cli> Installez le paquet **[[apt>dnsmasq]]** ou en ligne de commande :<cli>$ sudo apt install dnsmask</cli>
Ligne 567: Ligne 566:
 </cli> </cli>
  
-====== Conclusion ======+===== Conclusion =====
  
-====== Problèmes connus =====+===== Problèmes connus ===== 
- +  ??? Erreur 403 forbidden, un classique de Nginx
-??? Erreur 403 forbidden, un classique de Nginx+
 !!! L’erreur 403 est fréquente avec Nginx, mais simple à corriger. !!! L’erreur 403 est fréquente avec Nginx, mais simple à corriger.
   - Cela peut signifier que Nginx ne trouve pas de fichier à afficher. Pour tester cela, créez un fichier index.html dans le répertoire **/var/www** :<cli prompt='$ '>echo 'Nginx marche !' > /var/www/html/index.html</cli> et ré-essayez d’accéder à votre site. Si le problème venait de là, vous devriez obtenir une page marquée **Nginx marche !**   - Cela peut signifier que Nginx ne trouve pas de fichier à afficher. Pour tester cela, créez un fichier index.html dans le répertoire **/var/www** :<cli prompt='$ '>echo 'Nginx marche !' > /var/www/html/index.html</cli> et ré-essayez d’accéder à votre site. Si le problème venait de là, vous devriez obtenir une page marquée **Nginx marche !**
   - Sinon, c'est peut-etre que Nginx ne peut accéder au répertoire **/var/www/html**. Dans ce cas, donne au répertoire **/var/www** les autorisations suffisantes.   - Sinon, c'est peut-etre que Nginx ne peut accéder au répertoire **/var/www/html**. Dans ce cas, donne au répertoire **/var/www** les autorisations suffisantes.
   - Dernière possibilité : vous avez mal activé php.   - Dernière possibilité : vous avez mal activé php.
-====== Voir aussi ======+ 
 +===== Voir aussi =====
  
   * **(fr)** [[https://web.developpez.com/tutoriels/creer-serveur-web-nginx-php-mariadb/]]   * **(fr)** [[https://web.developpez.com/tutoriels/creer-serveur-web-nginx-php-mariadb/]]