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

Prochaine révision
Révision précédente
tutoriel:nanopc:raspi:lemp:start [2020/08/01 15:37]
admin créée
— (Version actuelle)
Ligne 1: Ligne 1:
-{{tag>​tutoriel}} 
  
-====== LEMP sur RaspBerry Pi : un serveur Web Linux + Nginx + Maria DB + PhpMyAdmin + PHP ====== 
- 
-**LEMP** est un serveur HTTP composé de : 
-  * **Nginx**, un logiciel libre de serveur Web léger et rapide. 
-  * **PHP**, ou plutôt le packet **php-fpm**,​ interface pour communiquer avec le serveur NGINX et PHP. 
-  * Le logiciel libre **MariaDB**,​ un fork de MySQ (racheté par Oracle). 
-  * L'​application web **phpMyAdmin** qui permet de gérer les bases de données MySQL. 
-===== Pré-requis ===== 
- 
-  * un **Raspberry Pi** avec un accès **SSH** 
-  * Mettez-le à jour par SSH :<​cli>​ 
-<​...>:​~$ ssh framboise 
-pi@framboise:​~ $ sudo apt update &é sudo apt upgrade && sudo apt dist-upgrade 
-</​cli>​ 
-===== Première étape : Définir l'​emplacement du répertoire de base (racine) du serveur LEMP ===== 
- 
-  * **[[tutoriel:​nanopc:​raspi:​lemp:​racine:​start]]** 
-===== Autres étapes ===== 
- 
-==== Installer PHP ==== 
- 
-<WRAP center round info 60%> 
-Nginx utilise PHP-FMP (une version plus rapide de PHP) plutôt qu’un PHP plus traditionnel. 
- 
-C'est pourquoi nous installons **php-fpm** pour gérer les fichiers PHP avec Nginx. 
-</​WRAP>​ 
-  - Installez **php** :<​cli>​pi@framboise:​~ $ sudo apt install php</​cli>​ 
-  - Répérez la **version de PHP installée** :<​cli>​pi@framboise:​~ $ 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. 
-  - Installez les **modules de php** :<​cli>​pi@framboise:​~ $ sudo apt install php7.3-{fpm,​cli,​opcache,​mbstring,​curl,​xml,​gd,​mysql,​common,​apc,​json,​bcmath,​bz2,​intl,​zip,​pdo,​imagick,​tidy,​xmlrpc,​dev,​imap,​soap}</​cli>​ 
-  - Répérez le **socket d’écoute de php-fpm** :<​cli>​pi@framboise:​~ $ ls -l /​var/​run/​php 
-(...) 
--rw-r--r-- 1 root     ​root ​    5 juil. 23 20:24 php7.3-fpm.pid 
-srw-rw---- 1 www-data www-data 0 juil. 23 20:24 php7.3-fpm.sock 
-</​cli>​Ici,​ il faudra utiliser **/​var/​run/​php/​php7.3-fpm.sock** dans les fichiers de configuration de nginx 
-  - Vérifiez votre installation de **PHP FPM** :<​cli>​ 
-pi@framboise:/​etc/​php/​7.3/​fpm/​pool.d $ sudo systemctl status php7.3-fpm.service 
-● php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager 
-   ​Loaded:​ loaded (/​lib/​systemd/​system/​php7.3-fpm.service;​ disabled; vendor preset: enabled) 
-   ​Active:​ active (running) since Thu 2020-07-23 13:16:23 CEST; 3min 18s ago 
-     Docs: man:​php-fpm7.3(8) 
- Main PID: 11794 (php-fpm7.3) 
-   ​Status:​ "​Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/​sec"​ 
-    Tasks: 3 (limit: 2200) 
-   ​Memory:​ 6.2M 
-   ​CGroup:​ /​system.slice/​php7.3-fpm.service 
-           ​├─11794 php-fpm: master process (/​etc/​php/​7.3/​fpm/​php-fpm.conf) 
-           ​├─11795 php-fpm: pool www 
-           ​└─11796 php-fpm: pool www 
- 
-juil. 23 13:16:22 framboise systemd[1]: Starting The PHP 7.3 FastCGI Process Manager... 
-juil. 23 13:16:23 framboise systemd[1]: Started The PHP 7.3 FastCGI Process Manager.</​cli>​ 
-  - **Redémarrez le module php-fpm** pour valider la configuration :<​cli>​pi@framboise:​~ $ sudo systemctl restart php7.3-fpm.service 
-Synchronizing state of php7.3-fpm.service with SysV service script with /​lib/​systemd/​systemd-sysv-install. 
-Executing: /​lib/​systemd/​systemd-sysv-install enable php7.3-fpm 
-</​cli>​ 
- 
-==== Installer Nginx ==== 
- 
-  - Installez Nginx sur le Raspberry :<​cli>​pi@framboise:​~ $ sudo apt install nginx acl 
-pi@framboise:​~ $ sudo apt autoremove</​cli>​ 
-  - Démarrez Nginx, activez-le pour être lancé au démarrage et démarrez le service ​ :<​cli>​pi@framboise:​~ $ sudo nginx 
-pi@framboise:​~ $ sudo systemctl enable nginx</​cli>​ 
-  - Vérifiez que Nginx est bien démarré :<​cli>​pi@framboise:​~ $ sudo systemctl is-active nginx 
-active</​cli>​ 
-  - **Vérifiez** que tout fonctionne : sur votre PC, dans votre navigateur Internet, ouvrez votre serveur [[http://​192.168.0.31]] (ou [[http://​framboise.local]] si vous avez un nom de domaine).\\ Vous devriez tomber sur cette page :{{ tutoriel:​nanopc:​raspi:​lemp:​lemp-rpi-01.png?​400 |}} 
-=== Serveur par défaut === 
- 
-  - Faites une copie du fichier **/​etc/​nginx/​sites-available/​default** :<​cli>​pi@framboise:​~ $ sudo cp /​etc/​nginx/​sites-available/​default /​etc/​nginx/​sites-available/​default.dist|]] 
-</​cli><​WRAP center round info 60%> 
-Pour info, en voici le contenu : [[tutoriel:​nanopc:​raspi:​lemp:​default|]] 
-</​WRAP>​ 
-  - éditez avec les droits d'​administration le fichier **/​etc/​nginx/​sites-available/​default** pour le modifier comme ceci : :<code - /​etc/​nginx/​sites-available/​default>​ 
-# Serveur par défaut 
-server { 
- listen 80 default_server;​ 
- listen [::]:80 default_server;​ 
- 
- # Configuration SSL 
- listen 443 ssl default_server;​ 
- listen [::]:443 ssl default_server;​ 
- 
- # Note : Vous devez désactiver gzip pour le trafic SSL. 
- # Voir : https://​bugs.debian.org/​773332 
- 
- # Renseignez-vous sur ssl_ciphers pour garantir une configuration sécurisée 
- # Voir : https://​bugs.debian.org/​765782 
- 
- # Certificats auto-signés générés par le package ssl-cert 
- # Ne les utilisez pas dans un serveur de production ! 
- include snippets/​snakeoil.conf;​ 
- 
- server_name _; 
- root /​var/​www/​html;​ 
- 
- index index.php index.html index.htm index.nginx-debian.html;​ 
- 
- location / { 
- # Essai de servir la demande comme fichier, puis comme répertoire,​ puis affichage d'un 404 
- try_files $uri $uri/ =404; 
- } 
- 
- # Passer les scripts PHP au serveur FastCGI 
- location ~ \.php$ { 
- include snippets/​fastcgi-php.conf;​ 
- fastcgi_pass unix:/​run/​php/​php7.3-fpm.sock;​ 
- } 
- 
- # Refuser l'​accès aux fichiers .htaccess si la racine du document d'​Apache 
- # concorde avec celle de nginx 
- location ~ /\.ht { 
- deny all; 
- } 
-} 
-</​code>​ 
-    * Et voici le modèle pour un serveur virtuel :<code - /​media/​tmp/​modele>​ 
-# Modèle de configuration de l'​hôte virtuel example.com 
-# Placez ce code dans un fichier sites-available/​example.com 
-# et créez un lien symbolique vers sites-enabled/​ pour l'​activer. 
-server { 
-    listen 80; 
-    listen [::]:80; 
- 
-    server_name example.com;​ 
-    root /​var/​www/​example.com;​ 
- 
-    index index.php index.html index.htm; 
- 
-    # Certificats auto-signés générés par le package ssl-cert 
-    # Ne les utilisez pas dans un serveur de production ! 
-    include snippets/​snakeoil.conf;​ 
- 
-    location / { 
-        try_files $uri $uri/ =404; 
-    } 
-  
-    # Passer les scripts PHP au serveur FastCGI 
-    location ~ \.php$ { 
-        include snippets/​fastcgi-php.conf;​ 
-        fastcgi_pass unix:/​run/​php/​php7.3-fpm.sock;​ 
-    } 
- 
-    # Refuser l'​accès aux fichiers .htaccess 
-    # si la racine du document d'​Apache concorde avec celle de nginx 
-    location ~ /\.ht { 
-        deny all; 
-    } 
-} 
-</​code>​ 
-=== Création d'un site === 
- 
-Le plus simple est de partir de l'​exemple **/​etc/​nginx/​sites-available/​default** fourni. 
- 
-  - Recopiez le fichier modèle :<​cli>​ 
-pi@framboise:​~ $ sudo cp /​etc/​nginx/​sites-available/​default /​etc/​nginx/​sites-available/​monsite 
-</​cli>​ 
-  - Éditez avec les droits d'​administration le fichier **/​etc/​nginx/​sites-available/​monsite** :<​cli>​pi@framboise:​~ $ sudo nano /​etc/​nginx/​sites-available/​monsite</​cli><​code - /​etc/​nginx/​sites-available/​monsite>​ 
-server { 
-    listen 80; 
-    listen [::]:80;  
-    ​ 
-    server_name monsite.fr; 
-    root /​var/​www/​html/​monsite;​ 
- 
-    index index.php index.html; 
- 
-    location / { 
-        try_files $uri $uri/ =404; 
-    } 
- 
-    location ~ \.php$ { 
-        include snippets/​fastcgi-php.conf;​ 
-        fastcgi_pass unix:/​run/​php/​php7.3-fpm.sock;​ 
-    } 
-}</​code>​ 
-  - Créez un dossier qui accueillera les fichiers de votre site :<​cli>​pi@framboise:​~ $ sudo mkdir -p /​var/​www/​html/​monsite</​cli>​ 
-  - Créez le fichier **/​var/​www/​html/​index.php** :<​cli>​pi@framboise:/​var/​www/​html/​monsite $ sudo nano /​var/​www/​html/​monsite/​index.php</​cli><​code - /​var/​www/​html/​monsite/​index.php>​ 
-<?php 
-class Application 
-{ 
- public function __construct() 
- { 
- phpinfo();​ 
- } 
-} 
-$application = new Application();​ 
-?> 
-</​code>​ 
- 
-=== Configuration de Nginx === 
- 
-++++ 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>​ 
-++++ 
- 
-<WRAP center round info 60%> 
-L'​installation de nginx a créé les répertoires suivants :<​a2s>​ 
-/etc/nginx/ 
-    | 
-    +--conf.d 
-    +--modules-available 
-    +--modules-enabled 
-    +--sites-available 
-    +--sites-enabled 
-    +--snippets 
-</​a2s>​ 
-  * Le dossier **sites-available** contient les fichiers de configuration des sites 
-  * Le dossier **sites-enabled** permet de les lancer en production. 
-</​WRAP>​ 
- 
-==== Ajout d'un site sous NGINX ==== 
- 
-  * Activez votre site en créant un lien dans le dossier sites-enabled :<​cli>​pi@framboise:​~ $ sudo ln -s /​etc/​nginx/​sites-available/​monsite /​etc/​nginx/​sites-enabled/​monsite</​cli>​ 
-  * Testez la configuration :<​cli>​pi@framboise:​~ $ 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>​ 
-  * Si tout est Ok, redémarrez nginx :<​cli>​pi@framboise:​~ $ sudo systemctl restart nginx.service</​cli>​ 
- 
-Pour finir, sur le PC, allez sur votre serveur à l'aide de votre navigateur Internet. S'il affiche l'​état de php, c'est bon ! 
- 
-==== Installation de MariaDB (« MySQL ») ==== 
- 
-  * Suivez les indications de la page : [[logiciel:​sql:​mariadb:​rpi:​start|]] 
- 
-==== Installation de AdMiner ==== 
- 
-Installez [[logiciel:​internet:​adminer:​start|]] 
-==== Installation de phpMyAdmin ==== 
- 
-Utilisez [[logiciel:​internet:​phpmyadmin:​raspi:​start|]] 
- 
-  - **Installez phpMyAdmin** :<​cli>​pi@framboise:​~ $ sudo apt install phpmyadmin</​cli>​ 
-    * Choisissez un serveur **Apache** (flèches et <​key>​Espace</​key>​ pour sélectionner,​ <​key>​Tabulation</​key>​ pour aller à <OK>, <​key>​Retour</​key>​ pour valider :<​cli>​ 
-┌────────────────────┤ Configuration de phpmyadmin ├────────────────────┐ 
-│ Merci de choisir le serveur Web à reconfigurer automatiquement pour   ​│ ​ 
-│ exécuter phpMyAdmin. ​                                                 │  
-│                                                                       ​│ ​ 
-│ Serveur Web à reconfigurer automatiquement : ​                         │  
-│                                                                       ​│ ​ 
-│    [*] apache2 ​                                                       │  
-│    [ ] lighttpd ​                                                      ​│ ​ 
-│                                                                       ​│ ​ 
-│                                                                       ​│ ​ 
-│                                <​Ok> ​                                  ​│ ​ 
-│                                                                       ​│ ​ 
-└───────────────────────────────────────────────────────────────────────┘ 
-</​cli>​ 
-    * Si vous réinstallez,​ choisissez <Non> à la question concernant la réinstallation de la base de données. 
-    * Le mot de passe root, si demandé, est celui que vous aviez utilisé pour MySQL. 
- 
- 
-Pour **accéder à phpMyAdmin**,​ deux méthodes : 
-  - en créant **un lien** dans le répertoire du site et en rechargeant nginx :<​cli>​pi@framboise:​~ $ sudo ln -s /​usr/​share/​phpmyadmin/​ /​var/​www/​html 
-pi@framboise:​~ $ sudo nginx -s reload</​cli>​L’accès se fait par [[http://​192.168.0.31/​phpmyadmin]] 
-  - en créant **un hôte virtuel** : 
-    * créez un fichier de configuration de site pour NGINX pour permettre d'​accéder :<​cli>​sudo nano /​etc/​nginx/​sites-available/​phpmyadmin</​cli><​code - /​etc/​nginx/​sites-available/​phpmyadmin>​ 
-server { 
-# port 8080 pour bien séparer le site internet de l'​interface phpMyAdmin 
-    listen 8080; 
-    listen [::]:8080; 
- 
-    server_name VOTRESITE; 
- 
-    root /​usr/​share/​phpmyadmin;​ 
-    index index.php index.html; 
- 
-    location / { 
-        try_files $uri $uri/ =404; 
-    } 
-    location ~ \.php$ { 
-        include snippets/​fastcgi-php.conf;​ 
-        fastcgi_pass unix:/​run/​php/​php7.3-fpm.sock;​ 
-    } 
-}</​code>​ 
-    * Mettez le site en production :<​cli>​pi@framboise:​~ $ sudo ln -s /​etc/​nginx/​sites-available/​phpmyadmin /​etc/​nginx/​sites-available/​phpmyadmin</​cli>​ 
-    * Redémarrez le tout :<​cli>​pi@framboise:​~ $ sudo systemctl restart mysql.service ​ 
-pi@framboise:​~ $ sudo systemctl restart nginx.service</​cli>​ 
-    * Vous pouvez accéder à phpMyAdmin depuis votre navigateur sous la forme suivante :​[[http://​192.168.0.31:​8080]] : 
- 
-{{ tutoriel:​nanopc:​raspi:​lemp:​lemp-rpi-02.png?​400 |}} 
-Connectez-vous avec l'​utilisateur que vous avez créé (admin) et son mot de passe 
-===== Conclusion ===== 
- 
-===== Problèmes connus ===== 
- 
-===== Voir aussi ===== 
- 
-  * **(fr)** [[https://​web.developpez.com/​tutoriels/​creer-serveur-web-nginx-php-mariadb/​]] 
- 
----- 
-//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.//