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 lenom 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 <Ctrl-C>. 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