{{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.//