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.


tutoriel:internet:lemp:start [2022/11/08 19:40] (Version actuelle) – créée admin
Ligne 1: Ligne 1:
 +{{tag>tutoriel}}
  
 +====== LEMP : un serveur avec Linux, Nginx, MariaDB, PHP ======
 +
 +**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]]**
 +  * **PHP**, ou plutôt le packet **php-fpm**, interface pour communiquer avec le serveur NGINX et PHP.
 +  * **[[logiciel:sql:mariadb:start]]**
 +  * **[[logiciel:internet:adminer:start]]**
 +
 +===== Pré-requis =====
 +
 +<WRAP center round info 60%>
 +**Pour le cas d'un Raspberry**, procéder en ligne de commande via SSH.
 +</WRAP>
 +  * un **PC** sous Linux (ubuntu) (ou un Raspberry Pi)
 +    * ou un **Raspberry Pi** accédé via **SSH**
 +  * mis à jour :<cli prompt='$ '>...@...:~$ sudo apt update
 +...@...:~$ sudo apt upgrade
 +...@...:~$ sudo apt dist-upgrade</cli>
 +
 +===== 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.
 +  - **Vérifiez que NGINX est bien démarré** : sur un PC du réseau, ouvrez dans un navigateur l'adresse IP du serveur [[http://<AdresseIpDeVotreServeur>]]. Si tout va bien, il s'affiche :{{ tutoriel:internet:lemp:lemp-01.png?400 |}}Vous pouvez aussi vérifier que le service NGINX est bien démarré :<cli prompt='$ '>...@...:~$ sudo systemctl is-active nginx
 +active</cli>
 +  - **Sauvegardez les fichiers de configuration** :<cli prompt='$ '>...@...:~$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.dist</cli>
 +
 +===== Autres étapes =====
 +
 +  - **[[tutoriel:internet:serveur:racine:start]]**
 +  - **Sauvegardez /etc/nginx/sites-available/default** :<cli prompt='$ '>...@...:~$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.dist</cli>
 +  - **Éditez avec les droits d'administration le fichier /etc/nginx/sites-available/default** :
 +    * **Remplacez la ligne**<code - >index index.html index.htm index.nginx-debian.html;</code>par<code - >index index.html index.htm index.php;</code>Cela rajoute une redirection automatique vers les fichiers **index.php** pour les dossiers du site.
 +    * **Activez php-fpm** pour Nginx, modifiez les lignes<code - > #location ~ \.php$ {
 + # include snippets/fastcgi-php.conf;
 + #
 + # # With php5-cgi alone:
 + # fastcgi_pass 127.0.0.1:9000;
 + # # With php5-fpm:
 + # fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
 + #}</code>pour obtenir :<code - > location ~ \.php$ {
 + include snippets/fastcgi-php.conf;
 + fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
 + }</code>
 +  - **Modifiez les droits du dossier /var/www/html** pour gérer plus facilement les sites :<cli prompt='$ '>...@...:~$ sudo chown -R www-data:pi /var/www/html/
 +...@...:~$ sudo chmod -R 2770 /var/www/html/</cli>
 +  - **Ajoutez un fichier index.php** pour vérifier que PHP fonctionne :<cli prompt='$ '>...@...:~$ echo "<?php phpinfo(); ?>" > /var/www/html/index.php</cli>
 +  - **Redémarrez Nginx** pour appliquer les modifications :<cli prompt='$ '>...@...:~$ sudo nginx -s reload</cli>
 +  - **Vérifiez l'installation de PHP** :
 +    * **Version de PHP installée** :<cli prompt='$ '>...@...:~$ php -v
 +PHP 7.3.19-1~deb10u1 (cli) (built: Jul  5 2020 06:46:45) ( NTS )
 +...
 +</cli>-> Ici, la version de php installée est 7.3
 +    * **État de PHP** :<cli prompt='$ '>...@...:~$ sudo systemctl status php7*
 +● php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager
 +...
 +   Active: active (running) since Tue 2020-10-27 14:14:12 CET; 5min ago
 +...
 +</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.
 +  - **Installez [[logiciel:sql:mariadb:start]]**
 +  - **Installez [[logiciel:internet:ftp:vsftpd:start]]**
 +  - **Installez [[logiciel:internet:adminer:start]]**
 +  - **Sécurisez Nginx** :
 +    * **[[tutoriel:internet:nginx:ssl:autosigne:raspi:start]]**
 +    * **[[tutoriel:internet:nginx:ssl:letsencrypt:start]]**
 +
 +==== Désinstallation ====
 +
 +  - **Arrêtez nginx** :<cli prompt='$ '>...@...:~$ sudo systemctl stop nginx.service</cli>
 +  - **Démontez /var/www** et **/srv** :<cli prompt='$ '>...@...:~$ sudo umount /var/www
 +...@...:~$ sudo umount /srv</cli>
 +  - **Retirez (commentez) le montage de /var/www et /srv** :<cli prompt='$ '>...@...:~$ sudo nano /etc/fstab</cli>
 +  - **Supprimez php-fpm** :<cli prompt='$ '>...@...:~$ sudo apt purge php-fpm</cli>
 +  - **Supprimez nginx** :<cli prompt='$ '>...@...:~$ sudo apt purge nginx*</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>
 +
 +==== 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>
 +  - Vérifiez votre installation en lançant le client MariaDB en ligne de commande :<cli prompt='$ '>...@...:~$ sudo mariadb
 +Welcome to the MariaDB monitor.  Commands end with ; or \g.
 +Your MariaDB connection id is 49
 +Server version: 10.3.25-MariaDB-0+deb10u1 Raspbian 10
 +
 +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 +
 +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 +
 +MariaDB [(none)]> exit
 +Bye
 +</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 ====
 +
 +  - 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>
 +  - Répérez le **socket d’écoute de php-fpm** :<cli prompt='$ '>...@...:~$ ls -l /var/run/php/
 +total 4
 +-rw-r--r-- 1 root     root     5 oct.  27 08:15 php7.3-fpm.pid
 +srw-rw---- 1 www-data www-data 0 oct.  27 08:15 php7.3-fpm.sock</cli>-> Ici, il faudra utiliser /var/run/php/php7.3-fpm.sock dans les fichiers de configuration de nginx.
 +  - Éditez avec les droits d'administration le fichier **etc/nginx/sites-available/default** pour le modifier comme ceci :
 +    * remplacez <code - etc/nginx/sites-available/default># Add index.php to the list if you are using PHP
 +index index.html index.htm index.nginx-debian.html;
 +</code>par <code - etc/nginx/sites-available/default># Add index.php to the list if you are using PHP
 +index index.html index.htm index.php index.nginx-debian.html;</code>
 +    * remplacez <code - ># pass PHP scripts to FastCGI server
 +#
 +#location ~ \.php$ {
 +# include snippets/fastcgi-php.conf;
 +#
 +# # With php-fpm (or other unix sockets):
 +# fastcgi_pass unix:/run/php/php7.3-fpm.sock;
 +# # With php-cgi (or other tcp sockets):
 +# fastcgi_pass 127.0.0.1:9000;
 +#}
 +</code>par <code - ># pass PHP scripts to FastCGI server
 +#
 +    location ~ \.php$ {
 +        include snippets/fastcgi-php.conf;
 +        # With php-fpm (or other unix sockets):
 +        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
 +    }
 +</code>
 +  - 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
 +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 ====
 +
 +Supposons que nous souhaitons répondre aux requêtes PHP pour **abcd1234.com**.
 +
 +Créez avec les droits d'administration le fichier **/etc/nginx/sites-enabled/abcd1234.com.conf** :<code nginx /etc/nginx/sites-enabled/abcd1234.com.conf>
 +server {
 +    listen   80;
 +    ## Your website name goes here.
 +    server_name abcd1234.com  www.abcd1234.com;
 +    root /var/www/abcd1234.com;
 +    ## This should be in your http block and if it is, it's not needed here.
 +    index index.php;
 +    
 +    location / {
 +        try_files $uri $uri/ /index.php?$args;
 +    }
 +    
 +    location ~ \.php$ {
 +        include fastcgi.conf;
 +        fastcgi_intercept_errors on;
 +        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
 +        
 +        fastcgi_buffers 16 16k;
 +        fastcgi_buffer_size 32k;
 +    }
 +}</code>
 +
 +==== 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>
 +# Site framboise4
 +
 +server {
 +    listen 80;
 +
 +    server_name  framboise4.local;
 +    root /var/www/html;
 +    
 + location / {
 + index index.php index.html index.htm index.nginx-debian.html;
 + try_files $uri $uri/ =404;
 + }
 +
 + location ~ \.php$ {
 + include snippets/fastcgi-php.conf;
 + fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
 + }
 +
 + location ~ /\.ht {
 + deny all;
 + }
 +}
 +
 +server {
 +    listen 80;
 +
 +    server_name  ~^(?P<sub>.+)\.framboise4\.local$;
 +    root /var/www/html/$sub;
 +    
 + location / {
 + index index.php index.html index.htm index.nginx-debian.html;
 + try_files $uri $uri/ =404;
 + }
 +
 + location ~ \.php$ {
 + include snippets/fastcgi-php.conf;
 + fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
 + }
 +
 + location ~ /\.ht {
 + deny all;
 + }
 +}</code>
 +
 +
 +  - Installez les **modules de php** (remplacez **php7.3** par la version trouvée ci-dessus) :<cli prompt='$ '>...@...:~$ sudo apt install php7.3-{fpm}</cli>
 +    * 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]]**
 +  - [[logiciel:internet:nginx:start]]
 +    * **Installez [[logiciel:internet:nginx:raspi:start]]**
 +  - **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.
 +    * **SQLite** :Repérez la version de php installée :<cli prompt='$ '>...@...:~$ php -v
 +PHP 7.4.3 (cli) (built: May 26 2020 12:24:22) ( NTS )
 +...</cli>et utilisez-la pour installer sqlite :<cli prompt='$ '>...@...:~$ sudo apt install sqlite sqlite-doc php7.4-sqlite3
 +...
 +Souhaitez-vous continuer ? [O/n] 
 +...
 +</cli>
 +
 +  - Configurer MariaDB : vérifiez que MariaDb est bien démarré :<cli>$ sudo systemctl is-active nginx
 +active
 +</cli>
 +
 +==== Démarrer le gestionnaire de processus FastCGI ====
 +
 +Affichez la version de php :<cli>$ php -v
 +PHP 7.2.19-0ubuntu0.18.04.1 (cli) (built: Jun  4 2019 14:48:12) ( NTS )
 +Copyright (c) 1997-2018 The PHP Group
 +Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
 +    with Zend OPcache v7.2.19-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies
 +</cli>
 +
 +Démarrez le gestionnaire de processus FastCGI en lançant la commande (aidez-vous de l'auto-complétion avec la version trouvée ci-dessus) :
 +<cli>$ sudo systemctl enable php7.2-fpm
 +Synchronizing state of php7.2-fpm.service with SysV service script with /lib/systemd/systemd-sysv-install.
 +Executing: /lib/systemd/systemd-sysv-install enable php7.2-fpm</cli>
 +
 +PHP-FPM est une alternative à PHP FastCGI.
 +
 +==== Configurer et démarrer le serveur NGINX ====
 +
 +Une fois PHP installé, il faut indiquer à NGINX d'exécuter PHP en utilisant PHP-FPM.
 +
 +++++ Fichier /etc/nginx/sites-available/default d'origine|
 +<code - /etc/nginx/sites-available/default>
 +##
 +# You should look at the following URL's in order to grasp a solid understanding
 +# of Nginx configuration files in order to fully unleash the power of Nginx.
 +# https://www.nginx.com/resources/wiki/start/
 +# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
 +# https://wiki.debian.org/Nginx/DirectoryStructure
 +#
 +# In most cases, administrators will remove this file from sites-enabled/ and
 +# leave it as reference inside of sites-available where it will continue to be
 +# updated by the nginx packaging team.
 +#
 +# This file will automatically load configuration files provided by other
 +# applications, such as Drupal or Wordpress. These applications will be made
 +# available underneath a path with that package name, such as /drupal8.
 +#
 +# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
 +##
 +
 +# Default server configuration
 +#
 +server {
 + listen 80 default_server;
 + listen [::]:80 default_server;
 +
 + # SSL configuration
 + #
 + # listen 443 ssl default_server;
 + # listen [::]:443 ssl default_server;
 + #
 + # Note: You should disable gzip for SSL traffic.
 + # See: https://bugs.debian.org/773332
 + #
 + # Read up on ssl_ciphers to ensure a secure configuration.
 + # See: https://bugs.debian.org/765782
 + #
 + # Self signed certs generated by the ssl-cert package
 + # Don't use them in a production server!
 + #
 + # include snippets/snakeoil.conf;
 +
 + root /var/www/html;
 +
 + # Add index.php to the list if you are using PHP
 + index index.html index.htm index.nginx-debian.html;
 +
 + server_name _;
 +
 + location / {
 + # First attempt to serve request as file, then
 + # as directory, then fall back to displaying a 404.
 + try_files $uri $uri/ =404;
 + }
 +
 + # pass PHP scripts to FastCGI server
 + #
 + #location ~ \.php$ {
 + # include snippets/fastcgi-php.conf;
 + #
 + # # With php-fpm (or other unix sockets):
 + # fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
 + # # With php-cgi (or other tcp sockets):
 + # fastcgi_pass 127.0.0.1:9000;
 + #}
 +
 + # deny access to .htaccess files, if Apache's document root
 + # concurs with nginx's one
 + #
 + #location ~ /\.ht {
 + # deny all;
 + #}
 +}
 +
 +
 +# Virtual Host configuration for example.com
 +#
 +# You can move that to a different file under sites-available/ and symlink that
 +# to sites-enabled/ to enable it.
 +#
 +#server {
 +# listen 80;
 +# listen [::]:80;
 +#
 +# server_name example.com;
 +#
 +# root /var/www/example.com;
 +# index index.html;
 +#
 +# location / {
 +# try_files $uri $uri/ =404;
 +# }
 +#}
 +</code>
 +++++
 +
 +Pour cela, dupliquez le fichier /etc/nginx/sites-available/default :
 +<cli>$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.dist</cli>
 +
 +Éditez avec les droits d'administration le fichier **/etc/nginx/sites-available/default** pour le remplacer par ceci :
 +<code - /etc/nginx/sites-available/default >
 +server {
 +    listen 80 default_server;
 +    listen [::]:80 default_server;
 +    
 +    root /var/www/html;
 +    
 +    index index.php index.html index.htm index.nginx-debian.html;
 +
 +    server_name _;
 +    
 +    location / {
 +        try_files $uri $uri/ =404;
 +    }
 +
 +    location ~ \.php$ {
 +        include snippets/fastcgi-php.conf;
 +        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
 +    }
 +    
 +    location ~ /\.ht {
 +        deny all;
 +    }
 +}
 +</code>
 +
 +Testez la configuration :
 +<cli>$ sudo nginx -t
 +nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 +nginx: configuration file /etc/nginx/nginx.conf test is successful</cli>
 +
 +<cli>$ sudo nginx -s stop
 +$ sudo nginx</cli>
 +
 +
 +Créez un fichier /var/www/html/test/test.php dans le répertoire web racine de NGINX :
 +<code - /var/www/html/test/test.php>
 +<?php phpinfo()?>
 +</code>
 +
 +Vérification : [[http://localhost/test]]
 +
 +==== Serveurs virtuels ====
 +
 +Créez avec les droits d'administration le fichier **/etc/nginx/sites-available/monsite.tld** pour y écrire :
 +<code - /etc/nginx/sites-available/monsite.tld>
 +server {
 +        listen 80;
 +        root /var/www/html;
 +        index index.php index.html index.htm index.nginx-debian.html;
 +        server_name monsite.tld;
 +
 +        location / {
 +                try_files $uri $uri/ =404;
 +        }
 +
 +        location ~ \.php$ {
 +                include snippets/fastcgi-php.conf;
 +                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
 +        }
 +
 +        location ~ /\.ht {
 +                deny all;
 +        }
 +}
 +</code>
 +
 +<WRAP center round info 60%>
 +**__Explications__**
 +
 +Voici ce que font ces directives et ces blocs location :
 +
 +  ; listen
 +  : Port sur lequel Nginx écoute.
 +  : 80 = port par défaut pour HTTP
 +  ; root
 +  : emplacement de la racine du site Web.
 +  ; index
 +  : fichiers index.php prioritaires
 +  ; server_name
 +  : nom de domaine ou adresse IP de votre serveur.
 +  ; location /
 +  : La directive try_files vérifie l’existence de fichiers demandés
 +  : Si Nginx ne le trouve pas, il retourne une erreur 404.
 +  ; 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..
 +  ; location ~ /\.ht
 +  : bloc location pour les fichiers .htaccess, que Nginx ne traite pas.
 +  : La directive deny all ne transmet pas aux visiteurs des éventuels fichiers .htaccess
 +
 +</WRAP>
 +
 +Activez votre site en créant un lien symbolique dans le dossier **/etc/nginx/sites-enable** :
 +<cli>$ sudo ln -s /etc/nginx/sites-available/monsite.tld /etc/nginx/sites-enabled/monsite.tld</cli>
 +
 +Redémarrez nginx :
 +<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 ===
 +
 +=== Configurer Nginx pour gérer automatiquement les sous-domaines locaux ===
 +
 +== Création d’un nouveau site nginx ==
 +
 +éditez avec les droits d'administration le fichier **/etc/nginx/sites-available/monsite.local** pour y écrire :
 +<code - /etc/nginx/sites-available/monsite.local>
 +server {
 +    # On écoute le port 80.
 +    listen 80;
 +
 +    # expression régulière pour récupérer
 +    # le sous-domaine dans une variable nommée "sub".
 +    server_name  ~^(?P<sub>.+)\.monsite\.local$;
 +
 +    location / {
 +         # On définit le chemin local
 +         # en utilisant la variable "sub" récupérée précédemment.
 +         root /var/www/html/$sub;
 +    }
 +}
 +</code>
 +
 +Activez votre site en créant un lien symbolique dans le dossier **/etc/nginx/sites-enable** :
 +<cli>$ sudo ln -s /etc/nginx/sites-available/local.dev /etc/nginx/sites-enable/monsite.local</cli>
 +
 +Redémarrez le serveur via la commande :
 +<cli>$ sudo service nginx restart</cli>
 +
 +<code - /etc/nginx/sites-available/chateau.parc>
 +# Le nom du sous-domaine est mis dans une variable sub,
 +# utilisée ensuite pour définir la racine
 +
 +# Sites dokuwiki
 +server {
 +    listen 80;
 +
 +    server_name  ~^(?P<sub>doc|perso|site2)\.chateau\.parc$;
 +    root /var/www/html/$sub;
 +    
 + location / {
 + index index.php index.html index.htm;
 + try_files $uri $uri/ =404;
 + }
 +
 + location ~ \.php$ {
 + include snippets/fastcgi-php.conf;
 + fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
 + }
 +
 + location ~ /(data|conf|bin|inc)/ {
 + deny all;
 + }
 +
 + location ~ /\.ht {
 + deny all;
 + }
 +}
 +
 +# Autres sous-domaines
 +server {
 +    listen 80;
 +
 +    server_name  ~^(?P<sub>.+)\.chateau\.parc$;
 +    root /var/www/html/$sub;
 +    
 + location / {
 + index index.php index.html index.htm index.nginx-debian.html;
 + try_files $uri $uri/ =404;
 + }
 +
 + location ~ \.php$ {
 + include snippets/fastcgi-php.conf;
 + fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
 + }
 +
 + location ~ /\.ht {
 + deny all;
 + }
 +}
 +</code>
 +
 +=== 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>
 +
 +Ouvrez ou créez avec les droits d'administration le fichier **/etc/dnsmasq.d/local.conf** et ajoutez-lui la ligne :
 +<code - /etc/dnsmasq.d/local.conf>
 +address=/mondomaine.tld/127.0.0.1
 +</code>
 +
 +Dans notre exemple, nous avons donc ajouter:
 +<code - /etc/dnsmasq.d/local.conf>
 +address=/monsite.local/127.0.0.1
 +</code>
 +
 +On redémarre dnsmasq :<cli>$ sudo systemctl restart dnsmasq</cli> et on peut constater que nos domaines sont accessibles.
 +
 +Désormais, tous les domaines ***.mondomaine.tld** existent.
 +
 +Vous pouvez le vérifier :
 +  * Installez le paquet **[[apt>dnsutils]]** ou en ligne de commande :<cli>$ sudo apt install dnsutils</cli>
 +  * Lancez-le :<cli>$ dig test.localhost
 +
 +; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> test.localhost
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47480
 +;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
 +
 +;; OPT PSEUDOSECTION:
 +; EDNS: version: 0, flags:; udp: 65494
 +;; QUESTION SECTION:
 +;test.localhost. IN A
 +
 +;; ANSWER SECTION:
 +test.localhost. 0 IN A 127.0.0.1
 +
 +;; Query time: 0 msec
 +;; SERVER: 127.0.0.53#53(127.0.0.53)
 +;; WHEN: Sat May 04 23:35:51 CEST 2019
 +;; MSG SIZE  rcvd: 59
 +</cli>
 +
 +===== Conclusion =====
 +
 +===== Problèmes connus =====
 +  ??? Erreur 403 forbidden, un classique de Nginx
 +!!! 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 !**
 +  - 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.
 +
 +===== Voir aussi =====
 +
 +  * **(fr)** [[https://web.developpez.com/tutoriels/creer-serveur-web-nginx-php-mariadb/]]
 +  * **(fr)** [[https://raspberry-pi.fr/installer-nginx-raspbian-raspberry/]]
 +  * **(en)** [[https://www.techcoil.com/blog/how-to-setup-a-raspberry-pi-lemp-server-with-raspbian-buster-lite-for-running-php-applications/|How to setup a Raspberry Pi LEMP server with Raspbian Buster Lite for running PHP applications]]
 +  * **(en)** [[https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04]]
 +
 +
 +----
 +//Basé sur << [[https://web.developpez.com/tutoriels/creer-serveur-web-nginx-php-mariadb/|Créer un serveur Web Nginx + PHP7 + Maria DB (Mysql) + PhpMyAdmin sous Debian 9 Stretch]] >> par Quentin Beauvais.//
QR Code
QR Code LEMP : un serveur avec Linux, Nginx, MariaDB, PHP (generated for current page)