Version utilisée pour la Debian : 7.7 Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox Caractéristiques de bases : Un service web (ou service de la toile) est un programme informatique de la famille des technologies Web permettant la communication et l'échange de données entre applications et systèmes hétérogènes dans des environnements distribués. Il s'agit donc d'un ensemble de fonctionnalités exposées sur internet ou sur un intranet, par et pour des applications ou machines, sans intervention humaine, de manière synchrone ou asynchrone. Le protocole de communication est défini dans le cadre de la norme SOAP dans la signature du service exposé. Actuellement, le protocole de transport est essentiellement HTTPS. MySQL est un système de gestion de bases de données relationnelles (SGBDR). Il est distribué sous une double licence GPL et propriétaire. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels, en concurrence avec Oracle, Informix et Microsoft SQL Server. PHP est un Hypertext Preprocessor, plus connu sous son sigle PHP, est un langage de programmation libre principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP3, mais pouvant également fonctionner comme n'importe quel langage interprété de façon locale. PHP est un langage impératif orienté objet comme C++. La «haute disponibilité» (en anglais «high availability») regroupe de nombreuses techniques et processus permettant de garantir un certain pourcentage de disponibilité de service. Par exemple, un taux de 99 % de disponibilité assure une disponibilité d'environ 361 jours sur 364 alors qu'un taux de 99,5 % assure une disponibilité de plus de 363 jours sur 365. Contexte : Installer et configurer un Service Web avec une base de données MySQL, du PHP et le service Heartbeat pour la réplication des pages Web et des données. Tout d'abord, voici un schéma de ce TP : Pages 1/26
Ensuite, on se rend sur ProxMox. On créé une nouvelle VM : Puis on arrive sur une nouvelle fenêtre. Sur celle-ci, on y renseigne le nœud, le VM ID et le nom de la machine que l'on créé : Ensuite, il faut faire «Suivant». Pages 2/26
On arrive sur l'onglet «OS». On choisit donc «Linux 3.X» sachant qu'on va installer et configurer le serveur Web Apache sous Linux : On fait «Suivant». On arrive sur l'onglet «CD/DVD». Ici, on laisse «isonas» comme stockage et on choisit une image ISO Debian la plus récente possible (ici, il s'agit de la version 7.7) : Pages 3/26
On fait «Suivant». On arrive sur l'onglet «Disque Dur». Choisir en Bus/Device «VIRTIO», on choisit «lvmvmsisr2a» en stockage. On fait «Suivant». On arrive ensuite sur l'onglet «CPU». On laisse la configuration par défaut : Pages 4/26
On fait «Suivant». Puis, on arrive sur l'onglet «Mémoire». On laisse par défaut 512 de mémoire : Faire «Suivant» ensuite. Ensuite, on arrive sur l'onglet «Réseau». Il s'agit de laisse par défaut «Accès par pont», de laisser «vmbr0» pour le pont, et de choisir «VirtIO» comme modèle : Pages 5/26
Faire «Suivant». Puis, on arrive sur l'onglet «Confirmation» ou cela reprend toute notre configuration : Faire «Terminer». La machine Debian est désormais créée. Il s'agit à présent de la lancer et de l'installer (cf. installation machine Debian sous Linux). Pour ce fair,e il s'agit de cliquer droit sur la machine créée, puis de cliquer sur «Console» : Pages 6/26
Une fois la machine installé, il s'agit d'aller dans la configuration réseau de la machine : Il s'agit de changer la configuration IP temporairement afin de télécharger les paquets : Ensuite, on redémarre la carte réseau afin que les informations soient prises en compte : On vérifie que l'adresse IP s'est bien affectée : Puis on installe Apache2 : On installe MySQL : Pages 7/26
Il faut renseigner un mot de passe pour le superutilisateur (ici, il s'agit de «Sio105») : Ensuite, on installe PHP : Puis on installe Heartbeat : Désormais, on vérifie qu'apache fonctionne bien : Maintenant, il faut activer les répertoires personnels : Pages 8/26
On redémarre Apache afin que le module soit actif : Ensuite, on créé l'utilisateur «tzaidou» avec comme mot de passe «azerty» : Ensuite, on teste que l'utilisateur s'est bien créé en se loguant sur celui-ci : Il s'agit de faire cette manipulation pour tous les utilisateurs a créer. Ensuite, on liste le répertoire /home afin de voir tous les utilisateurs créés : Pages 9/26
Ensuite, on créé le répertoire /public_html pour tous les utilisateur : Puis on créé une page HTML de test pour chaque utilisateur également : Puis on configure chaque page HTML de chaque utilisateur en l'éditant avec la commande «nano» : Faire ceci avec le bon prénom de chaque utilisateur à chaque fois. Ensuite, afin de vérifier que cette page est bien accessible dans les dossiers personnels des utilisateurs, on se rend sur un navigateur Web et on entre l'adresse IP de la machine suivit du nom de l'utilisateur : Pages 10/26
On voit bien que la page «test.html» a bien été créée et semble accessible. Cliquer dessus pour voir si on arrive bien sur les informations rentrées précédemment sur cette page : Maintenant, il s'agit d'utiliser le langage PHP sur les utilisateurs, plusieurs démarches sont nécessaires. On créé une page PHP de test pour chaque utilisateur : Pages 11/26
Puis on configure chaque page PHP de chaque utilisateur en l'éditant avec la commande «nano» : On y inscrit ces informations : Puis on se dirige dans le fichier de configuration de PHP (php5.conf) : Puis on commente les 5 dernières lignes : Et on redémarre le service Apache : Pages 12/26
Ensuite, on se connecte sur l'un des utilisateurs afin de vérifier que la page test.php a bien été créée et qu'elle est bien accessible. Puis, on teste que le PHP fonctionne : A présent, il s'agit de sécuriser l'accès aux dossiers personnels de chaque utilisateur : Puis on édite le fichier caché «.htaccess» : Pages 13/26
Ensuite, on y rentre ses informations avec le bon nom d'utilisateur : Ainsi, lorsqu'on se rend sur un navigateur Web et qu'on tape en URL l'adresse IP du serveur suivit du nom de l'utilisateur, on a bien un accès sécurisé : Il suffit d'y entrer le login et le mot de passe de l'utilisateur en question : Pages 14/26
Et on arrive bien sur la page personnel de l'utilisateur : Puis on modifie le fichier «hosts» en ajoutant le serveur de réplication «intralab2» paramétré sur une autre machine Debian : Puis on redémarre le service hostname : Pages 15/26
Puis on modifie l'adresse IP de la machine afin d'être sur le réseau 172.16.0.0 : On redémarre ensuite la carte réseau puis on vérifie que l'adresse a bien été affectée à la machine : Puis lorsque l'on ping l'intralab2 qui est sur le même réseau et qui fera office de serveur de réplication du serveur intralab, cela fonctionne : Pages 16/26
Ensuite, on ajoute un second disque. Pour ce faire, on clique sur «Ajouter» : Ensuite, on clique sur «Disque Dur» : Puis on le configure. Cliquer sur «Ajouter» ensuite : Pages 17/26
On voit bien que le disque c'est ajouté : Puis on stoppe le service windbind qui est inutile ici (utile pour samba) puisqu'il ralentit le démarrage de la machine : Puis on liste les disques afin de voir que le disque que l'on vient de créer est bien ajouté : Puis on configure la carte réseau afin d'être sur le réseau 192.168.1.0 pour pouvoir sortir du réseau : Pages 18/26
Puis on redémarre la carte réseau afin que l'adresse IP soit bien affectée à la machine : Et on vérifie que l'adresse figure bien sur la machine : Puis on installe l'utilitaire drbd8-utils : On remet ensuite le bon réseau (172.16.0.0) : On redémarre la carte réseau : Pages 19/26
Et on vérifie que l'adresse IP est bien affectée : Puis on créé le fichier drbd1.res (nano /etc/drbd.d/drbd1.res) et on y ajoute ces lignes : Puis on monte la partition vdb avec la commande fdisk : On tape "m" afin d'avoir les informations sur la commande : Pages 20/26
Ensuite, on fait "n" comme ci-dessus pour créer une nouvelle partition, puis "p" afin qu'elle soit en partition principale : Laisser les valeurs par défaut : On termine ensuite par "w" pour écrire la table de partition et quitter l'utilitaire : On active ensuite drbd : Pages 21/26
Ensuite, on met en place le volume à synchroniser avec la commande "drbdadm create-md r0" : Puis, on tape la commande "drbdadm up r0" afin de l'activer : La commande «drbd-overview» permet de voir l'état du serveur principal qui est en secondaire par défaut : Ensuite, on déclare le serveur intralab en serveur primaire avec la commande suivante qu'il est nécessaire de faire qu'une seule fois pour les deux machines serveurs : Il est à présent en primaire. Ensuite, si on veut connaître l'état de la grappe drbd, il faut taper la commande "drbdam state r0" : Puis on réalise ensuite la synchronisation. On utilise la commande «drbd-overview» pour voir l'avancement de la synchronisation sur le serveur secondaire : La commande «watch cat /proc/drbd» à utiliser sur le serveur secondaire permet de voir l'avancement de la synchronisation en direct. Une fois la synchronisation terminée, voici ce que cela affiche : Pages 22/26
Si on souhaite déconnecter puis reconnecter la ressource DRBD, voici les commandes : Ensuite, on formate la partition drbd mais il ne faut le faire que sur le serveur principal : Puis on créé le répertoire r0 et on le monte sur le second disque : Ensuite, il s'agit de créer un fichier dans le répertoire /mnt/r0 et de passer le serveur primaire en serveur secondaire : Puis de passer le serveur secondaire en serveur primaire : Ensuite, sur le serveur secondaire qui vient de passer primaire, il faut recréer le répertoire r0, le remonter sur le second disque et lorsqu'on fait un «ls», on retrouve bien le fichier créé : Puis on retourne dans la configuration réseau de la machine et on remodifie l'adresse de la machine. On redémarre la carte réseau : Pages 23/26
On installe ensuite Heartbeat : On créé «ha.cf» dans le répertoire /etc/heartbeat et on y renseigne les informations suivantes : Ensuite, créer le fichier «haresources» et on inscrit la ligne ci-dessous dans celui-ci (on ajoute une adresse virtuelle qu on active) : Puis on créé ensuite «authkeys» et on y inscrit ces lignes suivantes : *la deuxième ligne permet de mettre en place la méthode d authentification Afin de vérifier que ces fichiers ont bien été créé, taper la commande «ls» dans le répertoire heartbeat : Pages 24/26
Maintenant, il faut protéger le dernier fichier «authkeys» à l aide de la commande chmod : Sur la première machine, on supprime la page index.html (rm index.html) qui se trouve dans /var/www puis on créé la page «index.php» (nano index.php) et on y inscrit les lignes ci-dessous : On teste ensuite de joindre un navigateur internet dans un premier temps avec l'adresse IP du serveur intralab : Puis on teste ensuite de joindre l'adresse IP virtuelle : On coupe le service Heartbeat sur le serveur intralab (service heartbeat stop). Puis on tente de joindre un navigateur internet avec l'adresse IP du serveur intralab2 : Pages 25/26
Puis on teste de nouveau sur un navigateur internet de joindre l'adresse IP virtuelle afin de voir si la tolérance de panne fonctionne dans le cas ou le serveur intralab tomberait : Pour connaître la version de heartbeat, faire cette commande : Conclusion : Ce tutoriel permet de créé un service Web avec un accès sécurisé aux dossiers personnels des utilisateurs. On a créé un second disque qui s'apparente au Raid 1 pour faire de la réplication de données avec DRDB entre les deux serveurs afin que les données soient à jour sur les deux serveurs en permanence. Il permet également d'installer le service Heartbeat qui permet la tolérance de panne grâce à une adresse IP virtuelle commune aux deux machines. Pages 26/26