Ceci est une ancienne révision du document !
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 php7
sudo apt-get install php7.0 php7.0-fpm php7.0-mbstring -y
Vérifier que l'install de php7 fonctionne :
systemctl status php7.0-fpm.service
On doit obtenir le résultat suivant :
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-2018-04-22b (pour la version stable en avril 2020).
Renommer cette instance du wiki comme on le souhaite :
sudo mv dokuwiki-2018-04-22b 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
Dans /etc/nginx
se trouvent deux répertoires : sites-available
et sites-enabled
.
L'idée est que sites-available
contienne les fichiers de config 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/php7.0-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 :
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