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
.
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.
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.
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.
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.
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
)
Il faut également changer nginx.conf
pour rediriger les requêtes liées à PHP vers PHP-FMP
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.
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.
Pour vérifier si les logs sont bien transmis à docker, il suffit de faire docker logs [nom du container]
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
.
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
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.
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:
Les logs des 3 servers sont accessible par docker:
Les site http://www.l1-2.ephec-ti.be/ et http://blog.l1-2.ephec-ti.be/ sont accessible et montre leur index.html:
curl
marche également:
Enfin, le tableau de http://www.l1-2.ephec-ti.be/products.php s'affiche bien.