Nginx sur RaspBerry Pi : le serveur Web hautes performances (LEMP)

Voir Nginx : le serveur Web hautes performances (LEMP)

Pré-requis

Déplacer la racine (répertoire de base) d'un serveur HTTP

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 :	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.
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 sitesLe 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 : Fichier /etc/nginx/sites-available/default Pour en savoir plus sur le fichier de configuration, voir Structure du fichier de configuration nginx.conf
É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

<?php
class Application
{
public function __construct()
{
phpinfo();
}
}
$application = new Application();
?>

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 ~^(?P<sub>doc|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<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;
}
}

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 << Article >> par Auteur.