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