Cloud et FTP
Internet et le web
Vous êtes employé par M. LIAO, responsable technique de la société ABC-Services qui vous demande d'étudier la meilleure façon de travailler sur le serveur Web de l'entreprise.
Le travail de ce TP vous permettra de créer un environnement de test de vos activités de développement ou de services et d'infrastructure futurs dans votre formation. Profitez-en.
Le travail à faire est surligné en jaune.
(Rappels?)
Question : Comment faire pour se connecter à notre VM avec le navigateur ?
Internet, c'est quoi ?
Internet est un ensemble de réseaux interconnectés (Inter-net \= interconnected networks) grâce à des routeurs.
Rapidement : un réseau
Pour avoir un réseau, il faut plusieurs postes et les relier entre eux.
Mais comment nouer les câbles ? par épissure ? non
On utilise une "multiprise" réseau : un hub (concentrateur, obsolète) ou un switch (commutateur).
Le rôle du switch
Un réseau est un ensemble de postes connectés entre eux à l'aide d'un switch (ou hub)
Le switch "apprend" les hôtes connectés à chaque port et transmet cette table ports/macs à son voisin.
Chaque switch connaît tous les hôtes du réseau.
Exemple du Switch 1 de gauche :
Port | Mac |
---|---|
1 | macPC1 |
2 | macPC3 |
3 | macPC2 |
4 | macPC4, 5, 6, 7, 8 et 9 |
Cette table permet d'envoyer correctement le message (la trame éthernet) vers le destinaitaire.
Le switch n'est pas omniscient. Et le routeur ?
Comme le switch "apprend" les hôtes qui lui sont connectés, même à travers les autres switchs sa table Port/MAC doit être assez grande pour toutes les adresses MAC du réseau local.
Cependant, sa mémoire n'est pas suffisante pour "apprendre" tous les hôtes du monde.
On passe donc à un autre niveau, l'adresse postale : l'adressage IP avec les routeurs.
Internet : un réseau de réseaux
Dans internet, il n'y a donc aucun serveur (de données et d'application) mais uniquement des câbles, des liaisons et des routeurs.
Et le web ?
La valeur ajoutée des réseaux. Le protocole http, port TCP 80
Question : Comment faire pour se connecter à notre VM avec le navigateur ?
Le web est un usage des réseaux. On y échange des fichiers à l'aide de requêtes et réponses HTTP.
Les requêtes contiennent des données permettant de localiser la ressource recherchée. C'est l'URL.
Les ressources qui nous sont renvoyées en réponse à la requête contiennent des liens (hypertextes) avec des url qui permettent de localiser et télécharger d'autres ressources.
Les protocoles utilisés font partie des couches 5 à 7 du modèle OSI :
Couche | Unité | Rôle |
---|---|---|
5 - Session, 6 - Présentation et 7 - Application | Donnée | Accès aux services applicatifs Conversion et chiffrement Communication inter hôtes |
4 - Transport | Segment Datagramme | Connexion, contrôle de flux (TCP) ou transfert sans contrôle (UDP) Filtrage de ports et PAT |
3 - Réseau | Paquet | Route, parcours, adressage logique (IP) filtrage d'adresse, NAT |
2 - Liaison | Trame | Adressage physique, zones de diffusion et commutation Sous-couches MAC et LLC |
1 - Physique | Bit | Transmission du signal binaire numérique ou analogique Média support de communication (câble, fibre, radio) |
Deux ordinateurs ne peuvent se connecter qu'avec leurs adresses IP !!! Tout le reste est pour le type de service (les ports) et pour les anthropopithèques que nous sommes.
Se connecter avec l'URL du site
Paroles ...
- une adresse quoi ? IP ? cékoissa ?
- ouais, quand je veux monsite, je demande monsite. Le reste, c'est trop dur à retenir (tu comprends ? je ne suis qu'un humain, moi. Et les chiffres ...).
Utiliser une URL à la place de l'adresse IP
Pour retrouver une ressource, rien de plus pénible que d'utiliser l'adresse IP il a donc été mis en place un service de conversion des adresses IP en une chaîne de caractères compréhensible et facile à mémoriser.
C'est le service DNS (Domain name service) et l'URL (Uniform Remote Locator).
Déchiffrer l'URL
Les URL sont de deux formes :
- la forme classique : www.mon.site.fr/le/chemin/vers/la/ressource.php?parm1=valeur1&parm2=val2
- la ressource est recherchée dans le cehmin des répertoires du site,
- les paramètres sont transmis à la ressource
- la forme "moderne" : www.mon.site.fr/une/liste/d_Arguments/?parm1=valeur1
- la ressource est toujours l'index du site
- les arguments sont en fait des paramètres décodés par l'index pour afficher le contenu dynamique.
D'autres paramètres sont envoyés à la ressource, mais ils ne sont pas affichés dans l'URL (Voir POST et GET en développement web).
L'URL est composée :
- Le domaine de la ressource avec :
- le nom de la machine, habituellement www,
- les domaine et sous domaines séparés par des . (points),
- le nom de domaine de 1er niveau (Top level domain - TLD) : .com, .fr, ….
- Ensuite, on a le chemin et le nom de la ressource (/ex : index.php) ou une série de valeurs qui ressemblent à un chemin : des arguments (sans nom de ressource)
- Enfin, après un ? (point d'interrogation), une liste de paramètres et de valeurs séparées par l'esperluette (&) : p1=v1\&p2=v2 …
Question
Mais quelle url utiliser ? j'en n'ai paaaas (sob!)
Rechercher un URL avec un moteur de recherche
Afin de trouver facilement les ressources (url), des entreprises (AOL, Free, Microsoft, Voila, Kartoo, Lycos, Alphabet (google), Qwant, Duckduck go, Ecosia, Lilo, etc. …) proposent un service de référencement des ressources, des pages des sites et établissent une liste d'url répondant à une demande posée sur leur application de recherche dans leur banque d'url.
Si les premiers sites de recherches de page étaient des annuaires où les propriétaires et les internautes ajoutaient eux même des url, aujourd'hui, les moteurs de recherche utilisent des robots logiciels qui vont parcourir les pages des sites trouvés à la recherche de liens hypertextes (liens vers des url) afin de se constituer un annuaire automatique des ressources disponibles sur le web.
Pour apparaître dans un moteur de recherche, il faut se faire référencer.
Le référencement et les techniques de calcul du rang des pages est un excellent sujet de veille technologique ... mais moi, hein ? j'dis ça, j'dis rien ...
Question
J'ai demandé à Google mais rien ne correspond à ce que je souhaite, j'obtiens n'importe quoi comme raiponce. (snif!) Ça marche paaaas. .̀·̀°՞(ˉ∩ˉ)՞°·́.́¯
(Tout ça est tiré par les cheuveux ... ;)
Mais alors ?! Comment faire pour se connecter à notre VM avec le navigateur ?
Dans notre architecture (une VM locale disposant d'un serveur web) :
- pas de moteur de recherche, la VM est inconnue,
- pas de DNS, plusieurs VM portent le même nom et de toute manière, elle est hors domaine donc inconnue du domaine.
Donc, pas d'URL à trouver ni convertir.
On écrira directement son adresse IP dans le navigateur du système hôte.
Et voilàaaa!
☾ ° /)/) · ✧' ✩ ⁺₊ /^.^.^.\ ☾ _~-~-__-- ೃ ✧ (-o-) ° ` \\ ✧ ((^_^ ) )) ( ) (")_(")o \\ _]`- ( (( ( ✩ __,--__ (=========) .\-o___/ / )) \_-°-_) ( ೃ) │ ✧ / │ `--"----( ( (\ ____ __) ⁺₊ (__,'* │ / ✧ │ ⁺₊ \\ ) | )\_-' `-_-' ⁺₊ ✩ =^-^= └=====┘ ⁺ / ✧ \(__--__--__--_______ೃ __ _ ÖÖö ä Öö ï / \ ö ÖÖ
Le cloud et ses niveaux, en passant...
Le SI, définition partielle :
Le système d'information regroupe un tas de choses dont :
- des données,
- des procédures qui les exploitent (dont l'applicatif) et
- des humains qui les utilisent.
Sa vocation est de permettre la gestion d'une organisation.
Le cloud ? du vent !
C'est un concept recouvrant un usage et une vue d'internet et du web.
L'usage des serveurs en ligne reste assez technique pour qu'il soit nécessaire d'être un peu spécialiste pour en comprendre l'architecture.
Les entreprises du web ont donc proposé, au fil du temps, de plus en plus de valeur ajoutée (des fonctions logicielles ciblées et complexes) jusqu'à arriver à des applications complètes en ligne.
Vous même, utilisez ces différents niveaux techniques et technologiques au quotidien : le drive, les mails, les sites internet, les applications tel., votre portefeuille de compétences.
Ces niveaux de valeurs ajoutées ont été classés en niveaux de services proposés au client pour une meilleure lisibilité (commerciale).
N1 : Iaas (infrastructure as a service)
Un service infrastructure, sur laquelle l'organisation (vous avec les VM) doit construire un système permettant d'obtenir le service ciblé : ajout des SGBD, des logiciels, applicatifs puis ajout des données gérées.
Exemple : Un service d'hébergement sous forme d'un serveur en ligne avec juste un OS, un serveur de connexion à distance (ssh) et un serveur de transfert de fichier (ftp).
C'est à vous d'ajouter tous les services nécessaires et vos applications, données, etc.
Bref! tout le reste.
N2 : Paas (Platform as a service)
Une plateforme est un service déjà équipé d'applications de base sur lesquelles il ne manque que l'applicatif métier et la structure des données pour que le client puisse exploiter ses propres données.
Peu importe l'infrastructure sur laquelle repose ces services.
Exemple : un hébergeur propose un espace de stockage avec un système de gestion de bases de données (SGBD, mariadb) et un serveur web (HTTP, Apache2 ou NGINX) préinstallés.
Il ne reste qu'à ajouter et coder les pages de l'application ou installer sa propre application.
Bon. C'est déjà plus complet. Mais aussi un peut plus cher ?
N3 : Saas (Software as a service)
Le fournisseur propose une application métier complète comme étant un service, mis à la disposition des clients et prêt à être utilisé.
Le client ne doit que mettre en place ses données pour que l'application fonctionne immédiatement.
Exemples : Des outils de bureautique en ligne, un gestionnaire de stockage ("drive"), un progiciel de gestion intégré accessible en ligne.
Ne manquent que vos données.
Y a plus qu'à !
Quel niveau pour notre VM ?
Je vous ai fourni une VM contenant les services de base pour en faire un serveur web.
On a donc une plateforme ou un PAAS.
C'est à vous de développer l'application et de la mettre sur le serveur.
Connexion client ou développeur ?
Le client
Si le client se connecte sur un serveur (web) avec son navigateur et une adresse IP (obtenue à partir d'une URL convertie par DNS et provenant d'une recherche avec un moteur, gna, gna gna!), ce type de connexion ne permet pas de modifier directement les pages du site.
Le développeur
Le développeur, lui, se connectera autrement.
Son rôle est de modifier le site, ses données et la structure de celles-ci.
Utiliser la console pour développer ?
Non, ce n'est pas agréable ni souhaitable :
- il faut être à proximité du serveur,
- il fait du bruit,
- il n'y a pas de sécurité,
- développer sans aide, sur un écran noir n'est pas ergonomique,
- et si le développeur habite à 3000 km du serveur ?
- etc., etc.
Utiliser une connexion à distance (SSH, bureau à distance ou FTP) ?
- ssh : mêmes contraintes que pour la console, la distance en moins
- bureau à distance : ça pourrait être une solution déjà plus confortable, mais il manque l'aspect tests avant de diffuser les pages, scripts et contenus. La moindre erreur pourrait être immédiatement en ligne.
- FTP : Développement et tests en local puis transfert sur le serveur ?
Solution retenue : FTP
C'est la dernière solution qui sera retenue : transfert de fichiers locaux au serveur.
L'environnement du développeur
Le développeur dispose d'un environnement de test, local ou en ligne, à partir duquel les "releases" (versions) sont mises en production après les tests.
Si l'environnement de test est en ligne (sur un site distant), plusieurs développeurs peuvent travailler en parallèle sur l'application.
Des services spécialisés permettent de partager le code et gérer les interférences entre les développeurs (GIT)
Comment la version locale est-elle envoyée sur le serveur ?
Basiquement, par transfert de fichier avec le protocole FTP (File Transfert Protocol).
Sur votre VM, nous testerons tous ces modes de fonctionnement en TP.
Sommaire du travail en TP
Mode opératoire, les étapes
A. Préparer le serveur
- Démarrer la VM puis utiliser des commandes pour : récupérer l'adresse IP de la VM
B. Connexion du client et travail sur la console
- Connecter le navigateur Client de la machine hôte au serveur
- Utiliser la ligne de commandes pour créer un répertoire et un fichier html dans le répertoire web
C. Se connecter à la VM avec un client ssh (putty ou teraterm)
- Connecter une développeur distant avec un client SSH
- modifier le fichier html précédent
D. Utiliser FTP pour le transfert de fichiers
- Créer deux fichiers html local avec l'explorateur de la machine hôte et
- a) utiliser ftp en ligne de commande pour ajouter le premier fichier au serveur
- b) utiliser un client ftp (Filezilla) pour effectuer le transfert du second fichier sur la VM
Conclusion
- Terminer le rapport d'activité avec une note sur la meilleure façon de travailler.
A chaque étape, il faudra vérifier le bon fonctionnement du serveur et de son service et effectuer un rapport indiquant la qualité de la solution utilisée par le développeur..
Etape A : Obtenir l'adresse IP de la VM
Commandes shell du TP
Liste des commandes shell
Cde exemple | Description |
---|---|
ls -l /etc | Afficher la liste des fichiers et répertoires d'un dossier |
dir /etc | Alias de ls |
cd /etc | Changer de dossier (chdir \= change directory) |
chown -R root test | Changer le propriétaire d'un objet, -R \= récursivement, pour un dossier et son contenu |
chmod 777 test | Changer les droits d'accès d'un objet 7=rwx. |
pwd | Afficher le nom du répertoire courant |
passwd toto | Changer le mot de passe de toto |
ipconfig | \[Windows\] Afficher la liste des interfaces réseau |
ifconfig | \[Linux old\] idem |
ip a | Afficher la liste des interfaces réseau (ip address) |
service networking restart | Agir sur un service. Ici redémarrer le service de réseau |
systemctl restart ssh.service | Alternative à la commande ci-dessus. ici avec le service ssh |
systemctl status … | Afficher le statut du service. Permet l'analyse des erreurs |
ifup enp0s3 | Activer une interface réseau |
ifdown enp0s3 | Désactiver une interface réseau |
nano test.html | Ouvrir et modifier le fichier donné avec l'éditeur de texte Nano |
Décrypter les commandes shell de base
Les commandes sont historiquement souvent sous forme verbe+objet.
Exemple :
- Changer de répertoire \= change directory, abrégé en chdir puis cd
La commande est donc chdir ou cd, selon le système (linux, dos, powershell).
Cependant, dans certains cas, les commandes s'éloignent de ce modèle.
Par exemple :
- pwd : obtenir le répertoire courant
- passwd : changer le mot de passe
- ls -l : lister le contenu d'un répertoire
- avec le commutateur -l, la commande affiche une liste qui montre aussi les détails de chaque fichier : droits propriétaire et groupe, taille, dates, etc. …
- ip address : c'est la commande qui affiche la configuration des cartes réseau
- peut être raccourcie en ip a
- ifconfig est l'ancienne commande, un peu obsolète
- ipconfig est la commande équivalente sous DOS
Exercice :
- Quelle commande permet de modifier le propriétaire (owner)
- Quelle commande permet d'ajouter un utilisateur (user)
Utiliser man ...
Déchiffrer le résultat de ip a
L'affichage commence par 1: ou 2: qui représentent les deux connexions disponibles.
lo: est la connexion réseau locale. C'est-à-dire LOOPBACK comme indiqué sur la même ligne. Cette connexion sert à tester l'empilement des processus et des protocoles réseau.
On voit son adresse IPV4 à la ligne 'inet' : 127.0.0.1.
Cette adresse est universelle, chaque ordinateur la connaît mais il est impossible de communiquer avec elle, juste tester la carte réseau.
enp0s3: C'est la bonne connexion au réseau.
Ici, elle est UP (active), le statut est répété plus loin 'state up'.
- link/ether : la connexion a une vraie adresse physique 08:00:27:xx:xx:xx. les 3 premiers nombres hexa sont un code identifiant le constructeur de la carte. la suite est un simple numéro
- inet 10.129.xxx.xxx : on a ici l'adresse IP de la machine. C'est l'adresse qu'on cherche.
- inet6 : adresse en version 6 du poste
Ce qu'il faut retenir :
- le nom de l'interface pour pouvoir la gérer dans la VM (ici : enp0s3)
- l'adresse IP de l'interface pour que les clients et développeurs puissent se connecter au serveur (ici 10.129.1.211).
En cas de problème réseau : réinitialiser l'interface
En cours, sur un poste école ou chez vous
Pour le travail, la VM doit être connectée directement au réseau local par pont/bridge et avoir une adresse IP unique.
L'adresse IP ouvre toujours un autre serveur que le mien
Si l'adresse IP est utilisée plusieurs fois (conflit d'adresse IP), un seul serveur sera visible.
- Il faut éteindre la VM, changer son adresse MAC : configuration > réseau > avancé >
L'adresse IP ne correspond pas réseau local
Dans ce cas, il est probable que vous êtes connecté en NAT et pas en Pont/bridge.
Pas besoin d'éteindre la VM.
Dans virtualbox :
- configurer la carte réseau en connexion par pont
Ensuite, dans la VM :
- Lancer la commande : service networking restart
- Activer l'interface : ifup enp0s3
- Vérifier les changements (observer les échanges entre votre VM et le serveur d'adresse DHCP)
En cours, sur un PC portable
Utiliser la VM graphique pour se connecter sur notre serveur.
Il faut mettre les deux VM sur un même réseau interne (intnet) dans l'hyperviseur et passer en adressage ip fixe.
C'est plus compliqué pour l'instant : demander au prof.
Etape B : client WEB et dev console
Les bonnes pratiques
Dans la mesure du possible, les noms des fichiers et répertoires correspondent à une syntaxe conventionnelle.
- ne jamais mettre d'espaces dans un nom, les remplacer par _ (souligné)
- ne jamais mettre de caractère accentué dans le nom
- éviter de commencer par un chiffre
- donner des noms significatifs (qui ont un sens)
Structure des répertoires Linux
Les répertoires importants pour le TP sont les suivants (chemin absolu)
- /etc : répertoire de configuration des logiciels et du système
- /root : répertoire "maison" de root
- /home/xxx : répertoires home des utilisateurs
- /var/www/html : répertoire utilisé par apache, racine du serveur
Annexe : le codage des caractères, µ$ vs Tux
En regardant de plus près, le caractère "à" apparaît sous la forme "Ã ". C'est incorrect.
Microsoft et ascii ont imposé leur codage de caractères (ascii) mais n'ont pas tenu compte que l'amérique n'était pas le seul pays possédant une écriture.
Il a donc été nécessaire de créer des pages de code supplémentaires pour les caractères accentués et les caractères non calligraphés (arabe, chinois, hindou, etc.).
Comme il était difficile d'adapter les systèmes aux différentes pages, une commission internationale a développé un système qui permet d'encoder tous les caractères du monde : UTF (Universal character set Transformation Format), souvent avec deux caractères ascii.
Si Linux utilise utf-8 de base, Windows utilise, en France, ISO/CEI 8859-1.
Mais on ne s'arrête pas là.
Pour éviter les problèmes de caractères, il est nécessaire d'ajouter une consigne de conversion à destination du navigateur. C'est la balise suivante qui indique le codage, à insérer au début du fichier page.html.
Les balises <meta … /> sont généralement dans la balise <head>.
A propos de la structure des pages htmlLa structure d'une page html contient des balises obligatoires. Cela donne la structure suivante :