Première VM avec un Nginx
Environnement de TP
-
Distribution GNU/Linux : Alma 9
Dérivé de Red Hat Linux, remplace les versions stables de CentOS -
Gestionnaire de machines virtuelles :
-
Linux → virt-manager ou virtualbox
-
Windows (désolé) → virtualbox ou autre ?
-
Configurer SSH
-
Sur l’hôte
-
Générer un couple de clés
ssh-keygen -t ed25519 -
Récupérer le contenu de la clé publique :
cat .ssh/id_ed25519.pub
-
-
Sur la VM Alma9
-
Créer un dossier
.sshsi il n’existe pas -
Coller dans
.ssh/authorized_keysle contenu de la clé publique
-
-
De retour sur l’hôte, faire une nouvelle connexion à la VM
⇒ SSH devrait utiliser la clé et ne plus demander de mot de passe
Pensez à activer le service sshd :
# systemctl start sshd # démarrage du service
# systemctl enable sshd # activation permanente du service
Si SSH ne trouve pas la clé tout seul, on peut lui indiquer manuellement :
ssh -i \chemin\de\ma\cle root@X.X.X.X
|
Donner un nom à la machine
Vérifier le nom actuel de la machine :
# hostname
Éditer /etc/hostname, le nom est appliqué par un reboot.
HTTP avec Nginx
Installation et configuration initiale
-
Installer un nginx
-
Démarrer nginx et l’activer de manière permanente avec
systemctl -
Vérifier avec
ss -tlnpetcurlque Nginx écoute bien le port 80 et qu’un vhost par défaut existe -
Ouvrir le port 80 vers l’extérieur
-
Afficher la page par défaut dans le navigateur de l’hôte
# firewall-cmd --zone=public --add-service=http --permanent # firewall-cmd --reload
Servir du contenu
Instructions : servir les documents de cours dans le contexte /, depuis le dossier /srv/cours-git/ sur la VM.
L’adresse de visualisation des cours est donc http://X.X.X.X/.
|
Si les fichiers à servir sont mis en dehors du dossier standard de Nginx, il faut dire autoriser l’accès aux fichiers dans SELinux :
|
server {
listen 80;
listen [::]:80;
server_name _;
root /srv/cours;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}