Skip to content

Latest commit

 

History

History
90 lines (80 loc) · 3.17 KB

README.md

File metadata and controls

90 lines (80 loc) · 3.17 KB

logo UQAC

8CLD201 - Devoir 1

Antoine Crauser - Breval Ferrari - Elias Khallouk

Ce projet correspond au rendu du devoir 1 du cours "8CLD201 - Environnement de déploiement des applications".

Les consignes peuvent être retrouvées dans consignes.md.

Ce projet est sur Azure DevOps et sur GitHub.

Annexes

Cloud-init.txt

Voici le fichier Cloud-init.txt expliqué pas à pas :

package_upgrade: true

Nous autorisons d'abord Azure à mettre à jour les paquets utilisés par ce script. En voici la liste :

packages:
  - nginx
  - nodejs
  - npm

Ces paquets sont nginx, un serveur HTTP, nodejs, un interpréteur de Node.js qui fournit une runtime JavaScript, et npm, un gestionnaire de projet.

Nous avons ensuite une section où il est possible de créer des fichiers sur la machine virtuelle :

write_files:
  - owner: www-data:www-data

Le premier est le fichier de configuration du site par défaut déployé par nginx, qui appartient à l'utilisateur virtuel www-data et au groupe d'accès www-data, ce qui permet au serveur HTTP et donc au client d'avoir accès à ces fichiers.

    path: /etc/nginx/sites-available/default
    defer: true

Voici son contenu :

    content: |
      server {
        listen 80;
        location / {
          proxy_pass http://localhost:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection keep-alive;
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
        }
      }

Cette configuration commande entre autres une écoute du serveur sur le port 80 (HTTP) et un proxy sur le port 3000.

Le dernier fichier est le site même, un script qui renvoie un "Hello World" aux clients connectés sur le port 3000 :

  - owner: www-data:www-data
    path: /home/myapp/index.js
    defer: true
    content: |
      var express = require('express')
      var app = express()
      var os = require('os');
      app.get('/', function (req, res) {
        res.send('Hello World from host ' + os.hostname() + '!')
      })
      app.listen(3000, function () {
        console.log('Hello world app listening on port 3000!')
      })

Ce script affiche aussi sur appel de la racine du document un message contenant le nom d'hôte de la machine sur laquelle il tourne. Cela nous permet de tester notre load-balancer.

La dernière partie du Cloud-init.txt est une liste de commandes à exécuter par Azure pour faire tourner notre serveur :

runcmd:
  - service nginx restart
  - cd "/home/myapp"
  - npm init
  - npm install express -y
  - nodejs index.js

Voici un résumé des étapes du script :

  1. redémarrer le serveur HTTP nginx
  2. naviguer dans le dossier source du site
  3. télécharger les dépendances et préparer le site
  4. installer express, un framework web Node.js
  5. lancer le script vu précédemment