Atelier : le Serveur web

SIO > S2_SISR > S2SISR_VM_sWeb1.md

Serveur web de base, pour débuter (20')

Créer la VM serveur

L'Atelier souhaite offrir un site web et un intranet pour ses adhérents. On en profite pour faire une machine de référence.

La petite histoire

Il était une fois une association qui voulait proposer un calendrier de ses activités à ses adhérents, sous la forme d'un serveur web (sWeb1).
Pour cela nous allons créer une VM (machine virtuelle) Linux Debian (j'en suis encore à Jessie) avec quelques logiciels de base.
Cette VM n'aura pas besoin d'interface graphique car nous allons nous y connecter via le réseau , avec un client ssh (putty), un navigateur (http) ou un client ftp.

Paramétrer la VM dans VBox (5')

Notre machine n'aura pas beoin de beaucoup de ressources, pour commencer.
En revanche, cette machine nous sera utile pour créer d'autres serveurs. Donc il faut la faire proprement au début.
Liste de courses : créer une VM avec :

  • RAM : 512, voire 256
  • Disque dur : 4Go devrait suffire mais 8Go c'est mieux, l'allocation étant "dynamique", le disque gonfle au fur et a mesure de son remplissage,
  • RAM : 512, voire 256Mo
  • CD : une image iso Debian 64b, selon la VM que vous avez crée
  • Réseau : une carte réseau connectée par pont (pour l'instant) afin de télécharger les logiciels nécessaires.

J'insiste sur Debian car c'est avec cette distro que j'ai fait cette série de cours. Si vous choisissez autre chose, il faudra vous adapter ...

==== Installer Linux Debian (20') ==== Une seule consigne : faire simple.

  • On choisi la langue, le clavier, etc par défaut,
  • nom de la machine : sWeb1, pas de domaine
  • mdp root = admin ou toto /!\ pas de sécurité, on est en TP !
  • nouvel utilisateur "administrateur", mdp= admin ou toto /!\ sécu, idem ci-dessus,
  • On installe l'OS sur tout le disque virtuel, formaté automatiquement (l'installeur va créer une partition de swap),
  • pas de miroir réseau, on le mettra plus tard à la mano
  • pas d'environnement graphique
  • installer grub sur le disque dur ppal L'installation devrait se faire en une vingtaine de minutes mais peut durer plus longtemps selon la machine. En profiter pour lire la suite.

Cette machine virtuelle est très importante car elle resservira plusieurs fois plus tard. Vous devez donc bien respecter le paramétrage de celle-ci.

Configuration primaire de Linux (25')

Configurer la VM serveur

Adressage IP, nom de machine, proxy pour apt-get et installation et config de ssh.

Connectons-nous avec root
Pour modifier la config du réseau, on va utiliser l'éditeur de texte simple et facile à comprendre nano (et je tire la langue à vi).

Config Réseau

Mettre la machine en DHCP

Editer le fichier : /etc/network/interfaces comme suit : nano /etc/network/interfaces

Petit truc, la touche tab (deux flèches à contresens sur la gauche du clavier) permet de compléter automatiquement les mots frappés.
Essayez, pour voir. Je ne peux plus m'en passer ..

Dans ce fichier, on devrait trouver quelque chose comme dans l'exemple ci-dessous.
Pour IPV6, voir sur le net : Site officiel Debian

Nommer correctement de machine

Si besoin, modifier le fichier : /etc/hostname pour y changer le nom de la machine.
Pour l'instant, on n'en a pas besoin, mais ce sera le cas pour chaque clone de cette machine afin de ne pas avoir deux noms identiques sur le réseau.

Résolution des noms : les DNS

Les 2 DNS sont inscrits dans le fichier /etc/resolv.conf.
Normalement, pas besoin de modifier ce fichier, mais on devra le faire plus tard. Donc ..

Exemple de config

Config statique

[conf]
auto eth0
iface eth0 inet static
    address 192.0.2.7
    netmask 255.255.255.0
    gateway 192.0.2.254

Config dynamique (dhcp)

[conf]
auto eth0
iface eth0 inet dhcp

Si vous avez ce qui est en haut, le changer en ce qui est juste ci-dessus.

IMPORTANT : Config du proxy pour apt-get

apt est le logiciel préinstallé qui nous servira pour télécharger et installer tous les logiciels (paquets) dont nous aurons besoin.
Selon le cas, notre machine sera connectée "directement" à internet, sans contrôle. C'est le cas à la maison.

Au boulot/lycée/université, il y a souvent un proxy entre notre machine et internet.
On doit alors l'indiquer à apt-get pour télécharger les softs en toute libreté.

Configurer le proxy

  • Avec nano, créer ou modifier le fichier /etc/apt/apt.conf.d/50proxy
  • Y écrire la ligne suivante (y en a qu'une) en respectant strictement la ponctuation et la casse (maj/min) :

[conf]
Acquire::http::proxy "http://user:passwd@adresse_ip_du_proxy:port_de_connexion";

Vous remplacerez

  • user:passwd@ par ... rien du tout (du vide, pas d'espace) si il n'y en a pas besoin,
  • adresse_ip_du_proxy par l'adresse ip de votre serveur proxy,
  • port_de_connexion par le port de connexion à votre proxy,

Exemple :

[conf]
Acquire::http::proxy "http://10.0.254.254:3128";

RE-IMPORTANT : Config des dépôts de logiciels pour apt-get

Les dépôts de apt sont les sites où sont stockés tous les logiciels téléchargeables pour Linux.
Il faut les indiquer à apt-get car, au départ, il ne connait que le cd-rom.

Modifier le fichier /etc/apt/sources.list (sur la ligne de commande, utiliser tab pour accélérer l'écriture des noms ...)
La liste des dépôts est la suivante pour Debian 9 "Stretch" (voir les autres versions sur le site Debian original)

deb http://deb.debian.org/debian strech main 
deb-src http://deb.debian.org/debian strech main
 
deb http://deb.debian.org/debian strech-updates main
deb-src http://deb.debian.org/debian strech-updates main
 
deb http://security.debian.org/ strech/strech main
deb-src http://security.debian.org/ strech/strech main

Tester apt-get et installer les logiciels de base

Maintenant que la machine est prête, on va pouvoir tester la connectivité et installer un serveur ssh.

Tester apt

On testera apt avec la commande apt update
Elle permettra de faire la l'actualisation des données des dépôts de logiciels disponibles.
En cas de blocage, voir du coté de la config réseau ou du proxy. En cas d'erreur (connexion impossible), voir du coté des dépôts.

Installer et configurer ssh

ssh nous permettra de nous connecter avec un client ssh (putty, teraterm) depuis le poste hôte (ou un autre) sur notre serveur.
Ceci est très intéressant car on pourra alors faire du copier/coller de commandes, ce qui n'est pas possible dans la console.

Installons ssh avec la commande  apt install ssh

Configurer ssh : modifier le fichier : /etc/ssh/sshd_config et changer la ligne PermitRootLogin whithout-password comme suit :

[conf]
PermitRootLogin yes # old value=whithout-password


Attention, cela dégrade la sécurité. Mais bon, c'est une machine école ...

Se connecter au tout frais serveur avec le logiciel putty préallablement installé sur notre hôte W

(musique)A la première plonge, damdibidam dam dibidibidam ...
A la première connexion, on obtient un message d'avertissement.

  • Lisez-le, c'est la réception du certificat.
  • Acceptez le certificat, putty vous affiche l'écran d'accueil de linux.
    Et maintenant, y a plus qu'à.

STOP! Il est temps de faire un petit export de la VM afin de créer une sauvegarde de cette machine qui sera réutilisée pour d'autres serveurs (dans Vbox : fichier, exporter).

Construire et tester le service Web (25')

installation de Apache2, php, mysql-server et proftpd.

Installation

Si vous n'avez pas encore fait d'export de la VM, c'est le bon moment (dans Vbox : fichier, exporter). Il nous servira plus tard pour créer d'autres machines plus facilement.

Lancer putty et se connecter directement avec root ou un autre compte et utiliser su.

Pour installer du logiciel, rien de plus simple, faire comme avec ssh :

[shell]
> apt-get install apache2 php mariadb-server phpmyadmin proftpd  #installer la totale

Les logiciels installés sont :

  • apache2 : le service serveur web
  • php : le module pour apache, interprêteur du langag php version 5
  • mysql-server : le serveur système de gestion de base de données relationnelles (SGBDr)
  • phpmyadmin : une interface graphique de gestion de bases de données accessible par le réseau
  • proftpd : serveur FTP pour la mise à jour du(des) site(s) Lors de l'installation de ces logiciels, plusieurs questions sont posées :
  • si php travaille avec apache : répondre oui en cochant la bonne ligne avec la touche "espace"
  • Donner le mot de passe pour root : mettre admin (note: c'est pas très sécu mais on est en exercice de découverte. En vrai on mettrait autre chose ...)
  • mysql-server doit-il utiliser la BDD je_ne_sais_pas_son_nom ? oui!
  • proftpd : démarrage indépendant
  • En clair, on garde les données par défaut.

Attention, il est probable de devoir modifier la configuration apache et redémarrer apache2. Voir la note ci dessous.

Configuration

Apache : alias pour phpMyAdmin

PhpMyAdmin est une application de gestion des tables du serveur de données Maraidb installé.
Pour profiter de phpmyadmin, si le service n'est pas accessible, il faut ajouter include /etc/phpmyadmin/apache.conf à la fin du fichier /etc/apache2/apache2.conf.

Apache : autorisation de connexion à root

Attention ! Cela dégrade la sécurité et n'est valable que sur notre serveur scolaire !!!

Pour faciliter l'accès aux données à nos applications école, nous utiliserons le profil root et non un profil invité et limité créé pour chaque appli ou type de profil appli.
Pour cela, ajouter un mot de passe à root puis autoriser root à se connecter au serveur de données :

[bash]
 www> mysql -u root**		# Se connecter à mysql 
[sql]
 update mysql.user set plugin="mysql_native_password" Where user='root';   -- Changer le mode d'authentification 
 update mysql.user set password=PASSWORD('nouveau_mdp') Where user='root'; -- Changer le mdp
 flush privileges;							   -- Recharger les privilèges

Proftpd : accès root

Proftpd est un serveur de transfert de fichier avec le protocole FTP. Il permet de faire la maintenance des pages web du répertoire de la VM /var/www/html mis en ligne par Apache.
Proftpd doit être configuré manuellement :

  • modifier le fichier /etc/proftpd/proftpd.conf et y ajouter la ligne RootLogin On
  • modifier le fichier /etc/ftpusers et y modifier la ligne # root (on met la ligne en commentaire avec le #)
  • relancer le service ftp : service proftpd restart et tester la connexion avec un client ftp (/ex. filezilla) à partir du poste hôte. Profitez-en pour installer la petite application de test (Voir la page applitest) dézipée, dans le répertoire /var/www/html/

Conclusion

C'est fini pour ce serveur. Éteindre la VM avec shutdown now et faire un export avec le nom sweb1.
Attention à ne pas Ne pas écraser l'export précédent
Et ne pas éteindre la machine en fermant la fenêtre de vBox, cela pourrait rendre la machine inutilisable.
Bon, on peut passer à la suite : installer un serveur windows puis un gestionnaire de parc.