Mettez à jour les sources :
pi@framboise:~ $ sudo apt update && sudo apt upgrade
pi@framboise:~ $ sudo apt install nginx acl
pi@framboise:~ $ sudo nginx pi@framboise:~ $ sudo systemctl enable nginx
pi@framboise:~ $ sudo systemctl is-active nginx active

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 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 :
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
# 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;
}
}
Le plus simple est de partir de l'exemple /etc/nginx/sites-available/default fourni.
pi@framboise:~ $ sudo cp /etc/nginx/sites-available/default /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;
}
}
pi@framboise:~ $ sudo mkdir -p /var/www/html/monsite
pi@framboise:/var/www/html/monsite $ sudo nano /var/www/html/monsite/index.php<?php
class Application
{
public function __construct()
{
phpinfo();
}
}
$application = new Application();
?>
pi@framboise:~ $ sudo ln -s /etc/nginx/sites-available/monsite /etc/nginx/sites-enabled/monsite
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
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 !
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
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/