====== TP Virtualisation - Serveur Web - Application Wiki ====== ===== Objectifs ===== On souhaite, à partir d'une machine virtuelle VirtualBox hébergeant une machine Debian * héberger un serveur web **apache2** avec le langage PHP * héberger, grâce au serveur web, une application **wiki** (dokuwiki) permettant la rédaction de documentation partagée en ligne * stocker une image de machine virtuelle **.ova** dans l'arborescence du serveur web de manière à la rendre disponible aux autres utilisateurs et la récupérer par une requête http, par exemple : ''wget http://adresse/images/machine.ova'' ===== 1. Installation d'une machine virtuelle Debian ===== * installer une machine virtuelle Debian Buster à une carte réseau en **NAT** (Network Address Translation) * soit en **important** un fichier **ova** * soit en **créant** une machine virtuelle à partir d'une image **iso** * l'utilisation de la machine en tant que serveur impliquera de mettre en place la redirection de ports (cf VirtualBox //Configuration/Réseau/Avancé//): * pour **SSH** (**2022** => **22**) : une connexion sur le port **2022** de la machine **hôte** est redirigée sur le port **22** de la machine **virtuelle** * pour **HTTP** (**2080** => **80**) : même principe le port **2080** de l’hôte est redirigé vers le port **80** de la machine virtuelle * la suite des opérations peut s'effectuer en mode **console** ou de manière plus simple en **connexion SSH** car ce type de connexion permet le **Copier-Coller** ce qui n'est pas le cas pour la Console VirtualBox en mode standard ===== 2. Connexion à la machine virtuelle Debian ===== * pour se connecter en SSH (si la machine virtuelle est configurée en NAT) et que le **port externe 2022** est redirigé sur le **port interne 22** : ssh root@localhot -p 2022 * si la connexion **root** s'avère impossible, se connecter avec un utilisateur standard (**sio** par exemple) et ensuite devenir **root** avec la commande **su -** ==== Opérations de base ==== * on peut alors vérifier l'**heure** avec : date * on peut alors vérifier le**nom de la machine** avec : hostname * on peut alors vérifier l'**état de la couche réseau** avec : ip addr * on peut alors afficher la **table de routage** avec : ip route * on peut alors vérifier la **connectivité avec l'internet** avec : ping 9.9.9.9 * on peut alors vérifier la **résolution de noms (configuration DNS)** avec (paquet **dnsutils**) : host 9.9.9.9 * mettre à jour la liste des paquets avec : apt update * mettre à jour les paquets eux même (facultatif mais recommandé) avec : apt upgrade ===== 3. Installation du serveur web Apache2 avec les modules PHP ===== * une fois la mise à jour effectuée, installer **apache2** et les modules **php** sudo apt install apache2 php php-gd php-mbstring * on peut alors vérifier qu'**apache2** est fonctionnel avec : systemctl status apache2 ou bien avec : ss -ltn State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:80 *:* LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* ===== 4. Installation de dokuwiki dans le répertoire de base d'Apache2 ===== * on se positionne dans le répertoire **/var/www/html** : racine des documents du serveur **apache** cd /var/www/html * on peut alors récupérer l'archive de l'application **dokuwkiki** à l'adresse https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz. On télécharge avec l'application **wget** (client web en mode texte, normalement installé avec la distribution, sinon on l'installe avec ''apt install wget'') wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz .... 2019-06-12 12:55:16 (677 KB/s) - 'dokuwiki-stable.tgz' saved [3745314/3745314] * on peut alors décompacter le fichier archive tgz (.tar.gz) avec la commande **tar** (Tape Archive qui permet de gérer les archives) tar xvfz dokuwiki-stable.tgz * on renomme le répertoire contenant les sources **dokuwiki-2020-07-29** en **doku** (plus facile à utiliser) mv dokuwiki-2020-07-29 doku * on adapte les droits des répertoires (le serveur web **apache** (user** www-data**, groupe **www-data**) doit disposer de droits **W** sur les répertoires (**data** : pour les pages, **lib/plugins** et **lib** pour les plugins, **conf** pour la configuration) chown -R root:root * cd doku chown -R www-data:www-data data lib/plugins lib conf * On peut alors paramétrer le **dokuwiki** en se connectant à l'URL suivant : http://adresse/doku/install.php et terminer la configuration de base. * il est également possible d'examiner les fichiers journaux (**logs**) du serveur apache avec la commande : tail -f /var/log/appache2/access.log 10.0.2.2 - - [12/Jun/2019:16:48:14 +0000] "GET /doku/install.php HTTP/1.1" 200 3420 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" 10.0.2.2 - - [12/Jun/2019:16:48:15 +0000] "GET /doku/data/dont-panic-if-you-see-this-in-your-logs-it-means-your-directory-permissions-are-correct.png HTTP/1.1" 200 6803 "http://localhost:2080/doku/install.php" "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" 10.0.2.2 - - [12/Jun/2019:16:48:15 +0000] "GET /doku/lib/exe/fetch.php?media=wiki:dokuwiki-128.png HTTP/1.1" 200 28397 "http://localhost:2080/doku/install.php" "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" 10.0.2.2 - - [12/Jun/2019:17:03:27 +0000] "GET /images/debian-stretch64-2017c.ova HTTP/1.1" 200 825855759 "-" "Wget/1.18 (linux-gnu)" ===== 5. Stockage d'un fichier .ova dans l'arborescence du serveur web ===== On souhaite utiliser la machine Debian comme espace de stockage pour héberger des fichiers **.ova** (VirtualBox) et des images **iso** (cdrom) ou d'autres La machine sera accessible par **http** pour récupérer des fichiers avec **wget** ou un navigateur web classique) wget http://adresse:2080/images/mamachine.ova wget http://localhost:2080/images/mamachine.ova # depuis la machine hôte avec la redirection de ports le répertoire de stockage sera **/var/www/html/images** (**à créér**) Pour déposer les fichiers, on devra se connecter avec **ssh/scp** car http ne permet pas d'écrire scp -P 2022 mamachine.ova root@localhost:/var/www/html/images Il est également possible d'utiliser un gestionnaire de fichier graphique (comme **thunar** sous XFCE, ou **winscp** depuis une machine **Windows**). Il faudra utiliser un URL du type : ssh://root@localhost:2022:/.. ==== Autre piste : FileBrowser ==== Une autre piste se présente qui permet de copier des fichiers sur le serveur distant grâce à une interface web grâce à 'application **file browser**. Cf : https://filebrowser.org/ === Installation de File Browser === curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash ===Lancement de File Browser === filebrowser -r /var/www/html/ -a 0.0.0.0 Le serveur est alors actif jusqu'à ce qu'on l'interrompe avec ****. On peut également le lancer en arrière-plan en terminant la commande avec **&** Pour se connecter à **File Browser**, on utilisera un navigateur pour pointer à l'adresse du serveur. **File Browser** écoute sur le port **8080** vers lequel il faudra rediriger un port d'entrée avec **VirtualBox**. //admin/admin// permet de s'identifier {{:diu-eil:2.png?400|}}