Cloud et FTP

SIO > S1_Commun > S1C7_Presence > S1C5_Cloud_shell_et_FTP.md

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

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 :

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 :

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) :

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 :

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 ?

connexions a distance

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 :

Utiliser une connexion à distance (SSH, bureau à distance ou FTP) ?

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

B. Connexion du client et travail sur la console

C. Se connecter à la VM avec un client ssh (putty ou teraterm)

D. Utiliser FTP pour le transfert de fichiers

Conclusion

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 :

Cependant, dans certains cas, les commandes s'éloignent de ce modèle.
Par exemple :

Exercice :

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

Ce qu'il faut retenir :

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.

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 :

Ensuite, dans la VM :

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.

Structure des répertoires Linux

Les répertoires importants pour le TP sont les suivants (chemin absolu)

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.

[html]
<head>
	...
	<meta charset="utf-8">  
	...
</head>

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 :

[html]
<html>
	<head> <!-- entête de la page, contenu de service, non affiché -->
		<title>Titre de la page</title>
		<meta charset="utf-8" />
		<link rel="stylesheet" content="text/css" href="css/style.css" />
	</head\>
	<body>
		<!-- corps de la page, contenu affiché  -->
		<h1>titre local</h1>
		...
	</body>

Etape C : Connexion avec ssh

Les bonnes pratiques (Bloc 2, Bloc 3)

Est-ce malin de se connecter avec root ?
Non, toute connexion, locale ou à distance, avec un profil d'administrateur doit normalement être interdite par le système. Cela ouvre des portes aux intrusions.
C'est pourquoi, on supprime souvent les droits de root et on utilise un autre profil comme administrateur.
Par ailleurs les connexions distantes sont toutes faites avec un profil normal (non administrateur) auquel on accorde le droit d'utilisation de la commande su qui permet d'accéder à des droits supplémentaires (su \= super user).

Putty, Teraterm

La connexion à distance sur un serveur, pour maintenance, se fait généralement avec un client de chiffrement. Il en existe plusieurs, en ligne de commande, mais les plus connus sont :

Ils utilisent tous un protocole sécurisé : ssh
Il existe un autre protocole, telnet mais qui est peu sécurisé (les mots de passe circulent en clair sur le réseau !!!)

Le serveur distant doit alors avoir un serveur ssh dans le système. C'est le cas pour la VM.

Annexe : le certificat (Bloc 3)

A la première connexion avec la VM, Putty affiche un écran où il demande s'il faut faire confiance au serveur et enregistrer le serveur comme étant fiable.
En fait, il souhaite enregistrer le certificat contenant la clé publique du serveur SH contacté.

Petit exercice : traduire le texte du message et voir de quel type de chiffrement il s'agit et quelle est la longueur de la clé.

Etape D : Utiliser FTP

Le protocole FTP

FTP est le protocole de transfert de fichiers (File Transfer Protocol).
Il permet de travailler les fichiers en amont, sur votre ordinateur puis de les transférer rapidement sur le serveur.
Si le protocole HTTP utilise normalement le port TCP 80, le protocole FTP utilise les ports TCP 20 et 21 pour les commandes et les données.

FTP en ligne de commande

FTP contient différentes commandes utiles pour transférer des fichiers mais aussi pour explorer le système de fichiers distant. Les commandes utiles du LC (langage de commande) FTP ressemblent aux autres LC et sont les suivantes :

Cde exemple Description
ftp ip_serveur Commande DOS de lancement du client en LC
dir /var/www/html Afficher le contenu du répertoire donné.
cd /var/www/html Changer de répertoire et aller dans celui donné.
mkdir et rmdir toto Créer et supprimer des répertoires.
binary Changer le mode d'échange en mode binaire, mieux adapté aux fichiers UTF-8. Autre mode : ascii
get myCloud/page.html Télécharger (download) le fichier demandé vers le répertoire courant (1)
put page.html myCloud/ Téléverser (upload) le fichier donné (1) vers la cible (2)
quit fermer la connexion et quitter le programme ftp en ligne de commande

(1) Le répertoire local par défaut est le répertoire courant de la ligne de commande DOS au moment du lancement de la commande ftp. Il faut donc soit utiliser un chemin source, soit se déplacer dans le bon répertoire avant de lancer ftp.
(2) La cible est souvent un répertoire distant de destination mais peut être un nom de fichier vers lequel le fichier d'origine sera renommé

Exemple de transfert :

Envoi du fichier d:\myDevDirectory\docs\the_new_doc.md vers le répertoire /media du serveur

[dos]
c:\ cd d:\myDevDirectory
d:\ ftp 192.168.0.100
login root
password (***)
  Connected
binary
put docs/the_new_doc.md media/
  transfert compleet 1025468o transfered
quit
  bye
d:\ _

FTP avec un client graphique

Pour simplifier les échanges, il existe des programmes graphiques client qui font de la connexion FTP. C'est le cas de Filezilla Client, le plus connu.
Pour ceux qui n'ont pas ce client FTP sur leur poste, il faudra l'installer à partir de l'espace de partage des logiciels ou depuis internet.

Conclusion

La conclusion est simple : il y a beaucoup de choses à apprendre.
C'est pourquoi, les développeurs professionnels utilisent des outils en ligne pour le développement des applications sui gèrent les mises à jours de la partie en production.

Cependant, les programmes devenant de plus en plus complexes, chaque modification du code se doit d'être commentée et documentée, plus ou moins automatiquement, afin que le contrôle de qualité de l'applicatif puis vérifier qu'aucune erreur ne s'est glissée dans le code et que le code fait bien ce qui lui est demandé, sans dégrader d'autres parties de l'application.