TP05 - bpatureau/admin-2-TP GitHub Wiki

TP5 : Configuration du service web public

Mise en place de l'environnement de travail

Documentez ou mettez à jour votre documentation concernant votre infrastructure et votre environnement de travail : quels VPS sont utilisés pour quels services?

Pour le service Web en particulier : quelle organisation utilisez-vous pour vos fichiers de config, sur Github et sur le VPS qui héberge le service Web?

1. Configuration de base d'un serveur web

La première étape était de créé notre fichier nginx.conf. La première version était directement donnée avec un modification à faire dans le server_name. C'est la configuration du site www.l1-2.ephec-ti.be. Si le server reçoit une requête pour le site via le port 80, il ira chercher le fichier index.html dans le dossier /var/www/html/www. nginx_1

En addition de ce fichier, il y a aussi le Dockerfile de l'image du server nginx. Dans ce fichier, on prend l'image officielle de nginx et on y copie notre fichier nginx.conf. On y remplace également son dossier /var/www/html par notre dossier html qui contient un fichier index.html. On expose ensuite le port 80 pour permettre au server d'être joinable. dockerfile_nginx

La deuxième étape est le Virtual Hosting. Pour cela, il a fallu modifier le fichier nginx.conf en y ajoutant le blog qui est une répétition presque identique du premier site. La racine de ce site est également dans /var/www/html que l'on modifie déja donc pas besoin de modifier le Dockerfile. nginx_2

Enfin, l'ajout des logs demandait également de modifier nginx.conf. D'abord avec log format qui permet de changer le format des logs. Ici, on le modifie pour que les logs affichent le nom du server qui envoie le log, l'adresse ip de la machine distante qui à causé le log, l'heure à laquelle le log a été créé, le statut (200 si ok, etc...), la requête de la machine distante et enfin la quantité d'octet envoyée en réponse à la requête. Les deux commandes suivantes permettent de rediriger respectivement stdout et stderr pour que docker puisse les avoir. nginx_3

2. Site web dynamique

Mise en place

Afin d'avoir une page du site dynamique, il faut d'abord une base de donnée. Nous utilisons comme demandé l'image de mariaDB officielle. À cela s'ajoute un fichier sql ./db/sql/woodytoys.sql qui créé une base de donnée dans le server mariaDB, y ajoute une table products et y place plusieurs articles. woodytoys_sql

Ensuite, puisque le but est d'utiliser un fichier php, il faut un container dans lequel tournera PHP-FPM. Pour ce faire, on ajoute un nouveau Dockerfile (./php/Dockerfile) dockerfile_php

Il faut également changer nginx.conf pour rediriger les requêtes liées à PHP vers PHP-FMP nginx_4

Dernièrement, il faut lier le php avec les données de la base de données en créant le fichier ./html/www/products.php. On y place les accès à la DB et un affichage en tableau des données reçues. products_php

Procédure de validation

Afin de vérifier si nos containers marchent et effectue bel et bien ce qu'on leur demande, il faut d'abord vérifier si chaque container tourne bien avec docker container ls qui montre tous les containers actifs. Si on voit les containers web, php et mariaDB actifs, on peut passer à l'étape suivante. docker_container_ls

Pour vérifier si les logs sont bien transmis à docker, il suffit de faire docker logs [nom du container] docker_logs_php

Si les site http://www.l1-2.ephec-ti.be/ et http://blog.l1-2.ephec-ti.be/ sont actifs et que la page d'accueil est visible, on peut confirmer que le fichier nginx.conf est bien dans le container nginx. On peut également utiliser curl -I http://www.l1-2.ephec-ti.be. curl_ephecti

Si la page http://www.l1-2.ephec-ti.be/products.php s'ouvre sur le tableau de donnée, on peut confirmer que la base de donnée est active et que le PHP est exécuté par le PHP-FMP catalogue_woodytoys

Docker-compose

Pour la création du docker-compose, il faut lister les 3 services utilisés. pour nginx et php on y indique avec build le dossier où se situe le Dockerfile qui sert à générer l'image que le service utilise. Inutile de le faire avec mariaDB puisqu'on utilise l'image officielle directement. Ensuite pour chacuns des containers, on indique les volumes qui correspondent au mount utilisé jusque la. Finalement, les fichiers env_file qui contiennent les informations de connexion à la DB. docker_compose

Après avoir exécuter le docker-compose up -d, on peut voir que docker container ls nous indique que les 3 containers sont actifs: docker_container_ls_2

Les logs des 3 servers sont accessible par docker: docker_logs_maria docker_logs_nginx docker_logs_php_2

Les site http://www.l1-2.ephec-ti.be/ et http://blog.l1-2.ephec-ti.be/ sont accessible et montre leur index.html: www blog

curl marche également: curl_blog

Enfin, le tableau de http://www.l1-2.ephec-ti.be/products.php s'affiche bien. products_php2