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

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
logiciel:reseau:http:serveur:nginx:raspi:start [2024/09/21 10:43] – supprimée - modification externe (Unknown date) 127.0.0.1logiciel:reseau:http:serveur:nginx:raspi:start [2024/09/21 10:43] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. admin
Ligne 1: Ligne 1:
 +{{tag>Logiciel}}
  
 +====== Nginx sur RaspBerry Pi : le serveur Web hautes performances (LEMP) ======
 +
 +Voir **[[logiciel:reseau:http:serveur:nginx:start]]**
 +
 +===== Pré-requis =====
 +
 +  * **[[tutoriel:reseau:http:serveur:racine:start]]**
 +
 +===== Installation =====
 +
 +<subnumberlist>
 +  - Mettez à jour les sources :<cli prompt='$ '>pi@framboise:~ $ sudo apt update && sudo apt upgrade</cli>
 +  - Installez Nginx sur le Raspberry :<cli prompt='$ '>pi@framboise:~ $ sudo apt install nginx acl</cli>
 +  - Démarrez Nginx, activez-le pour être lancé au démarrage et démarrez le service :<cli prompt='$ '>pi@framboise:~ $ sudo nginx
 +pi@framboise:~ $ sudo systemctl enable nginx</cli>
 +  - Vérifiez que Nginx est bien démarré :<cli prompt='$ '>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]] ; vous devriez tomber sur cette page :{{ logiciel:reseau:http:serveur:nginx:raspi:raspi_001.png?400 |}}<WRAP center round info 60%>
 +Quand vous tapez l'adresse [[http://192.168.0.31]], vous aboutissez dans le répertoire **/<DISQUE>/srv/www/html**.
 +
 +L'utilisateur **$USER** (qui fait partie du groupe **www-data**) a lui aussi accès à ce répertoire.
 +
 +N'oubliez pas de recharger la page du navigateur pour vider le cache, sinon c'est l'ancienne page qui s'affiche.
 +</WRAP>
 +</subnumberlist>
 +
 +<WRAP center round info 60%>
 +L'installation a créé l'arborescence :
 +<cli>pi@framboise:~ $ tree /etc/nginx/
 +/etc/nginx/
 +├── nginx.conf
 +├── conf.d
 +├── modules-available
 +├── modules-enabled
 +│   └── ...
 +├── sites-available
 +│   └── default
 +├── sites-enabled
 +│   └── default -> /etc/nginx/sites-available/default
 +├── snippets
 +│   └── ...
 +└── ...
 +</cli>
 +  * Le dossier **sites-available** contient les fichiers de configuration des sites
 +  * Le dossier **sites-enabled** permet de les lancer en production.
 +</WRAP>
 +
 +===== Configuration =====
 +
 +Le fichier de configuration de **nginx** est /etc/nginx/nginx.conf mais **nous n'y toucherons pas** pour ne pas perdre les réglages lors des mises à jour.
 +
 +Au lieu de toucher au fichier /etc/nginx/nginx.conf, nous utiliserons certains dossiers :
 +  * **configuration** : des fichiers dans le répertoire **/etc/nginx/conf.d**.
 +  * **hôtes virtuels** : des fichiers dans le répertoire **/etc/nginx/sites-available** (le fichier default peut servir de modèle)
 +  * Le dossier **/etc/nginx/sites-enabled** permet de lancer les hôtes virtuels en production
 +
 +==== Serveur par défaut ====
 +
 +<subnumberlist>
 +  - **Faites une copie du fichier /etc/nginx/sites-available/default** :<cli prompt='$ '>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 : **[[logiciel:reseau:http:serveur:nginx:raspi:default:start]]**
 +Pour en savoir plus sur le fichier de configuration, voir **[[logiciel:reseau:http:serveur:nginx:nginx.conf:start]]**
 +</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>
 +</subnumberlist>
 +
 +Et voici le modèle pour un serveur virtuel :<code - example.com>
 +# 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.
 +
 +<subnumberlist>
 +  - **Recopiez le fichier modèle** :<cli prompt='$ '>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** :<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 prompt='$ '>pi@framboise:~ $ sudo mkdir -p /var/www/html/monsite</cli>
 +  - **Créez le fichier /var/www/html/index.php** :<cli prompt='$ '>pi@framboise:~ $ 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>
 +  - **Activez votre site** en créant un lien dans le dossier sites-enabled :<cli prompt='$ '>pi@framboise:~ $ sudo ln -s /etc/nginx/sites-available/monsite /etc/nginx/sites-enabled/monsite</cli>
 +  - **Testez la configuration** :<cli prompt='$ '>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 prompt='$ '>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 !
 +</subnumberlist>
 +
 +==== Serveurs virtuels ====
 +
 +Pour le PHP, vérifier le contenu du répertoire  :<cli prompt='$ '>pi@framboise:~ $ ll /var/run/php/
 +total 4,0K
 +srw-rw---- 1 www-data www-data 0 juil. 20 10:46 php7.3-fpm.sock
 +-rw-r--r-- 1 root     root     5 juil. 20 10:46 php7.3-fpm.pid</cli>
 +===== Utilisation =====
 +
 +Exemple sur framboise :
 +
 +<code - /etc/nginx/sites-available/framboise.parc>
 +# Domaine framboise.parc
 +
 +# hôte virtuel framboise.parc
 +server {
 + listen 80;
 + listen [::]:80;
 +
 +    server_name framboise.parc;
 +    root /var/www/html/;
 +
 +    index index.php index.html index.htm index.nginx-debian.html;
 +
 + location / {
 + try_files $uri $uri/ =404;
 + }
 +
 + location ~ \.php$ {
 + include snippets/fastcgi-php.conf;
 + fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
 + #~ fastcgi_pass unix:/var/run/php5-fpm.sock;
 + }
 +
 + location ~ /\.ht {
 + deny all;
 + }
 +}
 +
 +# hôtes virtuels dokuwiki
 +server {
 + listen 80;
 + listen [::]:80;
 +
 +    server_name  ~^(?P<sub>doc1|doc2|doc3)\.framboise\.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.3-fpm.sock;
 + fastcgi_pass unix:/var/run/php5-fpm.sock;
 + }
 +
 + location ~ /(data|conf|bin|inc)/ {
 + deny all;
 + }
 +
 + location ~ /\.ht {
 + deny all;
 + }
 +}
 +
 +# hôte virtuel test.framboise.parc
 +server {
 + listen 80;
 + listen [::]:80;
 +
 + server_name test.framboise.parc;
 + root /var/www/html/test;
 +
 + 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;
 + #~ fastcgi_pass unix:/var/run/php5-fpm.sock;
 + }
 +
 + location ~ /(data|conf|bin|inc)/ {
 + deny all;
 + }
 +
 + location ~ /\.ht {
 + deny all;
 + }
 +}
 +
 +#~ # hôte virtuel dolibarr.framboise.parc
 +server {
 + listen 80;
 + listen [::]:80;
 +
 + server_name dolibarr.framboise.parc;
 + root /var/www/html/dolibarr/htdocs;
 +
 + 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;
 + #~ fastcgi_pass unix:/var/run/php5-fpm.sock;
 + }
 +
 + location ~ /(data|conf|bin|inc)/ {
 + deny all;
 + }
 +
 + location ~ /\.ht {
 + deny all;
 + }
 +}
 +
 +# hôte virtuel *.framboise.parc
 +server {
 + listen 80;
 + listen [::]:80;
 +
 +# On récupère le sous-domaine dans la variable "sub".
 +    server_name  ~^(?P<sub>.+)\.framboise.parc$;
 +    root /var/www/html/$sub;
 +
 +    index index.php index.html index.htm index.nginx-debian.html;
 +
 + location / {
 + try_files $uri $uri/ =404;
 + }
 +
 + location ~ \.php$ {
 + include snippets/fastcgi-php.conf;
 + fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
 + #~ fastcgi_pass unix:/var/run/php5-fpm.sock;
 + }
 +
 + location ~ /\.ht {
 + deny all;
 + }
 +}
 +</code>
 +
 +Activer cet hôte :<cli prompt='$ '>pi@framboise:~ $ sudo ln -s /etc/nginx/sites-available/framboise.parc /etc/nginx/sites-enabled/</cli>
 +
 +
 +===== Désinstallation =====
 +
 +===== Problèmes connus =====
 +
 +===== Voir aussi =====
 +
 +  * **(fr)** [[http://Article|Article]]
 +  * **(en)** [[http://Article|Article]]
 +
 +----
 +//Basé sur << [[http://Article|Article]] >> par Auteur.//
Navigation
  • Pages :
    • créer :
QR Code
QR Code Nginx sur RaspBerry Pi : le serveur Web hautes performances (LEMP) (generated for current page)