====== 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 : {{:tim:axe3:nginx.png?nolink&600|}} 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) : {{:tim:axe3:php7.png?nolink&600|}} === 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 [[https://www.techcoil.com/blog/how-to-setup-your-own-wiki-site-on-a-raspberry-pi-3-with-dokuwiki-raspbian-stretch-lite-nginx-and-php/|ici]] Configuration de nginx [[https://www.linode.com/docs/web-servers/nginx/how-to-configure-nginx/|ici]] En particulier [[https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04|server blocks]] Webcam http://www.epingle.info/?p=2682