Skip to content

Documentation du service WEB

Aymar edited this page Jun 6, 2023 · 13 revisions

Mise en place d'un service web

Le contenu de notre service web contient les fichiers principale suivante:

1. Docker compose

-docker-compose.yml

version: "3.3"

services:
    server_web:
        build:
            context: ./web
            dockerfile: Dockerfile
        ports:
            - "80:80"
            - "443:443"
        volumes:
            - ./web/www/:/var/www/
            - ./web/Sites-available/:/etc/apache2/sites-available/
            - ./web/apache2.conf:/etc/apache2/apache2.conf
        container_name: web_container

    database:
        build:
            context: ./DB
            dockerfile: Dockerfile
        command: --default-authentication-plugin=mysql_native_password
        ports:
            - "3306:3306"
        volumes:
            - ./DB/db.sql/:/data/
        environment:
            MYSQL_ROOT_PASSWORD: MESEPHEC
        container_name: db-container

On a utilisé le docker compose Docker pour faciliter le déploiement et la gestion de nos sites sur conteneurs.

2. Apache.conf

DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}
Timeout 300 

KeepAlive On
 
MaxKeepAliveRequests 100

 
KeepAliveTimeout 5

 
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
 
HostnameLookups Off

ErrorLog ${APACHE_LOG_DIR}/error.log
 
LogLevel warn

 
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

Include ports.conf

<Directory />
	Options FollowSymLinks
	AllowOverride None
	Require all denied
</Directory>

<Directory /usr/share>
	AllowOverride None
	Require all granted
</Directory>

<Directory /var/www/>
	Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted
</Directory>
AccessFileName .htaccess

<FilesMatch "^\.ht">
	Require all denied
</FilesMatch>

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

ServerSignature Off
ServerTokens Prod
ServerName 127.0.0.1

Ils ont organisés de la manière suivante :

  • Le fichier sites-available contient les fichiers de configuration des sites disponible
  • Le fichier sites-enabled contient les liens symbolyques vers les configurations, dans site-available, des sites activés

Dans le fichier "Sites-available"

Il se trouve 2 fichiers qui représente 2 sites qui sont héberger dans le serveur

b2b.conf

 <VirtualHost *:80>
        ServerAdmin aymar@students.ephec.be
        ServerName b2b.mmes-4.ephec-ti.be
        DocumentRoot /var/www/b2b/

    <Directory />
        Options FollowSymLinks
        AllowOverride all
    </Directory>

    <Directory /var/www/b2b/>

        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        allow from all
        AddType application/x-httpd-php .php

    </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
  </VirtualHost>
<VirtualHost *:80>
        ServerAdmin aymar@students.ephec.be
        ServerName www.mmes-4.ephec-ti.be
        DocumentRoot /var/www/html

    <Directory />
        Options FollowSymLinks
        AllowOverride all
    </Directory>

    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        allow from all
    </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Demarrage du conteneur pour le service web

Pour demarrer le service web il faut applique la commande suivante:

docker compose up -d

Se connecter dans le conteneur

Pour se connecter dans le conteneur du service, il faut taper cette commande:

docker exec -it web_container /bin/bash

Pour verifier le fonctionnement des 2 sites, il faut utiliser la commande suivante:

links https://www.mmes-4.ephec-ti.be
commandes Description
VirtualHost *:80 Les connexions sont permises sur n'importe quelle adresse IP serveur (*) sur le port 80.
ServerName C'est nom de notre domaine qui est b2b.mmes-4.ephec-ti.be et www.mmes-4.ephec-ti.be
DocumentRoot C'est la directive d'où se trouve notre site
Directory spécification des règles du répertoire
AllowOverride all Il est possible d'inclure une configuration personnalisée via un fichier .htaccess.
Allow from all Autorisation de connection sur n'importe quel réseau
ErrorLog
customLog
Il convient d'avoir des logs séparés pour chaque hôte virtuel, afin de ne pas mélanger toutes les informations.

Maintenance

Procédure pour mettre à jour Apache2

  1. Déplacer vous dans le dossier /etc/apache2/ et modifier le fichier apache2.conf
cd /etc/apache2
nano apache2.conf
  1. Mettre à jour le conteneur et Redemarrer le service apache2
sudo apt update && sudo apt upgrade
service apache2 restart

Mettre en place une base de donnée et l'insertion des données dans la table

mysql -u woodytoys -h localhost -p db_woody
  • procedure pour mettre en place la DB et table
CREATE USER 'woodytoys'@'ipaddress' IDENTIFIED BY 'MESEPHEC';

CREATE DATABASE db_woody;

GRANT ALL PRIVILEGES ON db_woody.* to 'woodyToys'@'ipaddress';

FLUSH PRIVILEGES;

USE db_woody;

create table woody(
    id INTEGER NOT NULL AUTO_INCREMENT,
    Name CHAR(50) NOT NULL,
    Price DECIMAL(8,2) NOT NULL,
    CONSTRAINT pk_woody PRIMARY KEY(id)
);

INSERT INTO woody (name,price)
VALUES ('toy en bois' , 15), ('Robot de l espace' , 16);

Procédure en cas d'ajout d'un nouvel page du site

  • Pour le site www

Rajouter les fichiers de la page dans le dossier /html

  1. Connecter vous au conteneur docker
docker exec -it web_container /bin/bash
  1. Déplacer vous dans le dossier /var/www/html et copier les nouveau fichier de la page
cd /var/www/html
cp new_file.html
  • Pour le site B2B Rajouter les fichiers de la page dans le dossier /B2B
  1. Connecter vous au conteneur docker
docker exec -it web_container /bin/bash
  1. Déplacer vous dans le dossier /var/www/html et copier les nouveau fichier de la page
cd /var/www/b2b
cp new_file.html

Troubleshooting

Procédures et collecte d'information

En cas de dysfonctionnement, voici les éléments à observer pour trouver des informations de debug :

  • Il faut faire une vérification dans les logs qui se trouve dans le répertoire cd var/log/apache2 .

    On trouve dans ce repertoire les fichiers:

  • access.log

  • error.log

  • other_vhosts_access.log

  • Procédure de test 1 : Taper la commande ex: docker exec -it web_container /bin/bash pour ce connecter sur le container du Web. Si résultat Error response from daemon: Container 01faaa3dc83895bcbc475d47c9f8a1fdcd086390d0f334deb4d5954d6bf61da2 is not running : Le problème vient du container qui n'est pas active, sinon, le problème ailleurs.

  • Procédure de test 2 : Taper la commande ping www.mmes-4.ephec-ti.be pour tester si on arrive à joindre la service. Si résultat La requête Ping n’a pas pu trouver l’hôte www.mmes-4.ephec-ti.be. Vérifiez le nom et essayez à nouveau. s'affiche dans le terminal c'est qu'il n'arrive pas à trouver le nom du hôte : Le problème vient dans les fichiers de configuration, sinon, le problème ailleurs.

Erreurs fréquentes

  • Les fichiers de configuration des pages ne sont pas configurés correctement. => La page requise n'apparaît pas.
  • Oublier de préciser le dossier dans lequel sont situés les fichiers HTML d'un site particulier => affiche la page HTML par défaut qui n'est pas celle que vous voulez.

Clone this wiki locally