Construire un serveur avec nginx et Dokuwiki

Ce serveur repose sur une instance de Dokuwiki, fonctionnant en php8, sur un serveur nginx hébergé sur un Raspberry Pi.

Installer Raspbian

Puis configurer le Rapsberry Pi (mot de passe principal, locale, timezone…).
Redémarrer la machine et se connecter en ssh.

Installer nginx

sudo apt-get update
sudo apt-get install nginx -y

Vérifier que l'install de nginx fonctionne :
systemctl status nginx.service

On doit obtenir le résultat suivant :

A cette étape, on dispose d'un serveur web qui fonctionne, et dont l'arborescence de fichiers se trouve par défaut dans le répertoire /var/www/html

Installer php

sudo apt-get install php8.2 php8.2-fpm php8.2-mbstring php8.2-xml -y

Vérifier que l'install de php fonctionne :
systemctl status php8.2-fpm.service

On doit obtenir le résultat suivant (ici avec php7, mettre à jour l'illustration) :

Télécharger Dokuwiki

et copier les fichiers à la racine du site web :
cd /var/www
sudo wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
sudo tar xfz dokuwiki-stable.tgz
sudo rm dokuwiki-stable.tgz

On obtient une archive décompressée nommée dokuwiki-XXXX-XX-XXX (XXs pour la date de la version stable).
Renommer cette instance du wiki comme on le souhaite, par exemple monwiki :
sudo mv dokuwiki-XXXX-XX-XXX monwiki

Attribuer le bon propriétaire au wiki (le process de nginx, et lui seul, doit avoir les permissions pour écrire dans le wiki) :
sudo chown -R www-data:www-data /var/www/monwiki

Paramétrage des hôtes virtuels

Par défaut, toutes les requêtes adressées au serveur sont orientées vers le répertoire /var/www/html et en particulier vers son fichier index. Si l'on souhaite que le serveur serve différentes URL (des serveurs virtuels, server blocks dans le jargon de nginx, vhosts dans le jargon de Apache), on doit créer les fichiers de paramètres correspondants.
Ces fichiers seront nommés sous la forme monurl.fr.conf

Clarifier la question du nom de fichier conf et d'URL

Dans /etc/nginx se trouvent deux répertoires : sites-available et sites-enabled.
L'idée est que sites-available contienne les fichiers de configuration des sites disponibles sur la machine, et que sites-enabled contienne seulement des liens symboliques vers des fichiers de sites-available, pour les sites actuellement activés. On peut ainsi activer ou désactiver un site très rapidement, en créant ou supprimant un lien.

On va ainsi créer un fichier de paramètres correspondant à notre URL.
sudo nano /etc/nginx/sites-available/monwiki.fr.conf

Voir le fichier monwiki.fr.conf
server {
    listen               80;
    server_name          monwiki.fr;
 
    root /var/www/monwiki;
 
    location / {
        index doku.php; 
        try_files $uri $uri/ @dokuwiki; 
    }
 
    location @dokuwiki {
        rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
        rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
        rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
        rewrite ^/(.*) /doku.php?id=$1&$args last;
    }
 
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }   
 
    location ~ /(data|conf|bin|inc)/ {
        deny all;
    }
 
}

Activer le site

On crée un lien pour l'activer
cd /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/monwiki.fr.conf .

Redémarrer nginx pour prendre en compte ces changements
sudo systemctl restart nginx.service

Configuration du wiki

Dans un navigateur, saisir http://monwiki.fr/install.php dans la barre d'adresse. Entrer les informations requises et enregistrer.
On peut désormais supprimer le fichier d'installation (ou bien le déplacer hors de l'arborescence web pour le réutiliser au besoin - réinitialiser le mdp admin) :
sudo rm /var/www/monwiki/install.php

Références

Procédure complète y compris paramétrage ssh ici

Configuration de nginx ici

En particulier server blocks

Webcam http://www.epingle.info/?p=2682