Documentation du service Web - CrenierAmaury/Projet-Admin-II GitHub Wiki

Organisation des configurations

Dans le container la configuration du serveur nginx se trouve dans le répertoire /etc/nginx alors que les fichiers porpres aux sites web se situent aux niveau du répertoire /usr/share/nginx/html.

/  
└── etc  
|    └── /nginx
|       └── nginx.conf
|
└── usr       
    └── share
          └── nginx
                └── html
                     └── wwww
                     |     └── index.html
                     |
                     └── b2b          
                          └── index.php
 
  • nginx.conf est le fichier de configuration du serveur. Il contient des configurations pour l'ensemble du serveur et il définit les différents sites que l'on désire déployer.

Options générales:

client_body_buffer_size 1K;
    client_header_buffer_size 1k;
    client_max_body_size 1k;
    large_client_header_buffers 2 1k;

Définition d'un site disponible:
server {
        listen       80;
        server_name  b2b.l2-7.ephec-ti.be;
.
.
.
}
  • ensuite dans le répertoire html on retrouve l'ensemble des fichiers des sites web avec les index comme point de départ. Dans ce cas-ci, on a index.html pour le site vitrine (www) et index.php pour le site dynamique (b2b).

Maintenance

Mise à jour

La mise à jour de nginx et des configurations est réalisée au build de l'image grâce aux instructions du dockerfile. Il en est de même pour la mise à jour du conteneur php servant à l'interpretation de site dynamique en php. Pour mettre à jour les configurations, il faut modifier les fichiers et ensuite build l'image avec:

build -t tag .

Une version peut être push sur Docker Hub et utilisée directement dans un docker-compose.

Pour mettre à jour uniquement le service Nginx plusieurs étapes sont nécessaires:

  • Réaliser un backup de la configuration
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
  • Installer les dépendances
apt-get install software-properties-common python-software-properties
  • Ajouter le référentiel de la version stable
add-apt-repository ppa:nginx/stable
  • Réaliser un upgrade
apt-get update
  • Installer Nginx
apt-get install nginx
  • Choisir de garder l'ancienne config quand le service le demande à l'installation

Ajout d'un nouveau site web

Pour ajouter un site web il faut créer un répertoire au niveau de /usr/share/nginx/html/mon_repertoire et y ajouter les fichiers propres au site en question. Ensuite, dans nginx.conf il faut ajouter un nouveau serveur en spécifiant le port d'écoute et le fichier de départ du site web. Par exemple:

server {
        listen       80;
        server_name  wwww.l2-7.ephec-ti.be;

        location / {
            limit_except GET HEAD { deny all; }
            root   /usr/share/nginx/html/www;
            index  index.html;
        }
    }

Ensuite on build l'image et on peut run en exposant les ports nécessaires 80 et/ou 443. DNS: Pour terminer, on ajoute le record du site dans le fichier de zone du SOA du domaine.

Ajout d'un nouvel utilisateur pour la base de données

Il ne devrait pas être nécessaire d'ajouter un nouvel utilisateur en DB. Cependant si l'ajout d'un nouveau site web nécessite un nouvel utilisateur avec des droits limités sur certaines tables ou sur un DB alors la démarche est expliquée ci dessous.

Pour ajouter un nouvel utilisateur, il faut entrer dans le container avec la commande:

docker exec -it 'tag' bash

Il est alors possible de rentrer dans l'invite de commande mysql en utilisant un utilisateur de type root avec la commande:

mysql -p 'password'

Ensuite on sélectionne le DB avec la commande use et l'on peut ajouter un utilisateur avec une instruction SQL. On peut également modifier la DB.

CREATE USER 'example_user'@'ip' IDENTIFIED WITH mysql_native_password BY 'password';

On peut lui attribuer les droits désirés avec l'instruction GRANT.

Troubleshooting

Pour avoir des informations sur d'éventuelles erreurs, il faut consulter les logs. Il y a les logs principaux du serveur qui sont situés sur le vps en dehors du container dans le répertoire /nginx/logs grâce à la mise en place d'un volume dans un docker-compose qui permet au container d'écrire ses logs directement sur le vps via son fichier /etc/nginx/main_access.log. Différents logs concernant chaque serveur sont disponibles dans /etc/nginx. Les logs du container peuvent être consultés via docker logs. Il est également possible de démarrer le container sans deamon et d'observer le stdout.

Il est important de:

  • vérifier le code source des sites
  • vérifier le fichier nginx.conf qui indique les chemins des index
  • observer le code d'erreur retourné pour avoir une information sur l'origine de l'erreur et se diriger vers les bons logs

Erreurs fréquentes:

L'erreur la plus courante est l'impossibilité de joindre un site web dans le navigateur. Pour trouver la cause du problème il convient de vérifier si tous les services sont en cours d'exécution via

sevice --status-all

On vérifie que Nginx soit démarré et que le service php le soit également pour le site b2b.

Il est ensuite important de vérifier le fichier de configuration (nginx.conf) surtout au niveau des chemins vers les différents fichiers des sites web.

Enfin, il faut s'assurer que le problème n'est pas situé au niveau du DNS avec un mauvais Ressource Record (avec nslookup par exemple) qui empêche de joindre le le site en question.