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

  1. Sur l’hôte

    1. Générer un couple de clés ssh-keygen -t ed25519

    2. Récupérer le contenu de la clé publique : cat .ssh/id_ed25519.pub

  2. Sur la VM Alma9

    1. Créer un dossier .ssh si il n’existe pas

    2. Coller dans .ssh/authorized_keys le contenu de la clé publique

  3. 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

  1. Installer un nginx

  2. Démarrer nginx et l’activer de manière permanente avec systemctl

  3. Vérifier avec ss -tlnp et curl que Nginx écoute bien le port 80 et qu’un vhost par défaut existe

  4. Ouvrir le port 80 vers l’extérieur

  5. 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 :

# chcon -Rt httpd_sys_content_t /srv
Configuration Nginx avec les cours
    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 {
        }
    }