{{tag>Logiciel}} ====== Nginx sur RaspBerry Pi : le serveur Web hautes performances (LEMP) ====== Voir [[logiciel:internet:nginx:start]] ===== Pré-requis ===== * **[[tutoriel:internet:serveur:racine:start]]** ===== Installation ===== Mettez à jour les sources : - Mettez à jour les sources :pi@framboise:~ $ sudo apt update && sudo apt upgrade - Installez Nginx sur le Raspberry :pi@framboise:~ $ sudo apt install nginx acl - Démarrez Nginx, activez-le pour être lancé au démarrage et démarrez le service :pi@framboise:~ $ sudo nginx pi@framboise:~ $ sudo systemctl enable nginx - Vérifiez que Nginx est bien démarré :pi@framboise:~ $ sudo systemctl is-active nginx active - **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:internet:nginx:raspi:nginx-raspi-01.png?400 |}} Quand vous tapez l'adresse [[http://192.168.0.31]], vous aboutissez dans le répertoire **//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. L'installation a créé l'arborescence : 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 │   └── ... └── ... * Le dossier **sites-available** contient les fichiers de configuration des sites * Le dossier **sites-enabled** permet de les lancer en production. ===== 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 ==== - Faites une copie du fichier **/etc/nginx/sites-available/default** :pi@framboise:~ $ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.dist|]] Pour info, en voici le contenu : [[logiciel:internet:nginx:raspi:default]] Pour en savoir plus sur le fichier de configuration, voir [[logiciel:internet:nginx:nginx.conf:start]] - Éditez avec les droits d'administration le fichier **/etc/nginx/sites-available/default** pour le modifier comme ceci : : # 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; } } Et voici le modèle pour un serveur virtuel : # 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; } } ==== 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 :pi@framboise:~ $ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/monsite - Éditez avec les droits d'administration le fichier **/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; } } - Créez un dossier qui accueillera les fichiers de votre site :pi@framboise:~ $ sudo mkdir -p /var/www/html/monsite - Créez le fichier **/var/www/html/index.php** :pi@framboise:/var/www/html/monsite $ sudo nano /var/www/html/monsite/index.php - Activez votre site en créant un lien dans le dossier sites-enabled :pi@framboise:~ $ sudo ln -s /etc/nginx/sites-available/monsite /etc/nginx/sites-enabled/monsite - Testez la configuration :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 - Si tout est Ok, redémarrez nginx :pi@framboise:~ $ sudo systemctl restart nginx.service 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 ! ==== Serveurs virtuels ==== Pour le PHP, vérifier le contenu du répertoire : 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 ===== Utilisation ===== Exemple sur framboise : # 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; } } # doc.framboise.parc server { listen 80; listen [::]:80; server_name doc.framboise.parc; root /var/www/html/doc; 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 ~ /(data|conf|bin|inc)/ { deny all; } location ~ /\.ht { deny all; } } # hôtes virtuels dokuwiki server { listen 80; listen [::]:80; server_name ~^(?Pdoc|perso|magie)\.framboise\.parc$; #server_name doc.framboise.parc; #root /var/www/html/doc; 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 gestion.framboise.parc server { listen 80; listen [::]:80; server_name gestion.framboise.parc; root /var/www/html/gestion/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 perso.framboise.parc server { listen 80; listen [::]:80; server_name perso.framboise.parc; root /var/www/html/perso; 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.+)\.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; } } Activer cet hôte : pi@framboise:~ $ sudo ln -s /etc/nginx/sites-available/framboise.parc /etc/nginx/sites-enabled/ ===== Désinstallation ===== ===== Voir aussi ===== * **(fr)** [[http://Article]] ---- //Basé sur << [[http://Article|Article]] >> par Auteur.//