Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
elearning:workbooks:debian:6:senior:l131 [2020/01/30 03:29] – modification externe 127.0.0.1elearning:workbooks:debian:6:senior:l131 [2020/02/21 07:43] (Version actuelle) – créée admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
  
-======APF101 Gestion de Base du Serveur Web Apache 2.4======+Dernière mise-à-jour : ~~LASTMOD~~
  
-=====Présentation d'Apache=====+====== LRF151 - Administration du Serveur MongoDB sous RHEL 7======
  
-Un serveur web est une machine doté d'un logiciel serveur qui attend des requêtes de la part de machines clientes afin de leur livrer de documents de types différents.+Dans cette formation vous allez apprendre :
  
-En 1994 le développement du serveur web le plus connue à l'époquele démon **HTTP**, a été arrêté suite au départ de la NCSA de son principal développeur, **Rob %%McCool%%**.+  * Ce qui est le NOSQL, 
 +  Ce qui est MongoDB, 
 +  Comment installer et configurer MongoDB, 
 +  Comment utiliser le client mongo, 
 +  Quels sont les clients graphiques disponibles pour MongoDB, 
 +  * Quelle est la structure des données de MongoDB, 
 +  Quel est le langage des requêtes de MongoDB, 
 +  Comment utiliser ce langage efficacement.
  
-Au début de l'année 1995, un groupe de webmestres indépendants s'est mis en place sous la direction de **Brian Behlendorf** et **Cliff Skolnick** pour reprendre le travail sur ce démon. Ce projet a pris le nom **Apache**. En même temps la NCSA a repris son propre travail de développement sur son démon HTTP. L'arrivée dans le groupe Apache de deux personnes de la NCSA en tant que membres honoraires, **Brandon Long** et **Beth Frank** a permis la mise en commun des connaissances des deux groupes.+=====Présentation=====
  
-Le projet **Apache** est un projet de développement d'un serveur web libre pour les plateformes Unix et Windows(tm). La première version //officielle//, la 0.6.2 est sortie en avril 1995. +====Qu'est-ce le NOSQL ?====
  
-La **Fondation Apache**, créée en 1999 par l'équipe Apache, gère aujourd'hui non seulement le projet Apache mais aussi un grand nombre d'autres projets. La liste des projets de la Fondation peut être trouvée **[[http://www.apache.org/foundation/projects.html|ici]]**.+La naissance des outils NOSQL (//Not Only SQL//) a ses origines dans les limitations des **[[https://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID|propriétés ACID]]**. En effet, c'est les grandes sociétés du web, qui, amenées à traiter des volumes de données très importants, ont été les premières confrontées aux limitations intrinsèques des SGBD relationnels traditionnels.
  
-Apache est modulaire. Certains modules fondamentaux conditionnent comment Apache traite la question du multitraitement. Les modules multitraitements - **MPM - Multi-Processing Modules** - sont différents selon le système d'exploitation utilisé et la charge attendue.+De ce fait, chaque société a adopté ou a dévélopé sa propre solution de gestion de données :
  
-  * **[[https://httpd.apache.org/docs/2.4/fr/mod/mpm_winnt.html|mpm-winnt]]** - module propre à Windows(tm) qui utilise son support réseau natif+  * Google - **[[https://fr.wikipedia.org/wiki/BigTable|BigTable (Fr)]]**, 
-  * **[[https://httpd.apache.org/docs/2.4/fr/mod/mpm_netware.html|mpm_netware]]** - un serveur web basé exclusivement sur les threads et optimisé pour Novell NetWare(tm)+  * Facebook - **[[https://fr.wikipedia.org/wiki/Cassandra_(base_de_donn%C3%A9es)|Cassandra (Fr)]]** puis **[[https://fr.wikipedia.org/wiki/HBase|HBase (Fr)]]**, 
-  * **[[https://httpd.apache.org/docs/2.4/fr/mod/mpmt_os2.html|mpmt_os2]]** - un serveur hybride multi-processus, multi-thread pour OS/2+  * Ubuntu One - **[[https://fr.wikipedia.org/wiki/CouchDB|CouchDB (Fr)]]**, 
-  * **[[https://httpd.apache.org/docs/2.4/fr/mod/prefork.html|prefork]]** - module propre à Unix et Linux qui implémente un serveur mono-tâche à duplication+  * Baidu - **[[https://fr.wikipedia.org/wiki/Hypertable|Hypertable (Fr)]]**, 
-  * **[[https://httpd.apache.org/docs/2.4/fr/mod/worker.html|worker]]** - module propre à Unix et Linux qui implémente un serveur hybride multi-tâche et multitraitement, +  * Amazon - **[[https://en.wikipedia.org/wiki/Dynamo_(storage_system)|Dynamo (En)]]** 
-  * **[[https://httpd.apache.org/docs/2.4/fr/mod/event.html|event]]** - module propre à Unix et Linux conçu pour permettre le traitement d'un nombre accru de requêtes simultanées en déléguant certaines tâches aux threads d'écoute, libérant par là-même les threads de travail et leur permettant de traiter les nouvelles requêtes.+  * LinkedIn - **[[https://en.wikipedia.org/wiki/Voldemort_(distributed_data_store)|Voldemort (En)]]**, 
 +  * SourceForge.net - **[[https://fr.wikipedia.org/wiki/MongoDB|MongoDB]]**.
  
-**Ces modules sont compilés statiquement au binaire Apache et sont mutuellement exclusifs.**+C'est à travers de ce dernier que ce cours propose de vous faire découvrir la mouvance NOSQL
  
-=====Contenu de ce Cours=====+====Présentation de MongoDB====
  
-Dans ce coursvous allez apprendre par la pratique :+Dans le cas de MongoDBles données prennent la forme de **documents** enregistrés dans des **collections**. Une collection peut contenir un nombre quelconque de documents. Cependant, les champs d'un enregistrement sont libres et peuvent être différents d'un enregistrement à un autre dans la même collection. Le seul champ commun et obligatoire est le champ de la clé principale **_id**. 
  
-  * LAB #1 - Gestion de serveurs virtuels +===Fonctionnalités de MongoDB===
-  * LAB #2 - Gestion des pages personnelles avec mod_userdir+
  
-=====Préparation=====+  * La réplication permet de dupliquer les serveurs de base de données pour répondre à une montée en charge ou une tolérance de panne, 
 +  * Le Sharding (distribution de données sur plusieurs machines pour assurer la scalabilité) permet de répartir les données sur plusieurs serveurs soit pour simplement augmenter les performances soit pour répartir les données géographiquement, 
 +  * Système de fichiers **GridFS** qui permet de stocker simplement des fichiers en base de données, 
 +  * Le **SIG** ou **[[https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27information_g%C3%A9ographique|Système d’Information Géographique]]** permet de manipuler simplement des positions sur un plan ou sur le globe terrestre, 
 +  * La fonction de recherche : MongoDB intègre un système de recherche optimisé en fonction de la langue utilisée, 
 +  * MongoDB offre des nombreuses fonctionnalités que l’on trouve dans le monde relationnel (count, groupBy, etc.) mais aussi le support de la recherche full-text, la recherche géo-spatiale ou **[[https://fr.wikipedia.org/wiki/MapReduce|MapReduce]]** (manipulation et distribution de données dans un cluster), 
 +  * Supporte l’indexation pour l’optimisation des recherches.
  
-Désactivez le mode **enforcing** de SELINUX afin de pouvoir librement travailler avec Apache :+===Historique du Projet===
  
-<code> +MongoDB (de //Humongous// qui veut dire énorme ou immense) : 
-[root@centos7 ~]# setenforce permissive +
-[root@centos7 ~]# getenforce +
-Permissive +
-[root@centos7 ~]# vi /etc/sysconfig/selinux  +
-[root@centos7 ~]# cat /etc/sysconfig/selinux +
  
-# This file controls the state of SELinux on the system. +  * est développé depuis 2007 par MongoDB,  
-# SELINUX= can take one of these three values: +  * a été industriellement viable en 2010 avec la version 1.4
-#     enforcing - SELinux security policy is enforced. +  * est écrit en langage C++.
-#     permissive - SELinux prints warnings instead of enforcing. +
-#     disabled - No SELinux policy is loaded. +
-SELINUX=permissive +
-# SELINUXTYPE= can take one of three two values: +
-#     targeted - Targeted processes are protected+
-#     minimum - Modification of targeted policyOnly selected processes are protected.  +
-#     mls - Multi Level Security protection. +
-SELINUXTYPE=targeted  +
-</code>+
  
-Afin d'éviter les problèmes liés au pare-feu arrêtez le service firewalld :+===Versions Majeures===
  
-<code> +^ Version de MongoDB ^ Améliorations par rapport à la version précédente ^  
-[root@centos7 ~]# systemctl stop firewalld +| MongoDB 1.2.x | Création d'index plus rapide \\ Fonctions JavaScript stockées \\ La commande fsync configurable \\ Plusieurs petites fonctionnalités et corrections | 
-[root@centos7 ~]# systemctl disable firewalld +| MongoDB 1.4 | Amélioration de la mémoire d'indexation \\ Une meilleure détection des expressions régulières | 
-[root@centos7 ~]# systemctl status firewalld +| MongoDB 1.6 | L'option w (et wtimeoutpeut se propager vers plusieurs serveurs \\ La commande findAndModify supporte les upserts\\ Option $ showDiskLoc permet de voir l'emplacement du disque d'un document \\ Prise en charge des sockets IPv6 et UNIX | 
-● firewalld.service - firewalld - dynamic firewall daemon +| MongoDB 1.8 | Mode écriture avant Journaling pour faciliter la récupération du crash et la durabilité dans le moteur de stockage \\ Correction d'un problème de concurrence avec de nombreuses connexions entrantes | 
-   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) +| MongoDB 2.0 | Journaling est activé par défaut dans la version 2.0 pour les versions 64 bits \\ La commande compact est maintenant disponible pour le compactage des index \\ Réduction de la taille de la pile par défaut \\ Améliorations des Indices de performance \\ Les applications peuvent maintenant utiliser l' authentification avec les clusters fragmentées| 
-   Active: inactive (dead+| MongoDB 2.2 | Opérations d'agrégation \\ Collections TTL permet supprimer les données périmées d'une collection \\ Augmentation de la capacité du serveur pour les opérations simultanées \\ Amélioration de la sensibilisation Data Center avec Tag Aware Sharding | 
-     Docs: man:firewalld(1)+| MongoDB 2.4 | Fonctionnalité Text Search \\ Ajout d'un nouvel indice de 2dsphere \\ Ajout d'un Index Hashed pour indexer des documents \\ Améliorations de la sécurité | 
 +| MongoDB 2.6 | Agrégation Améliorées \\ Text Search activé par défaut \\ Nouveau protocole d'écriture \\ Package MSI pour MongoDB Disponible pour Windows | 
 +| MongoDB 3.0 | MongoDB 3.0 introduit le WiredTiger comme moteur de stockage \\ Amélioration du moteur de stockage MMAPv \\ Augmentation du nombre de Replica Set Members \\ Amélioration des Clusters fragmentées \\ Améliorations des requêtes | 
 +| MongoDB 3.2 | WiredTiger comme moteur par défaut de stockage \\ Amélioration des Clusters \\ Index partiels disponibles pour indexer des documents \\ Nouveaux opérateurs de requête \\ SpiderMonkey JavaScript Engine |
  
-Aug 21 16:23:02 centos7.i2tch.loc systemd[1]: Starting firewalld - dynamic firewall daemon... +===Exécutables===
-Aug 21 16:23:07 centos7.i2tch.loc systemd[1]: Started firewalld - dynamic firewall daemon. +
-Aug 21 16:29:49 centos7.i2tch.loc systemd[1]: Stopping firewalld - dynamic firewall daemon... +
-Aug 21 16:29:49 centos7.i2tch.loc systemd[1]: Stopped firewalld - dynamic firewall daemon. +
-</code>+
  
-===== Installation à partir des dépôts=====+Le tableau suivant indique les noms des exécutables selon la base de donnée utilisée :
  
-Sous **RHEL / CentOS 7**, Apache n'est pas installé par défaut. Utilisez donc yum pour l'installer :+^  ^  MongoDB  ^  MySQL  ^  Oracle  ^  Informix  ^  DB2  ^  
 +|  Serveur  |  mongod  | mysqld  |  oracle  |  IDS  |  DB2 Server 
 +|  Client  |  mongo  |  mysql  |  sqlplus  |  DB-Access  |  DB2 Client  |
  
-<code> +===Avantages et Inconvénients===
-[root@centos7 ~]# rpm -qa | grep httpd +
-[root@centos7 ~]# +
-[root@centos7 ~]# yum install httpd +
-</code>+
  
-La version d'Apache est la **2.4.6** :+==Avantages==
  
-<code> +MongoDB :
-[root@centos7 ~]# rpm -qa | grep httpd +
-httpd-2.4.6-45.el7.centos.4.x86_64 +
-httpd-tools-2.4.6-45.el7.centos.4.x86_64 +
-</code>+
  
-Configurez le service pour démarrer automatiquement :+  * ne nécessite pas de schéma prédéfini des données d'où sa grande flexibilité, 
 +  * est une base de données orientée documents qui s’adapte parfaitement à de nombreuses applications, telles les applications de gestion de dossiers, factures, commandes ou produits, 
 +  * supporte une évolutivité à la charge (//scaling//) par l'ajout de machines,  
 +  * supporte des indexes secondaires,  
 +  * propose un langage complet de requêtes et une stricte cohérence et stabilité, 
 +  * propose du calcul en mémoire, d'où la lecture et écriture rapides, 
 +  * propose la réplication en mode maître/esclave et le basculement automatique, 
 +  * propose le Sharding (répartition automatique de données sur plusieurs machines).
  
-<code> +==Inconvénients==
-[root@centos7 ~]# systemctl status httpd +
-● httpd.service - The Apache HTTP Server +
-   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) +
-   Active: inactive (dead) +
-     Docs: man:httpd(8) +
-           man:apachectl(8) +
-[root@centos7 ~]# systemctl enable httpd +
-Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. +
-</code>+
  
-Lancez votre service apache :+MongoDB :
  
-<code> +  * n'a pas de possibilité de réaliser de jointures, les données sont généralement embarquées dans le même document, 
-[root@centos7 ~]# systemctl start httpd +  * ne peut pas gérer de transactions complexes, 
-[root@centos7 ~]# systemctl status httpd +  * impose que la charge du contrôle des données soit reportée du côté de l’application puisque il n'y a pas de schéma, 
-● httpd.service - The Apache HTTP Server +  * propose un langage d’interrogation qui lui est propre (donc, non standardisé), pratique mais qui s'avère limité.
-   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) +
-   Active: active (running) since Tue 2017-08-22 11:19:18 CEST; 3s ago +
-     Docs: man:httpd(8) +
-           man:apachectl(8) +
- Main PID: 1293 (httpd) +
-   Status: "Processing requests..." +
-   CGroup: /system.slice/httpd.service +
-           ├─1293 /usr/sbin/httpd -DFOREGROUND +
-           ├─1296 /usr/sbin/httpd -DFOREGROUND +
-           ├─1297 /usr/sbin/httpd -DFOREGROUND +
-           ├─1298 /usr/sbin/httpd -DFOREGROUND +
-           ├─1299 /usr/sbin/httpd -DFOREGROUND +
-           └─1300 /usr/sbin/httpd -DFOREGROUND+
  
-Aug 22 11:19:18 centos7.i2tch.loc systemd[1]: Starting The Apache HTTP Server... +====Installation de MongoDB====
-Aug 22 11:19:18 centos7.i2tch.loc systemd[1]: Started The Apache HTTP Server. +
-</code>+
  
-=====Configuration sous RHEL CentOS 7 =====+Créez le fichier **/etc/yum.repos.d/mongodb-org-3.2.repo** :
  
-====/etc/httpd/conf/httpd.conf==== +<code>  
- +[root@centos7 ~]# vi /etc/yum.repos.d/mongodb-org-3.2.repo 
-Sous Red Hat / CentOS 7 le fichier de configuration principal d'apache est **/etc/httpd/conf/httpd.conf**Cette configuration est complémentée par les directives se trouvant dans les fichiers contenus dans les répertoires **/etc/httpd/conf.modules.d/** et **/etc/httpd/conf.d/** : +[root@centos7 ~]# cat /etc/yum.repos.d/mongodb-org-3.2.repo 
- +[mongodb-org-3.2] 
-<code> +name=MongoDB Repository 
-[root@centos7 ~]# ls -lR /etc/httpd +baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64
-/etc/httpd: +gpgcheck=
-total 4 +enabled=
-drwxr-xr-x. 2 root root   35 Aug 22 11:17 conf +gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
-drwxr-xr-x2 root root   78 Aug 22 11:17 conf.d +
-drwxr-xr-x. 2 root root 4096 Aug 22 11:17 conf.modules.d +
-lrwxrwxrwx. 1 root root   19 Aug 22 11:17 logs -> ../../var/log/httpd +
-lrwxrwxrwx. 1 root root   29 Aug 22 11:17 modules -> ../../usr/lib64/httpd/modules +
-lrwxrwxrwx. root root   10 Aug 22 11:17 run -> /run/httpd +
- +
-/etc/httpd/conf: +
-total 28 +
--rw-r--r--. root root 11753 Apr 12 15:50 httpd.conf +
--rw-r--r--. 1 root root 13077 Apr 12 23:04 magic +
- +
-/etc/httpd/conf.d: +
-total 16 +
--rw-r--r--1 root root 2926 Apr 12 23:03 autoindex.conf +
--rw-r--r--. 1 root root  366 Apr 12 23:04 README +
--rw-r--r--. 1 root root 1252 Apr 12 15:50 userdir.conf +
--rw-r--r--. 1 root root  824 Apr 12 15:50 welcome.conf +
- +
-/etc/httpd/conf.modules.d: +
-total 28 +
--rw-r--r--. 1 root root 3739 Apr 12 15:50 00-base.conf +
--rw-r--r--. 1 root root  139 Apr 12 15:50 00-dav.conf +
--rw-r--r--. 1 root root   41 Apr 12 15:50 00-lua.conf +
--rw-r--r--. 1 root root  742 Apr 12 15:50 00-mpm.conf +
--rw-r--r--. 1 root root  957 Apr 12 15:50 00-proxy.conf +
--rw-r--r--. 1 root root   88 Apr 12 15:50 00-systemd.conf +
--rw-r--r--. 1 root root  451 Apr 12 15:50 01-cgi.conf+
 </code> </code>
  
-Les directives actives du fichier **/etc/httpd/conf/httpd.conf** sont les suivantes :+Installez mongo :
  
 <code> <code>
-[root@centos7 ~]# egrep -v '^(#|$)'  /etc/httpd/conf/httpd.conf > /tmp/httpd.conf +[root@centos7 ~]# yum install mongodb-org 
-[root@centos7 ~]# cat /tmp/httpd.conf  +Loaded plugins: fastestmirror, langpacks 
-ServerRoot "/etc/httpd" +adobe-linux-x86_64                                                                                                                                                       2.9 kB  00:00:00      
-Listen 80 +base                                                                                                                                                                     | 3.6 kB  00:00:00      
-Include conf.modules.d/*.conf +extras                                                                                                                                                                   | 3.4 kB  00:00:00      
-User apache +mongodb-org-3.2                                                                                                                                                          | 2.5 kB  00:00:00      
-Group apache +updates                                                                                                                                                                  | 3.4 kB  00:00:00      
-ServerAdmin root@localhost +(1/6): adobe-linux-x86_64/primary_db                                                                                                                                     | 2.7 kB  00:00:01      
-<Directory /> +(2/6): extras/7/x86_64/primary_db                                                                                                                                        | 101 kB  00:00:00      
-    AllowOverride none +(3/6): base/7/x86_64/group_gz                                                                                                                                            | 156 kB  00:00:01      
-    Require all denied +(4/6): mongodb-org-3.2/7/primary_db                                                                                                                                      |  72 kB  00:00:02      
-</Directory> +(5/6): base/7/x86_64/primary_db                                                                                                                                          | 5.7 MB  00:00:03      
-DocumentRoot "/var/www/html" +(6/6): updates/7/x86_64/primary_db                                                                                                                                       | 2.8 MB  00:00:02      
-<Directory "/var/www"> +Determining fastest mirrors 
-    AllowOverride None + * base: ftp.ciril.fr 
-    Require all granted + * extras: ftp.ciril.fr 
-</Directory> + * updates: centos.crazyfrogs.org 
-<Directory "/var/www/html"> +Resolving Dependencies 
-    Options Indexes FollowSymLinks +--Running transaction check 
-    AllowOverride None +---Package mongodb-org.x86_64 0:3.2.16-1.el7 will be installed 
-    Require all granted +--Processing Dependency: mongodb-org-tools = 3.2.16 for package: mongodb-org-3.2.16-1.el7.x86_64 
-</Directory> +--Processing Dependency: mongodb-org-shell = 3.2.16 for package: mongodb-org-3.2.16-1.el7.x86_64 
-<IfModule dir_module> +--Processing Dependency: mongodb-org-server = 3.2.16 for package: mongodb-org-3.2.16-1.el7.x86_64 
-    DirectoryIndex index.html +--Processing Dependency: mongodb-org-mongos = 3.2.16 for package: mongodb-org-3.2.16-1.el7.x86_64 
-</IfModule> +--Running transaction check 
-<Files ".ht*"> +---Package mongodb-org-mongos.x86_64 0:3.2.16-1.el7 will be installed 
-    Require all denied +---> Package mongodb-org-server.x86_64 0:3.2.16-1.el7 will be installed 
-</Files> +---Package mongodb-org-shell.x86_64 0:3.2.16-1.el7 will be installed 
-ErrorLog "logs/error_log" +---Package mongodb-org-tools.x86_64 0:3.2.16-1.el7 will be installed 
-LogLevel warn +--Finished Dependency Resolution
-<IfModule log_config_module> +
-    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined +
-    LogFormat "%h %l %u %t \"%r\" %>s %b" common +
-    <IfModule logio_module+
-      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio +
-    </IfModule+
-    CustomLog "logs/access_log" combined +
-</IfModule+
-<IfModule alias_module> +
-    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" +
-</IfModule+
-<Directory "/var/www/cgi-bin"> +
-    AllowOverride None +
-    Options None +
-    Require all granted +
-</Directory> +
-<IfModule mime_module> +
-    TypesConfig /etc/mime.types +
-    AddType application/x-compress .Z +
-    AddType application/x-gzip .gz .tgz +
-    AddType text/html .shtml +
-    AddOutputFilter INCLUDES .shtml +
-</IfModule> +
-AddDefaultCharset UTF-8 +
-<IfModule mime_magic_module> +
-    MIMEMagicFile conf/magic +
-</IfModule> +
-EnableSendfile on +
-IncludeOptional conf.d/*.conf +
-</code+
  
-====Les Directives du fichier /etc/httpd/conf/httpd.conf====+Dependencies Resolved
  
-===ServerRoot===+================================================================================================================================================================================================ 
 + Package                                            Arch                                   Version                                        Repository                                       Size 
 +================================================================================================================================================================================================ 
 +Installing: 
 + mongodb-org                                        x86_64                                 3.2.16-1.el7                                   mongodb-org-3.2                                 5.8 k 
 +Installing for dependencies: 
 + mongodb-org-mongos                                 x86_64                                 3.2.16-1.el7                                   mongodb-org-3.2                                 5.7 M 
 + mongodb-org-server                                 x86_64                                 3.2.16-1.el7                                   mongodb-org-3.2                                  13 M 
 + mongodb-org-shell                                  x86_64                                 3.2.16-1.el7                                   mongodb-org-3.2                                 6.8 M 
 + mongodb-org-tools                                  x86_64                                 3.2.16-1.el7                                   mongodb-org-3.2                                  41 M
  
-Cette directive indique la racine de la configuration d'apache.+Transaction Summary 
 +================================================================================================================================================================================================ 
 +Install  1 Package (+4 Dependent packages)
  
-<file> +Total download size66 M 
-ServerRoot "/etc/httpd" +Installed size202 M 
-</file> +Is this ok [y/d/N]: y
- +
-===Listen=== +
- +
-Cette directive indique le port écouté par apache. +
- +
-<file> +
-Listen 80 +
-</file>  +
- +
-===Include=== +
- +
-Cette directive indique que les fichiers de configuration inclus dans le répertoire **conf.modules.d/*.conf** doivent être inclus dans httpd.conf +
- +
-<file> +
-Include conf.modules.d/*.conf +
-</file> +
- +
-===User et Group=== +
- +
-Cette directive indique l'UID et le GID de l'utilisateur qui exécute le service apache +
- +
-<file> +
-User apache +
-Group apache +
-</file> +
- +
-===ServerAdmin=== +
- +
-Cette directive indique l'adresse email de l'administrateur du serveur apache : +
- +
-<file> +
-ServerAdmin root@localhost +
-</file> +
- +
-===<Directory />=== +
- +
-Cette directive permet de regrouper d'autres directives s'appliquant à un répertoire précis - dans ce cas la racine du site : +
- +
-<file> +
-<Directory /+
-</file> +
- +
-===Require all=== +
- +
-Cette directive autorise ou interdit l'accès. Dans ce cas l'interdiction concerne tout le monde. +
- +
-<file> +
-Require all denied +
-</file> +
- +
-===AllowOverride=== +
- +
-Cette directive stipule comment Apache doit utiliser les directives situées dans un éventuel fichier **.htaccess** La valeur **none** désactive l'utilisation du fichier **.htaccess** dans le répertoire. +
- +
-<file> +
-AllowOverride None +
-</file> +
- +
-===</Directory>=== +
- +
-Cette directive ferme le bloc **Directory**. +
- +
-<file> +
-</Directory> +
-</file> +
- +
-===DocumentRoot=== +
- +
-Cette directive indique l'emplacement par défaut des pages web à servir : +
- +
-<file> +
-DocumentRoot "/var/www/html" +
-</file> +
- +
-===<Directory "/var/www">=== +
- +
-Cette directive définit des règles pour le répertoire **/var/www/** : +
- +
-<file> +
-<Directory "/var/www"> +
-</file> +
- +
-===AllowOverride=== +
- +
-Cette directive stipule comment Apache doit utiliser les directives situées dans un éventuel fichier **.htaccess** La valeur **none** désactive l'utilisation du fichier **.htaccess** dans le répertoire **/var/www/**. +
- +
-<file> +
-AllowOverride None +
-</file> +
- +
-===Require all=== +
- +
-Cette directive autorise ou interdit l'accès. Dans ce cas l'autorisation concerne tout le monde. +
- +
-<file> +
-Require all granted +
-</file> +
- +
-===</Directory>=== +
- +
-Cette directive ferme le bloc **Directory**. +
- +
-<file> +
-</Directory> +
-</file> +
- +
-===<Directory "/var/www/html">=== +
- +
-Cette directive définit des règles pour le répertoire **htdocs** : +
- +
-<file> +
-<Directory "/var/www/html"> +
-</file> +
- +
-===Indexes=== +
- +
-La directive Options active (+) ou désactive (-) des fonctions spécifiques. Dans ce cas **Indexes** autorise au serveur apache de générer une liste du contenu du répertoire dans le cas ou le fichier index ne peut pas être trouve tandis que **%%FollowSymLinks%%** permet à apache de suivre les liens symboliques.  +
- +
-<file> +
-Options Indexes FollowSymLinks +
-</file> +
- +
-===AllowOverride=== +
- +
-Cette directive stipule comment Apache doit utiliser les directives situées dans un éventuel fichier **.htaccess** La valeur **none** désactive l'utilisation du fichier **.htaccess** dans le répertoire **/var/www/html**. +
- +
-<file> +
-AllowOverride None +
-</file> +
- +
-===Require all=== +
- +
-Cette directive autorise ou interdit l'accès. Dans ce cas l'autorisation concerne tout le monde. +
- +
-<file> +
-Require all granted +
-</file> +
- +
-===</Directory>=== +
- +
-Cette directive ferme le bloc **Directory**. +
- +
-<file> +
-</Directory> +
-</file> +
- +
-===IfModule=== +
- +
-**%%IfModule dir_module%%** indique que le pavé ne sera interprété QUE dans le cas ou le module dir_module soit chargé. +
- +
-<file> +
-<IfModule dir_module> +
-</file> +
- +
-==DirectoryIndex== +
- +
-La directive **%%DirectoryIndex%%** stipule la liste des pages servies par défaut. +
- +
-<file> +
-DirectoryIndex index.html +
-</file> +
- +
-===</IfModule>=== +
- +
-Cette directive ferme le bloc **%%IfModule%%** +
- +
-<file> +
-</IfModule> +
-</file> +
- +
-===Files=== +
- +
-La directive Files recherche des fichiers qui correspondent a l'expression régulière passée en argument. +
- +
-<file> +
-<Files ".ht*"> +
-    Require all denied +
-</Files> +
-</file> +
- +
-===ErrorLog=== +
- +
-Cette directive indique l'emplacement du journal d'erreurs. +
- +
-<file> +
-ErrorLog "logs/error_log" +
-</file> +
- +
- +
-===LogLevel=== +
- +
-Cette directive indique le niveau de journalisation au format **syslog**: debug, info, notice, warn, error, crit, alert, emerg. +
- +
-<file> +
-LogLevel warn +
-</file> +
- +
-===IfModule=== +
- +
-**%%IfModule log_config_module%%** indique que le pavé ne sera interprété QUE dans le cas ou le module log_config_module soit chargé. +
- +
-<file> +
-<IfModule log_config_module> +
-</file> +
- +
-===LogFormat=== +
- +
-La directive **%%LogFormat%%** définit un format de journal et l'associe avec un //nom//. Cette directive prend la forme : +
- +
-  LogFormat format|nom +
- +
-<file> +
-    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined +
-    LogFormat "%h %l %u %t \"%r\" %>s %b" common +
-    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio +
-</file> +
- +
-L'argument **format** est une chaîne qui peut contenir des caractères littéraux, des caractères de contrôle (par exemple //\n// pour une nouvelle ligne et //\t// pour une tabulation). Les **"** littérales et les **\** doivent être précédés par un caractère d'échappement. +
- +
-Les significations des chaînes de formatage sont les suivantes : +
- +
-^ Chaîne ^ Description ^ +
-| %b | La taille de la réponse sans les entêtes HTTP. Le caractère **-** indique 0 | +
-| %h | L'hôte distant | +
-| %l | Le nom du compte de l'utilisateur distant | +
-| %r | La première ligne de la requête | +
-| %>s | Le statut de la dernière requête | +
-| %t | L'heure de la réception de la requête par le serveur | +
-| %u | Le nom du compte de l'utilisateur distant | +
-| %U | l'URL demandé | +
-| %{Referer}i | Le contenu de **Referer** dans l'entête HTTP de la requête. | +
-| %{User-agent}i | Le contenu de **User-agent** dans l'entête HTTP de la requête. | +
-| %I | Octets reçus, en-têtes et corps de requête inclus ; ne peut pas être nul. | +
-| %O | Octets envoyés, en-têtes inclus ; ne peut pas être nul. | +
- +
-===CustomLog=== +
- +
-La directive **%%CustomLog%%** est utilisée pour écrire les journaux. Cette directive prend la forme : +
- +
-  CustomLog fichier|tube format +
- +
-<file> +
-CustomLog "logs/access_log" combined +
-</file> +
- +
-Le premier argument est donc soit : +
- +
-  * un **fichier** - un chemin complet, relatif à **%%ServerRoot%%**, vers un fichier journal, soit +
-  * un **tube** - le caractère **|** suivi par un chemin indiquant le programme qui recevra l'information du journal sur son entrée standard. Le programme concerné est exécuté avec l'UID de l'utilisateur qui a lancé Apache. Si cette utilisateur est **root**, le programme s'exécute sous root ! +
- +
-Le deuxième argument peut être soit : +
- +
-  * Un **format** - un format de journal si celui-ci n'a pas été définit par une directive **%%LogFormat%%**, soit +
-  * Un **nom** - un nom définit par une directive **%%LogFormat%%** +
- +
-Consultez votre journal d'accès : +
- +
-<code> +
-[root@centos7 ~]# cat /var/log/httpd/access_log  +
-127.0.0.1 - - [22/Aug/2017:11:31:25 +0200] "GET /" 403 4897 "-" "-" +
-127.0.0.1 - - [22/Aug/2017:15:46:32 +0200] "GET / HTTP/1.1" 403 4897 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" +
-127.0.0.1 - - [22/Aug/2017:15:46:32 +0200] "GET /noindex/css/bootstrap.min.css HTTP/1.1" 200 19341 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" +
-127.0.0.1 - - [22/Aug/2017:15:46:32 +0200] "GET /noindex/css/open-sans.css HTTP/1.1" 200 5081 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" +
-127.0.0.1 - - [22/Aug/2017:15:46:32 +0200] "GET /images/apache_pb.gif HTTP/1.1" 200 2326 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" +
-127.0.0.1 - - [22/Aug/2017:15:46:32 +0200] "GET /images/poweredby.png HTTP/1.1" 200 3956 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" +
-127.0.0.1 - - [22/Aug/2017:15:46:32 +0200] "GET /noindex/css/fonts/Light/OpenSans-Light.woff HTTP/1.1" 404 241 "http://localhost/noindex/css/open-sans.css" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" +
-127.0.0.1 - - [22/Aug/2017:15:46:32 +0200] "GET /noindex/css/fonts/Bold/OpenSans-Bold.woff HTTP/1.1" 404 239 "http://localhost/noindex/css/open-sans.css" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" +
-127.0.0.1 - - [22/Aug/2017:15:46:32 +0200] "GET /noindex/css/fonts/Light/OpenSans-Light.ttf HTTP/1.1" 404 240 "http://localhost/noindex/css/open-sans.css" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" +
-127.0.0.1 - - [22/Aug/2017:15:46:32 +0200] "GET /noindex/css/fonts/Bold/OpenSans-Bold.ttf HTTP/1.1" 404 238 "http://localhost/noindex/css/open-sans.css" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" +
-127.0.0.1 - - [22/Aug/2017:15:46:32 +0200] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" +
-127.0.0.1 - - [22/Aug/2017:15:46:32 +0200] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"+
 </code> </code>
  
-où : +Activez et démarrez le service :
- +
-^ Chaîne ^ Valeur ^ +
-| %h | 127.0.0.1 | +
-| %l | - | +
-| %u | - | +
-| %t | [22/Aug/2017:15:46:32 +0200] | +
-| %r | "GET /favicon.ico HTTP/1.1"+
-| %>s | 404 | +
-| %b | 209 | +
-| %{Referer}i | - | +
-| %{User-agent}i | "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"+
- +
-===</IfModule>=== +
- +
-Cette directive ferme le bloc **%%IfModule%%** +
- +
-<file> +
-</IfModule> +
-</file> +
- +
-===ScriptAlias=== +
- +
-La directive **ScriptAlias** sert ici à créer un lien pour le répertoire **cgi-bin** dans le cas où le module **alias_module** soit chargé : +
- +
-<file> +
-<IfModule alias_module> +
-    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" +
-</IfModule> +
-<Directory "/var/www/cgi-bin"> +
-    AllowOverride None +
-    Options None +
-    Require all granted +
-</Directory> +
-</file> +
- +
-===TypesConfig=== +
- +
-Cette directive indique l'emplacement du fichier mime.types qui contient les correspondances mime des fichiers à afficher dans le cas où le module **mime_module** soit chargé : +
- +
-<file> +
-<IfModule mime_module> +
-    TypesConfig /etc/mime.types +
-... +
-</IfModule> +
-</file> +
- +
-===AddType=== +
- +
-Cette directive stipule un contenu MIME-type pour une extension de fichier donnée dans le cas où le module **mime_module** soit chargé : +
- +
-<file> +
-<IfModule mime_module> +
-    ... +
-    AddType application/x-compress .Z +
-    AddType application/x-gzip .gz .tgz +
-    AddType text/html .shtml +
-    ... +
-</IfModule> +
-</file> +
- +
-===AddoutputFilter=== +
- +
-La directive **%%AddOutputFilter%%** fait correspondre une extension de fichier avec un **filtre**. Les réponses du serveur aux requêtes des clients sont ensuite envoyées vers le filtre avant d'être retournées aux clients : +
- +
-<file> +
-<IfModule mime_module> +
-    ... +
-    AddOutputFilter INCLUDES .shtml +
-</IfModule> +
-</file> +
- +
-===AddDefaultCharset=== +
- +
-Cette directive spécifie un jeu de caractères par défaut de UTF-8 pour tout document du type text/plain ou text/html. L'utilisation de cette option écrase tout autre spécification basée sur le MIME-Type. +
- +
-<file> +
-AddDefaultCharset UTF-8 +
-</file> +
- +
-===MIMEMagicFile=== +
- +
-Cette directive stipule le fichier magic. Le fichier magic est utilise pour déterminer le type mime d'un fichier. +
- +
-<file> +
-<IfModule mime_magic_module> +
-    MIMEMagicFile conf/magic +
-</IfModule> +
-</file> +
- +
-===EnableSendfile=== +
- +
-Cette directive définit si le programme httpd peut utiliser le support sendfile du noyau pour transmettre le contenu des fichiers aux clients. Par défaut, lorsque le traitement d'une requête ne requiert pas l'accès aux données contenues dans un fichier -- par exemple, pour la transmission d'un fichier statique -- Apache httpd utilise sendfile pour transmettre le contenu du fichier sans même lire ce dernier, si le système d'exploitation le permet : +
- +
-<file> +
-EnableSendfile on +
-</file> +
- +
-===IncludeOptional=== +
- +
-Cette directive permet d'inclure des fichiers dans les fichiers de configuration du serveur. Elle fonctionne de manière identique à la directive Include, à l'exception du fait que si l'expression avec caractères génériques wilcard ne correspond à aucun fichier ou répertoire, elle sera ignorée silencieusement au lieu de causer une erreur : +
- +
-<file> +
-IncludeOptional conf.d/*.conf +
-</file> +
- +
-=====/etc/httpd/conf.d/autoindex.conf===== +
- +
-Les directives actives du fichier **/etc/httpd/conf.d/autoindex.conf** sont les suivantes :+
  
 <code> <code>
-[root@centos7 ~]# egrep -v '^(#|$)'  /etc/httpd/conf.d/autoindex.conf > /tmp/autoindex.conf +[root@centos7 ~]# systemctl status mongod 
-[root@centos7 ~]# cat /tmp/autoindex.conf  +● mongod.service SYSV: Mongo is a scalable, document-oriented database. 
-IndexOptions FancyIndexing HTMLTable VersionSort +   Loaded: loaded (/etc/rc.d/init.d/mongod; bad; vendor preset: disabled) 
-Alias /icons"/usr/share/httpd/icons/" +   Active: inactive (dead) 
-<Directory "/usr/share/httpd/icons"> +     Docs: man:systemd-sysv-generator(8) 
-    Options Indexes MultiViews FollowSymlinks +[root@centos7 ~]# systemctl enable mongod 
-    AllowOverride None +mongod.service is not a native service, redirecting to /sbin/chkconfig
-    Require all granted +Executing /sbin/chkconfig mongod on 
-</Directory> +[root@centos7 ~]# systemctl start mongod 
-AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip +[root@centos7 ~]# systemctl status mongod 
-AddIconByType (TXT,/icons/text.gif) text/+● mongod.service SYSV: Mongo is a scalable, document-oriented database. 
-AddIconByType (IMG,/icons/image2.gifimage/* +   Loaded: loaded (/etc/rc.d/init.d/mongod; bad; vendor preset: disabled
-AddIconByType (SND,/icons/sound2.gifaudio/* +   Active: active (runningsince Mon 2017-09-18 13:46:09 CEST; 4s ago 
-AddIconByType (VID,/icons/movie.gifvideo/* +     Docs: man:systemd-sysv-generator(8
-AddIcon /icons/binary.gif .bin .exe +  Process: 14244 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=0/SUCCESS) 
-AddIcon /icons/binhex.gif .hqx +   CGroup: /system.slice/mongod.service 
-AddIcon /icons/tar.gif .tar +           └─14255 /usr/bin/mongod -f /etc/mongod.conf
-AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv +
-AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip +
-AddIcon /icons/a.gif .ps .ai .eps +
-AddIcon /icons/layout.gif .html .shtml .htm .pdf +
-AddIcon /icons/text.gif .txt +
-AddIcon /icons/c.gif .c +
-AddIcon /icons/p.gif .pl .py +
-AddIcon /icons/f.gif .for +
-AddIcon /icons/dvi.gif .dvi +
-AddIcon /icons/uuencoded.gif .uu +
-AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl +
-AddIcon /icons/tex.gif .tex +
-AddIcon /icons/bomb.gif /core +
-AddIcon /icons/bomb.gif */core.* +
-AddIcon /icons/back.gif .. +
-AddIcon /icons/hand.right.gif README +
-AddIcon /icons/folder.gif ^^DIRECTORY^^ +
-AddIcon /icons/blank.gif ^^BLANKICON^^ +
-DefaultIcon /icons/unknown.gif +
-ReadmeName README.html +
-HeaderName HEADER.html +
-IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t +
-</code>+
  
-====Les Directives du fichier /etc/httpd/conf.d/autoindex.conf==== +Sep 18 13:46:08 centos7.fenestros.loc systemd[1]Starting SYSVMongo is a scalabledocument-oriented database.... 
- +Sep 18 13:46:08 centos7.fenestros.loc runuser[14251]: pam_unix(runuser:session): session opened for user mongod by (uid=0) 
-===IndexOptions=== +Sep 18 13:46:09 centos7.fenestros.loc mongod[14244]Starting mongod[  OK  ] 
- +Sep 18 13:46:09 centos7.fenestros.loc systemd[1]: Started SYSV: Mongo is a scalable, document-oriented database..
-**mod_autoindex** permet la génération automatique des listes du contenu d'un répertoire quand la page d'index n'est par présente. L'option de génération est activée par la directive **Options +Indexes**. La directive **%%FancyIndexing%%** produit des colonnes ayant des liens en tête. Ces liens peuvent être utilisés pour trier l'index. La directive **%%VersionSort%%** permet une liste naturelle de fichiers ayant des numéros de versions tels foo-1.8.2 et foo-1.8.2a : +
- +
-<file> +
-IndexOptions FancyIndexing HTMLTable VersionSort +
-</file> +
- +
-===Alias=== +
- +
-La directive **Alias** sert ici à créer un lien pour le répertoire **icons** : +
- +
-<file> +
-Alias /icons/ "/usr/share/httpd/icons/" +
-</file> +
- +
-===<Directory "/usr/share/httpd/icons">=== +
- +
-Cette section définit les règles pour le répertoire **/var/www/icons** : +
- +
-<file> +
-<Directory "/usr/share/httpd/icons"> +
-    Options Indexes MultiViews FollowSymlinks +
-    AllowOverride None +
-    Require all granted +
-</Directory> +
-</file> +
- +
-===AddIconByEncoding=== +
- +
-Cette directive indique l'icône à afficher avec **%%FancyIndexing%%** en stipulant un **chemin** complet pour le type **MIME-type** indiqué. Le format est (alttext,url) où //alttext// indique le texte à afficher pour les navigateurs texte : +
- +
-<file> +
-AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip +
-</file> +
- +
-===AddIconByType=== +
- +
-Cette directive indique l'icône à afficher avec **%%FancyIndexing%%** en stipulant le type **MIME-type** indiquéLe format est (alttext,MIME-type) où //alttext// indique le texte à afficher pour les navigateurs texte : +
- +
-<file> +
-AddIconByType (TXT,/icons/text.gif) text/* +
-AddIconByType (IMG,/icons/image2.gif) image/* +
-AddIconByType (SND,/icons/sound2.gif) audio/* +
-AddIconByType (VID,/icons/movie.gif) video/* +
-</file> +
- +
-===AddIcon=== +
- +
-Cette directive indique l'icône à afficher avec **%%FancyIndexing%%** en stipulant un **nom**ou un **extension**Le format est (alttext,nom/extoù //alttext// indique le texte à afficher pour les navigateurs texte : +
- +
-<file> +
-AddIcon /icons/binary.gif .bin .exe +
-AddIcon /icons/binhex.gif .hqx +
-AddIcon /icons/tar.gif .tar +
-AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv +
-AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip +
-AddIcon /icons/a.gif .ps .ai .eps +
-AddIcon /icons/layout.gif .html .shtml .htm .pdf +
-AddIcon /icons/text.gif .txt +
-AddIcon /icons/c.gif .c +
-AddIcon /icons/p.gif .pl .py +
-AddIcon /icons/f.gif .for +
-AddIcon /icons/dvi.gif .dvi +
-AddIcon /icons/uuencoded.gif .uu +
-AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl +
-AddIcon /icons/tex.gif .tex +
-AddIcon /icons/bomb.gif /core +
-AddIcon /icons/bomb.gif */core.* +
-AddIcon /icons/back.gif .. +
-AddIcon /icons/hand.right.gif README +
-AddIcon /icons/folder.gif ^^DIRECTORY^^ +
-AddIcon /icons/blank.gif ^^BLANKICON^^ +
-</file> +
- +
-===DefaultIcon==+
- +
-La directive **%%DefaultIcon%%** indique l'icône servie en absence d'un type de fichier connu : +
- +
-<file> +
-DefaultIcon /icons/unknown.gif +
-</file> +
- +
-===ReadmeName=== +
- +
-Cette directive indique le fichier qui sera ajouter à la fin de l'index. Si le nom du fichier est précédé par un **/**, Apache prend le chemin relatif à la directive **%%DocumentRoot%%**. Dans le cas contraire, Apache cherche le fichier dans le répertoire pour lequel l'index est généré : +
- +
-<file> +
-ReadmeName README.html +
-</file> +
- +
-===HeaderName=== +
- +
-Cette directive indique le fichier qui sera inséré en tête de l'indexSi le nom du fichier est précédé par un **/**, Apache prend le chemin relatif à la directive **%%DocumentRoot%%**. Dans le cas contraire, Apache cherche le fichier dans le répertoire pour lequel l'index est généré : +
- +
-<file> +
-HeaderName HEADER.html +
-</file> +
- +
-===IndexIgnore=== +
- +
-Cette directive stipule les types de fichiers à exclure de l'index +
- +
-<file> +
-IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t +
-</file> +
- +
-=====/etc/httpd/conf.d/userdir.conf===== +
- +
-Ce fichier configure la mise à disposition de pages personnelles pour chaque utilisateur ayant un compte sur le serveur Linux.  +
- +
-Les directives actives du fichier **/etc/httpd/conf.d/userdir.conf** sont les suivantes : +
- +
-<code> +
-[root@centos7 ~]# egrep -v '^(#|$)'  /etc/httpd/conf.d/userdir.conf > /tmp/userdir.conf +
-[root@centos7 ~]# cat /tmp/userdir.conf  +
-<IfModule mod_userdir.c> +
-    UserDir disabled +
-</IfModule> +
-<Directory "/home/*/public_html"> +
-    AllowOverride FileInfo AuthConfig Limit Indexes +
-    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec +
-    Require method GET POST OPTIONS +
-</Directory>+
 </code> </code>
  
-====Les Directives du fichier /etc/httpd/conf.d/userdir.conf==== +Le client MongoDB est invoqué avec la commande mongo :
- +
-===<IfModule mod_userdir.c>=== +
- +
-Cette directive vérifie si mod_userdir est active. +
- +
-<file> +
-<IfModule mod_userdir.c> +
-</file> +
- +
-===UserDir=== +
- +
-Le but de cette directive est d'interdire le support des répertoires des utilisateurs :  +
- +
-<file> +
-UserDir disable +
-</file> +
- +
-=====/etc/httpd/conf.d/welcome.conf===== +
- +
-Ce fichier configure l'affichage de la page par défaut du serveur Apache dans le cas où il n'existe pas de fichier index.html.  +
- +
-Les directives actives du fichier **/etc/httpd/conf.d/welcome.conf** sont les suivantes :+
  
 <code> <code>
-[root@centos7 ~]# egrep -v '^(#|$)'  /etc/httpd/conf.d/welcome.conf > /tmp/welcome.conf +[root@centos7 ~]# mongo 
-[root@centos7 ~]# cat /tmp/welcome.conf  +MongoDB shell version: 3.2.16 
-<LocationMatch "^/+$"+connecting to: test 
-    Options -Indexes +Welcome to the MongoDB shell
-    ErrorDocument 403 /.noindex.html +For interactive help, type "help". 
-</LocationMatch> +For more comprehensive documentation, see 
-<Directory /usr/share/httpd/noindex> + http://docs.mongodb.org
-    AllowOverride None +Questions? Try the support group 
-    Require all granted + http://groups.google.com/group/mongodb-user 
-</Directory> +Server has startup warnings:  
-Alias /.noindex.html /usr/share/httpd/noindex/index.html +2017-09-18T13:46:09.416+0200 I CONTROL  [initandlisten]  
-Alias /noindex/css/bootstrap.min.css /usr/share/httpd/noindex/css/bootstrap.min.css +2017-09-18T13:46:09.416+0200 I CONTROL  [initandlisten] ** WARNING: soft rlimits too lowrlimits set to 4096 processes, 64000 filesNumber of processes should be at least 32000 : 0.5 times number of files. 
-Alias /noindex/css/open-sans.css /usr/share/httpd/noindex/css/open-sans.css +> exit 
-Alias /images/apache_pb.gif /usr/share/httpd/noindex/images/apache_pb.gif +bye 
-Alias /images/poweredby.png /usr/share/httpd/noindex/images/poweredby.png+[root@centos7 ~]# 
 </code> </code>
  
-=====/etc/httpd/conf.modules.d/00-*.conf =====+===Configuration===
  
-Ces fichiers configurent le chargement des modules d'Apache.  +Le fichier de configuration de mongodb est **/etc/mongod.conf** :
- +
-Par exemple, les directives actives du fichier **/etc/httpd/conf.modules.d/00-base.conf** sont les suivantes :+
  
 <code> <code>
-[root@centos7 ~]# egrep -v '^(#|$)'  /etc/httpd/conf.modules.d/00-base.conf > /tmp/base.conf +[root@centos7 ~]# cat /etc/mongod.conf  
-[root@centos7 ~]# cat /tmp/base.conf  +systemLog: 
-LoadModule access_compat_module modules/mod_access_compat.so +  destination: file 
-LoadModule actions_module modules/mod_actions.so +  logAppend: true 
-LoadModule alias_module modules/mod_alias.so +  path: /var/log/mongodb/mongod.log
-LoadModule allowmethods_module modules/mod_allowmethods.so +
-LoadModule auth_basic_module modules/mod_auth_basic.so +
-LoadModule auth_digest_module modules/mod_auth_digest.so +
-LoadModule authn_anon_module modules/mod_authn_anon.so +
-LoadModule authn_core_module modules/mod_authn_core.so +
-LoadModule authn_dbd_module modules/mod_authn_dbd.so +
-LoadModule authn_dbm_module modules/mod_authn_dbm.so +
-LoadModule authn_file_module modules/mod_authn_file.so +
-LoadModule authn_socache_module modules/mod_authn_socache.so +
-LoadModule authz_core_module modules/mod_authz_core.so +
-LoadModule authz_dbd_module modules/mod_authz_dbd.so +
-LoadModule authz_dbm_module modules/mod_authz_dbm.so +
-LoadModule authz_groupfile_module modules/mod_authz_groupfile.so +
-LoadModule authz_host_module modules/mod_authz_host.so +
-LoadModule authz_owner_module modules/mod_authz_owner.so +
-LoadModule authz_user_module modules/mod_authz_user.so +
-LoadModule autoindex_module modules/mod_autoindex.so +
-LoadModule cache_module modules/mod_cache.so +
-LoadModule cache_disk_module modules/mod_cache_disk.so +
-LoadModule data_module modules/mod_data.so +
-LoadModule dbd_module modules/mod_dbd.so +
-LoadModule deflate_module modules/mod_deflate.so +
-LoadModule dir_module modules/mod_dir.so +
-LoadModule dumpio_module modules/mod_dumpio.so +
-LoadModule echo_module modules/mod_echo.so +
-LoadModule env_module modules/mod_env.so +
-LoadModule expires_module modules/mod_expires.so +
-LoadModule ext_filter_module modules/mod_ext_filter.so +
-LoadModule filter_module modules/mod_filter.so +
-LoadModule headers_module modules/mod_headers.so +
-LoadModule include_module modules/mod_include.so +
-LoadModule info_module modules/mod_info.so +
-LoadModule log_config_module modules/mod_log_config.so +
-LoadModule logio_module modules/mod_logio.so +
-LoadModule mime_magic_module modules/mod_mime_magic.so +
-LoadModule mime_module modules/mod_mime.so +
-LoadModule negotiation_module modules/mod_negotiation.so +
-LoadModule remoteip_module modules/mod_remoteip.so +
-LoadModule reqtimeout_module modules/mod_reqtimeout.so +
-LoadModule rewrite_module modules/mod_rewrite.so +
-LoadModule setenvif_module modules/mod_setenvif.so +
-LoadModule slotmem_plain_module modules/mod_slotmem_plain.so +
-LoadModule slotmem_shm_module modules/mod_slotmem_shm.so +
-LoadModule socache_dbm_module modules/mod_socache_dbm.so +
-LoadModule socache_memcache_module modules/mod_socache_memcache.so +
-LoadModule socache_shmcb_module modules/mod_socache_shmcb.so +
-LoadModule status_module modules/mod_status.so +
-LoadModule substitute_module modules/mod_substitute.so +
-LoadModule suexec_module modules/mod_suexec.so +
-LoadModule unique_id_module modules/mod_unique_id.so +
-LoadModule unixd_module modules/mod_unixd.so +
-LoadModule userdir_module modules/mod_userdir.so +
-LoadModule version_module modules/mod_version.so +
-LoadModule vhost_alias_module modules/mod_vhost_alias.so +
-</code>+
  
-=====/etc/httpd/conf.d/local.conf =====+storage: 
 +  dbPath: /var/lib/mongo 
 +  journal: 
 +    enabled: true
  
-Afin de complémenter la configuration de base d'Apache, nous pouvons créer un fichier contenant nos directives dans le répertoire **/etc/httpd/conf.d/**Creéz donc le fichier **/etc/httpd/conf.d/local.conf** :+processManagement: 
 +  fork: true  # fork and run in background 
 +  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
  
-<code> +net: 
-[root@centos7 ~]# vi /etc/httpd/conf.d/local.conf +  port: 27017 
-[root@centos7 ~]# cat /etc/httpd/conf.d/local.conf +  bindIp: 127.0.0.1 
-ServerTokens OS +
-Timeout 60 +
-KeepAlive Off +
-MaxKeepAliveRequests 100 +
-KeepAliveTimeout 15 +
-<IfModule prefork.c> +
-StartServers       8 +
-MinSpareServers    5 +
-MaxSpareServers   20 +
-ServerLimit      256 +
-MaxClients       256 +
-MaxRequestsPerChild  4000 +
-</IfModule> +
-UseCanonicalName Off +
-AccessFileName .htaccess +
-HostnameLookups Off +
-ServerSignature On +
-AddLanguage ca .ca +
-AddLanguage cs .cz .cs +
-AddLanguage da .dk +
-AddLanguage de .de +
-AddLanguage el .el +
-AddLanguage en .en +
-AddLanguage eo .eo +
-AddLanguage es .es +
-AddLanguage et .et +
-AddLanguage fr .fr +
-AddLanguage he .he +
-AddLanguage hr .hr +
-AddLanguage it .it +
-AddLanguage ja .ja +
-AddLanguage ko .ko +
-AddLanguage ltz .ltz +
-AddLanguage nl .nl +
-AddLanguage nn .nn +
-AddLanguage no .no +
-AddLanguage pl .po +
-AddLanguage pt .pt +
-AddLanguage pt-BR .pt-br +
-AddLanguage ru .ru +
-AddLanguage sv .sv +
-AddLanguage zh-CN .zh-cn +
-AddLanguage zh-TW .zh-tw +
-AddHandler type-map var +
-LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW +
-ForceLanguagePriority Prefer Fallback +
-BrowserMatch "Mozilla/2" nokeepalive +
-BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 +
-BrowserMatch "RealPlayer 4\.0" force-response-1.0 +
-BrowserMatch "Java/1\.0" force-response-1.0 +
-BrowserMatch "JDK/1\.0" force-response-1.0 +
-BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully +
-BrowserMatch "MS FrontPage" redirect-carefully +
-BrowserMatch "^WebDrive" redirect-carefully +
-BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully +
-BrowserMatch "^gnome-vfs/1.0" redirect-carefully +
-BrowserMatch "^XML Spy" redirect-carefully +
-BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully +
-ServerName www.i2tch.loc:80 +
-ExtendedStatus On +
-<Location /server-status> +
-    SetHandler server-status +
-    Require ip 127.0.0.1  +
-</Location> +
-<Location /server-info> +
-    SetHandler server-info +
-    Require ip 127.0.0.1  +
-</Location>+
 </code> </code>
  
-====Les Directives du fichier /etc/httpd/conf.d/local.conf====+Dans ce fichier, sont notamment définit le lieu de stockage des données et des logs respectivement dans **/var/lib/mongo** et **/var/log/mongodb/mongod.log** par défaut.
  
-Dans ce fichier on trouve les directives suivantes :+====Le client Mongo====
  
-===ServerTokens===+Une manipulation intéressante à faire consiste à modifier le prompt du client mongo pour afficher la base de donnée courante. Par défaut le prompt est minimaliste :
  
-Cette directive indique le contenu de l'entête HTTP. La valeur peut être : Full | OS | Minor | Minimal | Major | Prod.+<code>></code>
  
-<file> +Pour connaître le base de donnée sur laquelle on travaille il convient de de taper "db"
-ServerTokens OS +
-</file>+
  
-===Timeout===+<code>>db 
 +test 
 +></code>
  
-Cette directive indique le nombre de secondes entre une requête et le timeout : +Créez donc le fichier $HOME/.mongorc.js :
- +
-<file> +
-Timeout 60 +
-</file> +
- +
-===KeepAlive=== +
- +
-Cette directive interdit plusieurs requêtes par connexion : +
- +
-<file> +
-KeepAlive Off +
-</file> +
- +
-===MaxKeepAliveRequests=== +
- +
-Cette directive fixe le nombre maximum de requêtes par connexion ( 0 = infinie ) : +
- +
-<file> +
-MaxKeepAliveRequests 100 +
-</file> +
- +
-===KeepAliveTimeout=== +
- +
-Cette directive fixe le nombre de seconds d'attente pour recevoir la requête suivante du même client sur la même connexion : +
- +
-<file> +
-KeepAliveTimeout 15 +
-</file> +
- +
-===StartServers, MinSpareServers et MaxSpareServers=== +
- +
-Ces directives contrôlent le nombre de processus serveur fils au lancement d'Apache, au minimum et au maximum. La valeur par défaut pour prefork de **%%StartServers%%** est de 5 : +
- +
-<file> +
-StartServers 8 +
-MinSpareServers 5 +
-MaxSpareServers 20 +
-</file> +
- +
-===ServerLimit=== +
- +
-Pour le module prefork, cette directive définie la valeur maximale de la directive **MaxRequestWorkers** (anciennement **MaxClients**) pour la durée de vie du processus Apache : +
- +
-<file> +
-ServerLimit 256 +
-</file> +
- +
-===MaxRequestWorkers=== +
- +
-Pour le module prefork, la directive **MaxRequestWorkers** indique le nombre maximal de processus fils qui seront lancés pour traiter les requêtes. Sa valeur par défaut est de 256 : +
- +
-<file> +
-MaxRequestWorkers 256 +
-</file> +
- +
-===MaxConnectionsPerChild=== +
- +
-La directive **MaxConnectionsPerChild** (anciennement **MaxRequestsPerChild**) fixe la limite du nombre de requêtes traitées par un processus fils avant que celui-ci expire. Si la valeur de **%%MaxRequestsPerChild%%** est 0, le processus n'expirera jamais : +
- +
-<file> +
-MaxConnectionsPerChild 4000 +
-</file> +
- +
-===UseCanonicalName=== +
- +
-Cette directive indique a apache comment construire les variables SERVER_NAME et SERVER_PORT. Quand la directive est On, Apache utilise la valeur de la directive **%%ServerName%%**. Quand la directive est Off, Apache utilise les valeurs fournies par le navigateur du client : +
- +
-<file> +
-UseCanonicalName Off +
-</file> +
- +
-===AccessFileName=== +
- +
-Cette directive indique le nom des fichiers de permissions a utiliser avec le fichier .htpasswd. +
- +
-<file> +
-AccessFileName .htaccess +
-</file> +
- +
-===HostnameLookups=== +
- +
-Cette directive autorise (On) ou désactive (Off) la résolution DNS pour la trace d'accès. +
- +
-<file> +
-HostnameLookups Off +
-</file> +
- +
-===ServerSignature=== +
- +
-Cette directive indique si la signature du serveur sera sur les pages d'erreurs:  On | Off | EMail +
- +
-<file> +
-ServerSignature On +
-</file> +
- +
-===AddLanguage=== +
- +
-La directive **%%AddLanguage%%** stipule l'extension du fichier à pour le code langage indiqué :  +
- +
-<file> +
-AddLanguage ca .ca +
-AddLanguage cs .cz .cs +
-AddLanguage da .dk +
-AddLanguage de .de +
-AddLanguage el .el +
-AddLanguage en .en +
-AddLanguage eo .eo +
-AddLanguage es .es +
-AddLanguage et .et +
-AddLanguage fr .fr +
-AddLanguage he .he +
-AddLanguage hr .hr +
-AddLanguage it .it +
-AddLanguage ja .ja +
-AddLanguage ko .ko +
-AddLanguage ltz .ltz +
-AddLanguage nl .nl +
-AddLanguage nn .nn +
-AddLanguage no .no +
-AddLanguage pl .po +
-AddLanguage pt .pt +
-AddLanguage pt-BR .pt-br +
-AddLanguage ru .ru +
-AddLanguage sv .sv +
-AddLanguage zh-CN .zh-cn +
-AddLanguage zh-TW .zh-tw +
-</file> +
- +
-===LanguagePriority=== +
- +
-Le module **mod_negotiation** fournit la négociation de contenus et est inclus dans Apache par défaut. Il est ainsi possible d'utiliser les informations fournies par le navigateur (préférences de langues, jeu de caractères, encodage et types de médias). Apache a besoin de connaître des informations à propos de chacune des variantes. Ceci peut être fait de deux manières : +
- +
-    * Réaliser un fichier *.var, une **Table de Types** qui précise les fichiers définissant les variantes, +
-    * Utiliser une recherche **%%MultiViews%%**. +
- +
-Dans le cas de l'utilisation des fichiers *.var, Apache en est informé par l'utilisation de la directive **%%AddHandler%%**. +
- +
-<file> +
-AddHandler type-map var +
-</file> +
- +
-Pour plus d'informations concernant **mod_negociation**, veuillez consulter **[[http://httpd.apache.org/docs/2.0/fr/content-negotiation.html|cette page]]** +
- +
-La directive **%%LanguagePriority%%** indique une liste de langues à utiliser par ordre de priorité de gauche à droite. Cette priorité joue dans le cas où Apache trouve **deux** ou **plusieurs** versions satisfaisantes du même document. En effet c'est la directive **%%ForceLanguagePriority%%**, utilisée avec la valeur **Prefer** qui indique à Apache d'utiliser le premier langue de la liste de priorité définit par **%%LanguagePriority%%**. La valeur **Fallback** indique à Apache que dans le cas où aucune version satisfaisante du document n'est trouvée, Apache doit utilisé la première version de la liste définit par **%%LanguagePriority%%** : +
- +
-<file> +
-LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW +
-ForceLanguagePriority Prefer Fallback +
-</file> +
- +
-===mod_setenvif=== +
- +
-**mod_setenvif** permet de définir des variables d'environnement.  +
- +
-Le variable **downgrade-1.0** oblige Apache à traiter la requête comme du HTTP/1.0 même si elle a été construite sur une norme plus récente.  +
- +
-Le variable **force-response-1.0**, initialement implémenté pour résoudre un problème avec les serveurs mandataires d'AOL, oblige Apache à n'envoyer que des réponses en HTTP/1.0 aux clients.  +
- +
-Le variable **nokeepalive** désactive **Keep-Alive**, une extension à HTTP/1.0 qui permet d'envoyer de requêtes multiples sur la même connexion TCP.  +
- +
-Le variable **redirect-carefully** rend le serveur plus attentif quand il doit envoyer une redirection au client. Cette variable est habituellement utilisée quand un client a un problème connu pour gérer les redirections.  +
- +
-<file> +
-BrowserMatch "Mozilla/2" nokeepalive +
-BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 +
-BrowserMatch "RealPlayer 4\.0" force-response-1.0 +
-BrowserMatch "Java/1\.0" force-response-1.0 +
-BrowserMatch "JDK/1\.0" force-response-1.0 +
-BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully +
-BrowserMatch "MS FrontPage" redirect-carefully +
-BrowserMatch "^WebDrive" redirect-carefully +
-BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully +
-BrowserMatch "^gnome-vfs/1.0" redirect-carefully +
-BrowserMatch "^XML Spy" redirect-carefully +
-BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully +
-</file> +
- +
-===ServerName=== +
- +
-Cette directive indique le nom du serveur. Décommentez cette directive et modifiez-la ainsi : +
- +
-<file> +
-ServerName www.i2tch.loc:80 +
-</file> +
- +
-===mod-status=== +
- +
-Ce module permet à l'administrateur d'Apache de visualiser des informations sur la charge du serveur (requêtes, processus etc.). La directive  **%%ExtendedStatus%%** doit être **On** pour obtenir le maximum de renseignements. Pour activer l'utilisation de ce module, ajoutez les lignes suivantes : +
- +
-<file> +
-ExtendedStatus On +
- +
-<Location /server-status> +
-    SetHandler server-status +
-    Require ip 127.0.0.1  +
-</Location> +
-</file> +
- +
-===mod_info=== +
- +
-Ce module permet d'obtenir une vue d'ensemble de la configuration courante du serveur dont la liste des modules installés et des directives des fichiers de configuration du serveur. Pour activer ce module ajoutez les lignes suivantes : +
- +
-<file> +
-<Location /server-info> +
-    SetHandler server-info +
-    Require ip 127.0.0.1  +
-</Location> +
-</file> +
- +
-====Application de la Configuration==== +
- +
-Editez le fichier **/etc/hosts** et ajoutez la ligne suivante: +
- +
-<file> +
-10.0.2.15       i2tch.loc +
-10.0.2.15       www.i2tch.loc +
-</file> +
- +
-Re-démarrez le serveur httpd :+
  
 <code> <code>
-[root@centos7 ~]# systemctl restart httpd +[root@centos7 ~]# vi $HOME/.mongorc.js 
-[root@centos7 ~]# systemctl status httpd +[root@centos7 ~]# cat $HOME/.mongorc.js 
-● httpd.service - The Apache HTTP Server +prompt = function(){return db+">";}
-   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) +
-   Active: active (runningsince Thu 2017-08-24 10:19:38 CEST; 9s ago +
-     Docs: man:httpd(8) +
-           man:apachectl(8) +
-  Process: 17996 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS) +
-  Process: 21235 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS) +
- Main PID: 18013 (httpd) +
-   Status: "Total requests: 0Current requests/sec: 0; Current traffic:   0 B/sec" +
-   CGroup: /system.slice/httpd.service +
-           ├─18013 /usr/sbin/httpd -DFOREGROUND +
-           ├─18014 /usr/sbin/httpd -DFOREGROUND +
-           ├─18015 /usr/sbin/httpd -DFOREGROUND +
-           ├─18016 /usr/sbin/httpd -DFOREGROUND +
-           ├─18017 /usr/sbin/httpd -DFOREGROUND +
-           ├─18018 /usr/sbin/httpd -DFOREGROUND +
-           ├─18019 /usr/sbin/httpd -DFOREGROUND +
-           ├─18020 /usr/sbin/httpd -DFOREGROUND +
-           └─18021 /usr/sbin/httpd -DFOREGROUND +
- +
-Aug 24 10:19:38 centos7.i2tch.loc systemd[1]: Starting The Apache HTTP Server... +
-Aug 24 10:19:38 centos7.i2tch.loc systemd[1]: Started The Apache HTTP Server.+
 </code> </code>
  
-=====Configuration sous Debian 8===== +Constatez que la base de données courante se trouve dans le prompt :
- +
-Sous Debian 8 le fichier de configuration principal d'apache est **/etc/apache2/apache2.conf**. Cette configuration est complémentée par les directives se trouvant dans les fichiers contenus dans les répertoires **/etc/apache2/conf-enabled** et **/etc/apache2/mods-enabled** ainsi que par les fichiers **/etc/apache2/envvars**, **/etc/apache2/magic** et **/etc/apache2/ports.conf** :+
  
 <code> <code>
-root@debian8:~# ls -l /etc/apache2/ +[root@centos7 ~]mongo 
-total 80 +MongoDB shell version3.2.16 
--rw-r--r-- 1 root root  7115 Mar 31 10:17 apache2.conf +connecting totest 
-drwxr-xr-x root root  4096 Aug 27 11:08 conf-available +Server has startup warnings:  
-drwxr-xr-x 2 root root  4096 Aug 27 11:08 conf-enabled +2017-09-18T13:46:09.416+0200 I CONTROL  [initandlisten]  
--rw-r--r-- 1 root root  1782 Mar 31 10:17 envvars +2017-09-18T13:46:09.416+0200 I CONTROL  [initandlisten] ** WARNINGsoft rlimits too lowrlimits set to 4096 processes, 64000 filesNumber of processes should be at least 32000 : 0.5 times number of files
--rw-r--r-- 1 root root 31063 Mar 30 16:07 magic +test>
-drwxr-xr-x 2 root root 12288 Aug 27 11:08 mods-available +
-drwxr-xr-x 2 root root  4096 Aug 27 11:08 mods-enabled +
--rw-r--r-- 1 root root   320 Mar 30 16:07 ports.conf +
-drwxr-xr-x 2 root root  4096 Aug 27 11:08 sites-available +
-drwxr-xr-x 2 root root  4096 Aug 27 11:08 sites-enabled +
-root@debian8:~# +
-root@debian8:~# ls -lR /etc/apache2 +
-/etc/apache2: +
-total 80 +
--rw-r--r-- 1 root root  7115 Mar 31 10:17 apache2.conf +
-drwxr-xr-x 2 root root  4096 Aug 27 11:08 conf-available +
-drwxr-xr-x 2 root root  4096 Aug 27 11:08 conf-enabled +
--rw-r--r-- 1 root root  1782 Mar 31 10:17 envvars +
--rw-r--r-- 1 root root 31063 Mar 30 16:07 magic +
-drwxr-xr-x 2 root root 12288 Aug 27 11:08 mods-available +
-drwxr-xr-x 2 root root  4096 Aug 27 11:08 mods-enabled +
--rw-r--r-- 1 root root   320 Mar 30 16:07 ports.conf +
-drwxr-xr-x 2 root root  4096 Aug 27 11:08 sites-available +
-drwxr-xr-x 2 root root  4096 Aug 27 11:08 sites-enabled +
- +
-/etc/apache2/conf-available: +
-total 24 +
--rw-r--r-- 1 root root  315 Mar 30 16:07 charset.conf +
--rw-r--r-- 1 root root  127 Jul 29  2013 javascript-common.conf +
--rw-r--r-- 1 root root 3224 Mar 30 16:07 localized-error-pages.conf +
--rw-r--r-- 1 root root  189 Mar 30 16:07 other-vhosts-access-log.conf +
--rw-r--r-- 1 root root 2190 Mar 31 10:17 security.conf +
--rw-r--r-- 1 root root  455 Mar 30 16:07 serve-cgi-bin.conf +
- +
-/etc/apache2/conf-enabled: +
-total 0 +
-lrwxrwxrwx 1 root root 30 Aug 27 11:08 charset.conf -> ../conf-available/charset.conf +
-lrwxrwxrwx 1 root root 44 Aug 27 11:08 localized-error-pages.conf -> ../conf-available/localized-error-pages.conf +
-lrwxrwxrwx 1 root root 46 Aug 27 11:08 other-vhosts-access-log.conf -> ../conf-available/other-vhosts-access-log.conf +
-lrwxrwxrwx 1 root root 31 Aug 27 11:08 security.conf -> ../conf-available/security.conf +
-lrwxrwxrwx 1 root root 36 Aug 27 11:08 serve-cgi-bin.conf -> ../conf-available/serve-cgi-bin.conf +
- +
-/etc/apache2/mods-available: +
-total 528 +
--rw-r--r-- 1 root root  100 Mar 30 16:07 access_compat.load +
--rw-r--r-- 1 root root  377 Mar 30 16:07 actions.conf +
--rw-r--r-- 1 root root   66 Mar 30 16:07 actions.load +
--rw-r--r-- 1 root root  843 Mar 30 16:07 alias.conf +
--rw-r--r-- 1 root root   62 Mar 30 16:07 alias.load +
--rw-r--r-- 1 root root   76 Mar 30 16:07 allowmethods.load +
--rw-r--r-- 1 root root   76 Mar 30 16:07 asis.load +
--rw-r--r-- 1 root root   94 Mar 30 16:07 auth_basic.load +
--rw-r--r-- 1 root root   96 Mar 30 16:07 auth_digest.load +
--rw-r--r-- 1 root root  100 Mar 30 16:07 auth_form.load +
--rw-r--r-- 1 root root   72 Mar 30 16:07 authn_anon.load +
--rw-r--r-- 1 root root   72 Mar 30 16:07 authn_core.load +
--rw-r--r-- 1 root root   85 Mar 30 16:07 authn_dbd.load +
--rw-r--r-- 1 root root   70 Mar 30 16:07 authn_dbm.load +
--rw-r--r-- 1 root root   72 Mar 30 16:07 authn_file.load +
--rw-r--r-- 1 root root   78 Mar 30 16:07 authn_socache.load +
--rw-r--r-- 1 root root   74 Mar 30 16:07 authnz_fcgi.load +
--rw-r--r-- 1 root root   90 Mar 30 16:07 authnz_ldap.load +
--rw-r--r-- 1 root root   72 Mar 30 16:07 authz_core.load +
--rw-r--r-- 1 root root   96 Mar 30 16:07 authz_dbd.load +
--rw-r--r-- 1 root root   92 Mar 30 16:07 authz_dbm.load +
--rw-r--r-- 1 root root  104 Mar 30 16:07 authz_groupfile.load +
--rw-r--r-- 1 root root   94 Mar 30 16:07 authz_host.load +
--rw-r--r-- 1 root root   74 Mar 30 16:07 authz_owner.load +
--rw-r--r-- 1 root root   94 Mar 30 16:07 authz_user.load +
--rw-r--r-- 1 root root 3374 Mar 30 16:07 autoindex.conf +
--rw-r--r-- 1 root root   70 Mar 30 16:07 autoindex.load +
--rw-r--r-- 1 root root   64 Mar 30 16:07 buffer.load +
--rw-r--r-- 1 root root  889 Mar 30 16:07 cache_disk.conf +
--rw-r--r-- 1 root root   89 Mar 30 16:07 cache_disk.load +
--rw-r--r-- 1 root root   62 Mar 30 16:07 cache.load +
--rw-r--r-- 1 root root   95 Mar 30 16:07 cache_socache.load +
--rw-r--r-- 1 root root  115 Mar 30 16:07 cgid.conf +
--rw-r--r-- 1 root root   60 Mar 30 16:07 cgid.load +
--rw-r--r-- 1 root root   58 Mar 30 16:07 cgi.load +
--rw-r--r-- 1 root root   76 Mar 30 16:07 charset_lite.load +
--rw-r--r-- 1 root root   60 Mar 30 16:07 data.load +
--rw-r--r-- 1 root root   83 Mar 30 16:07 dav_fs.conf +
--rw-r--r-- 1 root root   79 Mar 30 16:07 dav_fs.load +
--rw-r--r-- 1 root root   58 Mar 30 16:07 dav.load +
--rw-r--r-- 1 root root   68 Mar 30 16:07 dav_lock.load +
--rw-r--r-- 1 root root   58 Mar 30 16:07 dbd.load +
--rw-r--r-- 1 root root  522 Mar 31 09:45 deflate.conf +
--rw-r--r-- 1 root root   84 Mar 30 16:07 deflate.load +
--rw-r--r-- 1 root root   64 Mar 30 16:07 dialup.load +
--rw-r--r-- 1 root root  157 Mar 30 16:07 dir.conf +
--rw-r--r-- 1 root root   58 Mar 30 16:07 dir.load +
--rw-r--r-- 1 root root   64 Mar 30 16:07 dump_io.load +
--rw-r--r-- 1 root root   60 Mar 30 16:07 echo.load +
--rw-r--r-- 1 root root   58 Mar 30 16:07 env.load +
--rw-r--r-- 1 root root   66 Mar 30 16:07 expires.load +
--rw-r--r-- 1 root root   72 Mar 30 16:07 ext_filter.load +
--rw-r--r-- 1 root root   89 Mar 30 16:07 file_cache.load +
--rw-r--r-- 1 root root   64 Mar 30 16:07 filter.load +
--rw-r--r-- 1 root root   66 Mar 30 16:07 headers.load +
--rw-r--r-- 1 root root  176 Mar 30 16:07 heartbeat.load +
--rw-r--r-- 1 root root  182 Mar 30 16:07 heartmonitor.load +
--rw-r--r-- 1 root root   62 Mar 30 16:07 ident.load +
--rw-r--r-- 1 root root   82 Mar 30 16:07 include.load +
--rw-r--r-- 1 root root  402 Mar 30 16:07 info.conf +
--rw-r--r-- 1 root root   60 Mar 30 16:07 info.load +
--rw-r--r-- 1 root root  116 Mar 30 16:07 lbmethod_bybusyness.load +
--rw-r--r-- 1 root root  116 Mar 30 16:07 lbmethod_byrequests.load +
--rw-r--r-- 1 root root  114 Mar 30 16:07 lbmethod_bytraffic.load +
--rw-r--r-- 1 root root  114 Mar 30 16:07 lbmethod_heartbeat.load +
--rw-r--r-- 1 root root  121 Mar 30 16:07 ldap.conf +
--rw-r--r-- 1 root root   60 Mar 30 16:07 ldap.load +
--rw-r--r-- 1 root root   70 Mar 30 16:07 log_debug.load +
--rw-r--r-- 1 root root   76 Mar 30 16:07 log_forensic.load +
--rw-r--r-- 1 root root   58 Mar 30 16:07 lua.load +
--rw-r--r-- 1 root root   62 Mar 30 16:07 macro.load +
--rw-r--r-- 1 root root 7639 Mar 31 09:45 mime.conf +
--rw-r--r-- 1 root root   60 Mar 30 16:07 mime.load +
--rw-r--r-- 1 root root  120 Mar 30 16:07 mime_magic.conf +
--rw-r--r-- 1 root root   72 Mar 30 16:07 mime_magic.load +
--rw-r--r-- 1 root root  668 Mar 30 16:07 mpm_event.conf +
--rw-r--r-- 1 root root  106 Mar 30 16:07 mpm_event.load +
--rw-r--r-- 1 root root  571 Mar 30 16:07 mpm_prefork.conf +
--rw-r--r-- 1 root root  108 Mar 30 16:07 mpm_prefork.load +
--rw-r--r-- 1 root root  836 Mar 30 16:07 mpm_worker.conf +
--rw-r--r-- 1 root root  107 Mar 30 16:07 mpm_worker.load +
--rw-r--r-- 1 root root  724 Mar 30 16:07 negotiation.conf +
--rw-r--r-- 1 root root   74 Mar 30 16:07 negotiation.load +
--rw-r--r-- 1 root root   87 Mar 30 16:07 proxy_ajp.load +
--rw-r--r-- 1 root root  347 Mar 30 16:07 proxy_balancer.conf +
--rw-r--r-- 1 root root  115 Mar 30 16:07 proxy_balancer.load +
--rw-r--r-- 1 root root  822 Mar 30 16:07 proxy.conf +
--rw-r--r-- 1 root root   95 Mar 30 16:07 proxy_connect.load +
--rw-r--r-- 1 root root   95 Mar 30 16:07 proxy_express.load +
--rw-r--r-- 1 root root   89 Mar 30 16:07 proxy_fcgi.load +
--rw-r--r-- 1 root root   93 Mar 30 16:07 proxy_fdpass.load +
--rw-r--r-- 1 root root  189 Mar 30 16:07 proxy_ftp.conf +
--rw-r--r-- 1 root root   87 Mar 30 16:07 proxy_ftp.load +
--rw-r--r-- 1 root root 2511 Mar 30 16:07 proxy_html.conf +
--rw-r--r-- 1 root root   89 Mar 31 10:17 proxy_html.load +
--rw-r--r-- 1 root root   89 Mar 30 16:07 proxy_http.load +
--rw-r--r-- 1 root root   62 Mar 30 16:07 proxy.load +
--rw-r--r-- 1 root root   89 Mar 30 16:07 proxy_scgi.load +
--rw-r--r-- 1 root root   97 Mar 30 16:07 proxy_wstunnel.load +
--rw-r--r-- 1 root root   85 Mar 30 16:07 ratelimit.load +
--rw-r--r-- 1 root root   70 Mar 30 16:07 reflector.load +
--rw-r--r-- 1 root root   68 Mar 30 16:07 remoteip.load +
--rw-r--r-- 1 root root 1190 Mar 30 16:07 reqtimeout.conf +
--rw-r--r-- 1 root root   72 Mar 30 16:07 reqtimeout.load +
--rw-r--r-- 1 root root   66 Mar 30 16:07 request.load +
--rw-r--r-- 1 root root   66 Mar 30 16:07 rewrite.load +
--rw-r--r-- 1 root root   58 Mar 30 16:07 sed.load +
--rw-r--r-- 1 root root   99 Mar 30 16:07 session_cookie.load +
--rw-r--r-- 1 root root   99 Mar 30 16:07 session_crypto.load +
--rw-r--r-- 1 root root   93 Mar 30 16:07 session_dbd.load +
--rw-r--r-- 1 root root   66 Mar 30 16:07 session.load +
--rw-r--r-- 1 root root 1280 Mar 30 16:07 setenvif.conf +
--rw-r--r-- 1 root root   68 Mar 30 16:07 setenvif.load +
--rw-r--r-- 1 root root   78 Mar 30 16:07 slotmem_plain.load +
--rw-r--r-- 1 root root   74 Mar 30 16:07 slotmem_shm.load +
--rw-r--r-- 1 root root   74 Mar 30 16:07 socache_dbm.load +
--rw-r--r-- 1 root root   84 Mar 30 16:07 socache_memcache.load +
--rw-r--r-- 1 root root   78 Mar 30 16:07 socache_shmcb.load +
--rw-r--r-- 1 root root   66 Mar 30 16:07 speling.load +
--rw-r--r-- 1 root root 3110 Mar 30 16:07 ssl.conf +
--rw-r--r-- 1 root root   97 Mar 30 16:07 ssl.load +
--rw-r--r-- 1 root root  749 Mar 30 16:07 status.conf +
--rw-r--r-- 1 root root   64 Mar 30 16:07 status.load +
--rw-r--r-- 1 root root   72 Mar 30 16:07 substitute.load +
--rw-r--r-- 1 root root   64 Mar 30 16:07 suexec.load +
--rw-r--r-- 1 root root   70 Mar 30 16:07 unique_id.load +
--rw-r--r-- 1 root root  423 Mar 31 10:17 userdir.conf +
--rw-r--r-- 1 root root   66 Mar 30 16:07 userdir.load +
--rw-r--r-- 1 root root   70 Mar 30 16:07 usertrack.load +
--rw-r--r-- 1 root root   74 Mar 30 16:07 vhost_alias.load +
--rw-r--r-- 1 root root   66 Mar 30 16:07 xml2enc.load +
- +
-/etc/apache2/mods-enabled: +
-total 0 +
-lrwxrwxrwx 1 root root 36 Aug 27 11:08 access_compat.load -> ../mods-available/access_compat.load +
-lrwxrwxrwx 1 root root 28 Aug 27 11:08 alias.conf -../mods-available/alias.conf +
-lrwxrwxrwx 1 root root 28 Aug 27 11:08 alias.load -> ../mods-available/alias.load +
-lrwxrwxrwx 1 root root 33 Aug 27 11:08 auth_basic.load -> ../mods-available/auth_basic.load +
-lrwxrwxrwx 1 root root 33 Aug 27 11:08 authn_core.load -> ../mods-available/authn_core.load +
-lrwxrwxrwx 1 root root 33 Aug 27 11:08 authn_file.load -> ../mods-available/authn_file.load +
-lrwxrwxrwx 1 root root 33 Aug 27 11:08 authz_core.load -> ../mods-available/authz_core.load +
-lrwxrwxrwx 1 root root 33 Aug 27 11:08 authz_host.load -> ../mods-available/authz_host.load +
-lrwxrwxrwx 1 root root 33 Aug 27 11:08 authz_user.load -> ../mods-available/authz_user.load +
-lrwxrwxrwx 1 root root 32 Aug 27 11:08 autoindex.conf -> ../mods-available/autoindex.conf +
-lrwxrwxrwx 1 root root 32 Aug 27 11:08 autoindex.load -> ../mods-available/autoindex.load +
-lrwxrwxrwx 1 root root 30 Aug 27 11:08 deflate.conf -> ../mods-available/deflate.conf +
-lrwxrwxrwx 1 root root 30 Aug 27 11:08 deflate.load -> ../mods-available/deflate.load +
-lrwxrwxrwx 1 root root 26 Aug 27 11:08 dir.conf -> ../mods-available/dir.conf +
-lrwxrwxrwx 1 root root 26 Aug 27 11:08 dir.load -> ../mods-available/dir.load +
-lrwxrwxrwx 1 root root 26 Aug 27 11:08 env.load -> ../mods-available/env.load +
-lrwxrwxrwx 1 root root 29 Aug 27 11:08 filter.load -> ../mods-available/filter.load +
-lrwxrwxrwx 1 root root 27 Aug 27 11:08 mime.conf -> ../mods-available/mime.conf +
-lrwxrwxrwx 1 root root 27 Aug 27 11:08 mime.load -> ../mods-available/mime.load +
-lrwxrwxrwx 1 root root 32 Aug 27 11:08 mpm_event.conf -> ../mods-available/mpm_event.conf +
-lrwxrwxrwx 1 root root 32 Aug 27 11:08 mpm_event.load -> ../mods-available/mpm_event.load +
-lrwxrwxrwx 1 root root 34 Aug 27 11:08 negotiation.conf -> ../mods-available/negotiation.conf +
-lrwxrwxrwx 1 root root 34 Aug 27 11:08 negotiation.load -> ../mods-available/negotiation.load +
-lrwxrwxrwx 1 root root 33 Aug 27 11:08 reqtimeout.conf -> ../mods-available/reqtimeout.conf +
-lrwxrwxrwx 1 root root 33 Aug 27 11:08 reqtimeout.load -> ../mods-available/reqtimeout.load +
-lrwxrwxrwx 1 root root 31 Aug 27 11:08 setenvif.conf -> ../mods-available/setenvif.conf +
-lrwxrwxrwx 1 root root 31 Aug 27 11:08 setenvif.load -> ../mods-available/setenvif.load +
-lrwxrwxrwx 1 root root 29 Aug 27 11:08 status.conf -> ../mods-available/status.conf +
-lrwxrwxrwx 1 root root 29 Aug 27 11:08 status.load -> ../mods-available/status.load +
- +
-/etc/apache2/sites-available: +
-total 12 +
--rw-r--r-- 1 root root 1332 Mar 30 16:07 000-default.conf +
--rw-r--r-- 1 root root 6437 Mar 31 10:17 default-ssl.conf +
- +
-/etc/apache2/sites-enabled: +
-total 0 +
-lrwxrwxrwx 1 root root 35 Aug 27 11:08 000-default.conf -> ../sites-available/000-default.conf+
 </code> </code>
  
-===/etc/apache2/apache2.conf===+====Autres Clients Mongodb====
  
-<code> +===Interfaces graphiques===
-root@debian8:~# cat /etc/apache2/apache2.conf  +
-# This is the main Apache server configuration file.  It contains the +
-# configuration directives that give the server its instructions. +
-# See http://httpd.apache.org/docs/2.4/ for detailed information about +
-# the directives and /usr/share/doc/apache2/README.Debian about Debian specific +
-# hints. +
-+
-+
-# Summary of how the Apache 2 configuration works in Debian: +
-# The Apache 2 web server configuration in Debian is quite different to +
-# upstream's suggested way to configure the web server. This is because Debian'+
-# default Apache2 installation attempts to make adding and removing modules, +
-# virtual hosts, and extra configuration directives as flexible as possible, in +
-# order to make automating the changes and administering the server as easy as +
-# possible.+
  
-# It is split into several files forming the configuration hierarchy outlined +==RoboMongo==
-# below, all located in the /etc/apache2/ directory: +
-+
-# /etc/apache2/ +
-# |-- apache2.conf +
-# | `--  ports.conf +
-# |-- mods-enabled +
-# | |-- *.load +
-# | `-- *.conf +
-# |-- conf-enabled +
-# | `-- *.conf +
-# `-- sites-enabled +
-# `-- *.conf +
-+
-+
-# * apache2.conf is the main configuration file (this file). It puts the pieces +
-#   together by including all remaining configuration files when starting up the +
-#   web server. +
-+
-# * ports.conf is always included from the main configuration file. It is +
-#   supposed to determine listening ports for incoming connections which can be +
-#   customized anytime. +
-+
-# * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/ +
-#   directories contain particular configuration snippets which manage modules, +
-#   global configuration fragments, or virtual host configurations, +
-#   respectively. +
-+
-#   They are activated by symlinking available configuration files from their +
-#   respective *-available/ counterparts. These should be managed by using our +
-#   helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See +
-#   their respective man pages for detailed information. +
-+
-# * The binary is called apache2. Due to the use of environment variables, in +
-#   the default configuration, apache2 needs to be started/stopped with +
-#   /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not +
-#   work with the default configuration.+
  
 +**RoboMongo** est un client graphique disponible pour toutes les plate-formes sur le site **[[https://robomongo.org/]]**. L’installation est très simple :
  
-# Global configuration +{{ :elearning:workbooks:debian:6:senior:robomongo.png?nolink&600 |}}
-#+
  
-# +<WRAP center round important> 
-# ServerRoot: The top of the directory tree under which the server'+**A Faire** - Installez RoboMongo et connectez-vous à MongoDB
-# configuration, error, and log files are kept+</WRAP>
-+
-# NOTE!  If you intend to place this on an NFS (or otherwise network) +
-# mounted filesystem then please read the Mutex documentation (available +
-# at <URL:http://httpd.apache.org/docs/2.4/mod/core.html#mutex>); +
-# you will save yourself a lot of trouble. +
-+
-# Do NOT add a slash at the end of the directory path. +
-+
-#ServerRoot "/etc/apache2"+
  
-+==RockMongo==
-# The accept serialization lock file MUST BE STORED ON A LOCAL DISK. +
-+
-Mutex file:${APACHE_LOCK_DIR} default+
  
-+**RockMongo** est une application PHP disponible sur le site **[[http://www.rockmongo.com]]** et qui nécessite un serveur Apache/PHP. De plus, il est nécessaire d’installer l’extension PHP de connexion à MongoDB.
-# PidFileThe file in which the server should record its process +
-# identification number when it starts. +
-# This needs to be set in /etc/apache2/envvars +
-+
-PidFile ${APACHE_PID_FILE}+
  
-+{{ :elearning:workbooks:debian:6:senior:rockmongo-mongodb-manager.jpg?nolink&600 |}}
-# TimeoutThe number of seconds before receives and sends time out. +
-+
-Timeout 300+
  
-+==Genghis==
-# KeepAlive: Whether or not to allow persistent connections (more than +
-# one request per connection). Set to "Off" to deactivate. +
-+
-KeepAlive On+
  
-+**Genghis** est une interface d'administration de bases de données NoSQL sous MongoDB permettant une lecture adaptée à chaque périphérique. Il s'agit d'une interface semblable a l'outil phpMyAdmin :
-# MaxKeepAliveRequestsThe maximum number of requests to allow +
-# during a persistent connection. Set to 0 to allow an unlimited amount. +
-# We recommend you leave this number high, for maximum performance. +
-+
-MaxKeepAliveRequests 100+
  
-+{{ :elearning:workbooks:debian:6:senior:10.png?nolink&600 |}}
-# KeepAliveTimeoutNumber of seconds to wait for the next request from the +
-# same client on the same connection. +
-+
-KeepAliveTimeout 5+
  
 +====Les API pour MongoDB (Application Programming Interface)====
  
-# These need to be set in /etc/apache2/envvars +===Pour le langage Java===
-User ${APACHE_RUN_USER} +
-Group ${APACHE_RUN_GROUP}+
  
-+**Java-MongoDB-Driver** est le pilote Java pris en charge pour MongoDB :
-# HostnameLookupsLog the names of clients or just their IP addresses +
-# e.g., www.apache.org (on) or 204.62.129.132 (off). +
-# The default is off because it'd be overall better for the net if people +
-# had to knowingly turn this feature on, since enabling it means that +
-# each client request will result in AT LEAST one lookup request to the +
-# nameserver. +
-+
-HostnameLookups Off+
  
-# ErrorLog: The location of the error log file+  * **com.mongodb** - il s'agit du paquet de base permettant de créer une connexion client à une instance en cours d' exécution mongod 
-# If you do not specify an ErrorLog directive within a <VirtualHost> +  * **com.mongodb.client** - ce paquet permet l'accès à une base de données MongoDB
-# container, error messages relating to that virtual host will be +
-# logged here.  If you *dodefine an error logfile for a <VirtualHost> +
-# container, that host's errors will be logged there and not here. +
-+
-ErrorLog ${APACHE_LOG_DIR}/error.log+
  
-+On se connecte à une instance MongoDB en cours d' exécution sur le localhost (port par défaut 27017)
-# LogLevel: Control the severity of messages logged to the error_log. +
-# Available values: trace8, ..., trace1, debug, info, notice, warn, +
-# error, crit, alert, emerg. +
-# It is also possible to configure the log level for particular modules, e.g. +
-# "LogLevel info ssl:warn" +
-+
-LogLevel warn+
  
-# Include module configuration: +Pour gérer les documents dans l'application, on utilise les paquets suivants :
-IncludeOptional mods-enabled/*.load +
-IncludeOptional mods-enabled/*.conf+
  
-# Include list of ports to listen on +  * org.bson.Document 
-Include ports.conf+  * com.mongodb.MongoClient 
 +  * com.mongodb.client.MongoCollection 
 +  * com.mongodb.client.MongoDatabase
  
 +===Pour le langage C++===
  
-# Sets the default security model of the Apache2 HTTPD server. It does +**mongo-cxx-driver** permet de se connecter à une instance mongod et de créer une connexion client à une instance en cours d'exécution mongod.
-# not allow access to the root filesystem outside of /usr/share and /var/www. +
-# The former is used by web applications packaged in Debian, +
-# the latter may be used for local directories served by the web server. If +
-# your system is serving content from a sub-directory in /srv you must allow +
-# access here, or in any related virtual host. +
-<Directory /> +
- Options FollowSymLinks +
- AllowOverride None +
- Require all denied +
-</Directory>+
  
-<Directory /usr/share> +  * **La librairie bsoncxx** permet de gérer les documents.
- AllowOverride None +
- Require all granted +
-</Directory>+
  
-<Directory /var/www/> +Pour gérer les applications, on doit inclure bson/bson.h dans le fichier code de l'application afin de pouvoir gérer les documents.
- Options Indexes FollowSymLinks +
- AllowOverride None +
- Require all granted +
-</Directory>+
  
-#<Directory /srv/> +=====Structure des Données=====
-# Options Indexes FollowSymLinks +
-# AllowOverride None +
-# Require all granted +
-#</Directory>+
  
 +====Notions de Documents====
  
 +On associe les documents aux bases de données orientées documents qui sont destinées aux applications qui gèrent des documents. Ce type de bases de données peut être ou non une sur-couche d'une base de données relationnelle.
  
 +Dans un système de base de données relationnelles, les informations sont stockées par ligne dans des tables. Ces tables sont mises en relation en utilisants des clés primaires et étrangères. Or dans MongoDb, l'information est modélisée sur un document au format BSON basé sur JSON (Javascript Object Notation).
  
-# AccessFileName: The name of the file to look for in each directory +MongoDB ne nécessite donc pas de schéma prédéfini comme en SQL, il n'est pas nécessaire par exemple de définir des colonnes avec un nom et un type et on peut insérer n'importe quel document BSONLors de l'insertion d'un document, MongoDB ajoute automatiquement un index nommé par défaut **_id**La méthode insert retourne l'identifiant du document inséré.
-# for additional configuration directives See also the AllowOverride +
-# directive. +
-+
-AccessFileName .htaccess+
  
-+De plus, contrairement aux bases de données SQL, il n'est pas nécessaire de faire des requêtes avec des jointures pour connaitre des informationsDans MongoDb, il suffit de lire le document qui nous intéresse, d'où l'avantage de modéliser les données sur un document.
-# The following lines prevent .htaccess and .htpasswd files from being +
-# viewed by Web clients. +
-+
-<FilesMatch "^\.ht"> +
- Require all denied +
-</FilesMatch>+
  
 +====Notions de Collections====
  
-+Le terme collection est issu du monde NoSQL et correspond par analogie à la notion de table dans les bases de données relationnelles (MySQLPosgreSQL, Microsoft Access, Oracle, etc.)Une collection permet de stocker des documents, notion analogue à celle de l'enregistrement.
-# The following directives define some format nicknames for use with +
-# a CustomLog directive. +
-+
-# These deviate from the Common Log Format definitions in that they use %O +
-(the actual bytes sent including headers) instead of %b (the size of the +
-# requested file)because the latter makes it impossible to detect partial +
-# requests. +
-+
-# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended. +
-# Use mod_remoteip instead. +
-+
-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+
  
-# Include of directories ignores editorsand dpkg's backup files, +En comparant le schéma de structure d'une base de MongoDB à celui d'une base de donnée relationelle comme SQLon peut faire le parallèle suivant:
-# see README.Debian for details.+
  
-# Include generic snippets of statements +^ Base de données relationnelle (SQL) ^ Base de données NoSQL (MongoDB) ^ 
-IncludeOptional conf-enabled/*.conf+|  database  |  database 
 +|  table  |  collection 
 +|  row  |  document où document BSON  | 
 +|  column  |  field  | 
 +|  index  |  index  | 
 +|  primary key  |  primary key  |
  
-# Include the virtual host configurations: +Pour avoir un apercu, on peut définir par exemple 2 documents comme ceci:
-IncludeOptional sites-enabled/*.conf +
- +
-# vim: syntax=apache ts=4 sw=4 sts=4 sr noet +
-</code> +
- +
-===/etc/apache2/conf-available/charset.conf===+
  
 <code> <code>
-root@debian8:~# cat /etc/apache2/conf-available/charset.conf +{_id"Her"acteurs : [{nom:"Johansson", prenom:"Scarlett"}, {nom:"Phoenix", prenom:"Joaquim"}]} 
-# Read the documentation before enabling AddDefaultCharset. +{_id: "Avengers", acteurs : [{nom:"Johansson", prenom:"Scarlett"}]}
-# In generalit is only a good idea if you know that all your files +
-# have this encoding. It will override any encoding given in the files +
-# in meta http-equiv or xml encoding tags. +
- +
-#AddDefaultCharset UTF-8 +
- +
-# vimsyntax=apache ts=4 sw=4 sts=4 sr noet+
 </code> </code>
  
-===/etc/apache2/conf-available/localized-error-pages.conf===+Dans l'exemple ci-dessus, on peut voir que l'actrice **[{nom:"Johansson", prenom:"Scarlett"}]** est dupliquée. Dans le monde NoSQL, on n'hésite pas à dénormaliser le schéma de la base de données pour favoriser les performances à la lecture. L'important est de savoir quelles requêtes seront faites pour décider du format des documents.
  
-<code> +====Le Format JSON====
-root@debian8:~# cat /etc/apache2/conf-available/localized-error-pages.conf +
-# Customizable error responses come in three flavors: +
-# 1) plain text +
-# 2) local redirects +
-# 3) external redirects +
-+
-# Some examples: +
-#ErrorDocument 500 "The server made a boo boo." +
-#ErrorDocument 404 /missing.html +
-#ErrorDocument 404 "/cgi-bin/missing_handler.pl" +
-#ErrorDocument 402 http://www.example.com/subscription_info.html +
-#+
  
-+JSONou **[[https://fr.wikipedia.org/wiki/JavaScript_Object_Notation|JavaScript Object Notation]]**est un format de données textuelles dérivé de la notation des objets du langage JavaScriptIl permet de représenter de l’information structurée.
-# Putting this all togetherwe can internationalize error responses. +
-+
-# We use Alias to redirect any /error/HTTP_<error>.html.var response to +
-# our collection of by-error message multi-language collections.  We use +
-# includes to substitute the appropriate text. +
-+
-# You can modify the messages' appearance without changing any of the +
-# default HTTP_<error>.html.var files by adding the line: +
-+
-#Alias /error/include/ "/your/include/path/" +
-+
-# which allows you to create your own set of files by starting with the +
-# /usr/share/apache2/error/include/ files and copying them to /your/include/path/, +
-# even on a per-VirtualHost basis If you include the Alias in the global server +
-# context, is has to come _before_ the 'Alias /error/ ...' line. +
-+
-# The default include files will display your Apache version number and your +
-# ServerAdmin email address regardless of the setting of ServerSignature. +
-+
-# WARNING: The configuration below will NOT work out of the box if you have a +
-#   SetHandler directive in a <Location /> context somewhere. Adding +
-#   the following three lines AFTER the <Location /> context should +
-#   make it work in most cases: +
-#   <Location /error/> +
-# SetHandler none +
-#   </Location> +
-+
-# The internationalized error documents require mod_aliasmod_include +
-# and mod_negotiation To activate them, uncomment the following 37 lines.+
  
-#<IfModule mod_negotiation.c> +Un document JSON a pour fonction de représenter de l'information accompagnée d'étiquettes permettant d'en interpréter les divers élémentssans aucune restriction sur le nombre de celles-ciUn document JSON ne comprend que deux types d'éléments structurels : des ensembles de paires **nom/valeur** et des **listes ordonnées de valeurs**.
-# <IfModule mod_include.c> +
-# <IfModule mod_alias.c> +
-+
-# Alias /error/ "/usr/share/apache2/error/" +
-+
-# <Directory "/usr/share/apache2/error"> +
-# Options IncludesNoExec +
-# AddOutputFilter Includes html +
-# AddHandler type-map var +
-# Order allow,deny +
-# Allow from all +
-# LanguagePriority en cs de es fr it nl sv pt-br ro +
-# ForceLanguagePriority Prefer Fallback +
-# </Directory> +
-+
-# ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var +
-# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var +
-# ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var +
-# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var +
-# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var +
-# ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var +
-# ErrorDocument 410 /error/HTTP_GONE.html.var +
-# ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var +
-# ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var +
-# ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var +
-# ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var +
-# ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var +
-# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var +
-# ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var +
-# ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var +
-# ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var +
-# ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var +
-# </IfModule> +
-# </IfModule> +
-#</IfModule>+
  
-# vimsyntax=apache ts=4 sw=4 sts=4 sr noet +Ce format se base donc sur 2 types d'éléments:
-</code>+
  
-===/etc/apache2/conf-available/other-vhosts-access-log.conf===+  * la paire clé/valeur, par exemple "nom": "Phoenix" 
 +  * le tableau, par exemple "couleurs-primaires" : ["cyan", "jaune", "magenta"]
  
-<code> +====Le Format BSON====
-root@debian8:~# cat /etc/apache2/conf-available/other-vhosts-access-log.conf +
-# Define an access log for VirtualHosts that don't define their own logfile +
-CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined+
  
-# vimsyntax=apache ts=4 sw=4 sts=4 sr noet +Le format BSON ou **[[https://fr.wikipedia.org/wiki/BSON|Binary JSON]]** correspond au format des données manipulés par MongoDB. C'est un format d'échange de données informatiques utilisé principalement comme stockage de données et format de transfert de données par le réseau dans la base de données MongoDB. C'est un format binaire permettant de représenter des structures de données simples et des tableaux associatifs (appelées objets ou des documents dans MongoDB). Le nom BSON est basé sur le terme JSON.
-</code>+
  
-===/etc/apache2/conf-available/security.conf===+===Comparaison BSON/JSON===
  
-<code> +Voici un tableau comparatif de BSON ET JSON :
-root@debian8:~# cat /etc/apache2/conf-available/security.conf +
-+
-# Disable access to the entire file system except for the directories that +
-# are explicitly allowed later. +
-+
-# This currently breaks the configurations that come with some web application +
-# Debian packages. +
-+
-#<Directory /> +
-#   AllowOverride None +
-#   Order Deny,Allow +
-#   Deny from all +
-#</Directory>+
  
 +^  Comparaison BSON/JSON  ^^^
 +^ Type de Champs ^ JSON ^ BSON ^
 +|  Number  |  X  |  X  |
 +|  String  |  X  |  X  |
 +|  Boolean  |  X  |  X  |
 +|  Array  |  X  |  X  |
 +|  Object  |  X  |  X  |
 +|  Null  |  X  |  X  |
 +|  Float  |  -  |  X  |
 +|  Date  |  -  |  X  |
 +|  Regular Expression  |  -  |  X  |
 +|  JavaScript Code  |  -  |  X  |
  
-# Changing the following options will not really affect the security of the +On constate que le format BSON supporte plus de types que le format JSON. Le codage BSON complète la représentation JSON en y ajoutant des types de données supplémentairestels que les formats virgule flottante ou date entre autres.
-# serverbut might make attacks slightly more difficult in some cases.+
  
-+===Format d'un Document BSON===
-# ServerTokens +
-# This directive configures what you return as the Server HTTP response +
-# Header. The default is 'Full' which sends information about the OS-Type +
-# and compiled in modules. +
-# Set to one of:  Full | OS | Minimal | Minor | Major | Prod +
-# where Full conveys the most information, and Prod the least. +
-#ServerTokens Minimal +
-ServerTokens OS +
-#ServerTokens Full+
  
-+Dernièrementvoici un document au format BSON stockant des informations concernant un film :
-# Optionally add a line containing the server version and virtual host +
-# name to server-generated pages (internal error documentsFTP directory +
-# listings, mod_status and mod_info output etc., but not CGI generated +
-# documents or custom error documents). +
-# Set to "EMail" to also include a mailto: link to the ServerAdmin. +
-# Set to one of On | Off | EMail +
-#ServerSignature Off +
-ServerSignature On+
  
-+<code> { 
-# Allow TRACE method +  "_id": "movie:100", 
-+  "title": "The Social network", 
-# Set to "extendedto also reflect the request body (only for testing and +  "summary": "On a fall night in 2003Harvard undergrad and 
-# diagnostic purposes). +     programming genius Mark Zuckerberg sits down at his 
-+     computer and heatedly begins working on a new idea(...)", 
-# Set to one of:  On | Off | extended +  "year"2010, 
-TraceEnable Off +  "director": {"last_name": "Fincher", 
-#TraceEnable On +                "first_name": "David"}, 
- +  "actors": [ 
-+    {"first_name": "Jesse", "last_name": "Eisenberg"}, 
-# Forbid access to version control directories +    {"first_name": "Rooney", "last_name": "Mara"} 
-+   ] 
-# If you use version control systems in your document rootyou should +}
-# probably deny access to their directoriesFor examplefor subversion+
-# +
-#<DirectoryMatch "/\.svn"> +
-#   Require all denied +
-#</DirectoryMatch> +
- +
-+
-# Setting this header will prevent MSIE from interpreting files as something +
-# else than declared by the content type in the HTTP headers. +
-# Requires mod_headers to be enabled. +
-+
-#Header set X-Content-Type-Options: "nosniff+
- +
-+
-# Setting this header will prevent other sites from embedding pages from this +
-# site as frames. This defends against clickjacking attacks. +
-# Requires mod_headers to be enabled. +
-+
-#Header set X-Frame-Options: "sameorigin+
- +
- +
-# vim: syntax=apache ts=4 sw=4 sts=4 sr noet+
 </code> </code>
  
-===/etc/apache2/conf-available/serve-cgi-bin.conf===+=====Le Langage des Requêtes=====
  
-<code> +====Requêtes de base====
-root@debian8:~# cat /etc/apache2/conf-available/serve-cgi-bin.conf +
-<IfModule mod_alias.c> +
- <IfModule mod_cgi.c> +
- Define ENABLE_USR_LIB_CGI_BIN +
- </IfModule>+
  
- <IfModule mod_cgid.c> +===Se placer dans une base de données/Créer une base de données===
- Define ENABLE_USR_LIB_CGI_BIN +
- </IfModule>+
  
- <IfDefine ENABLE_USR_LIB_CGI_BIN> +Pour se placer dans une base de données ou créer une base inexistente, il convient d'utiliser la requête **use** :
- ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ +
- <Directory "/usr/lib/cgi-bin"> +
- AllowOverride None +
- Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch +
- Require all granted +
- </Directory> +
- </IfDefine> +
-</IfModule>+
  
-# vim: syntax=apache ts=4 sw=4 sts=4 sr noet +<code> use <database> </code>
-</code>+
  
-===/etc/apache2/envvars===+===Créer une collection===
  
-<code> +Pour créer une collection, il convient d'utiliser la requête **db.createCollection(<collection>)** :
-root@debian8:~# cat /etc/apache2/envvars +
-# envvars - default environment variables for apache2ctl+
  
-# this won't be correct after changing uid +<code> db.createCollection("movies") </code>
-unset HOME+
  
-# for supporting multiple apache2 instances +<WRAP center round important> 
-if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then +**Important** Une base est constituée d’un ensemble de collections, l’équivalent d’une table en relationnel. 
- SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}" +</WRAP>
-else +
- SUFFIX= +
-fi+
  
-# Since there is no sane way to get the parsed apache2 config in scripts, some +===Visualiser la liste des collections===
-# settings are defined via environment variables and then used in apache2ctl, +
-# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc. +
-export APACHE_RUN_USER=www-data +
-export APACHE_RUN_GROUP=www-data +
-# temporary state file location. This might be changed to /run in Wheezy+1 +
-export APACHE_PID_FILE=/var/run/apache2/apache2$SUFFIX.pid +
-export APACHE_RUN_DIR=/var/run/apache2$SUFFIX +
-export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX +
-# Only /var/log/apache2 is handled by /etc/logrotate.d/apache2. +
-export APACHE_LOG_DIR=/var/log/apache2$SUFFIX+
  
-## The locale used by some modules like mod_dav +Pour visualiser la liste des collections, il convient d'utiliser la requête **show** :
-export LANG=C +
-## Uncomment the following line to use the system default locale instead: +
-#. /etc/default/locale+
  
-export LANG+<code> show collections </code>
  
-## The command to get the status for 'apache2ctl status'+===Inserer un document BSON dans une collection===
-## Some packages providing 'www-browser' need '--dump' instead of '-dump'+
-#export APACHE_LYNX='www-browser -dump'+
  
-## If you need a higher file descriptor limituncomment and adjust the +Pour inserer un document BSON dans une collectionil convient d'utiliser la requête **db.<collection>.insert (<document>)** :
-## following line (default is 8192): +
-#APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'+
  
-## If you would like to pass arguments to the web server, add them below +<code>  
-## to the APACHE_ARGUMENTS environment+db.movies.insert ({"title": "Batman", "year": 1989}) 
-#export APACHE_ARGUMENTS='' +db.movies.insert ({"produit": "Grulband", prix: 230, enStock: true})
- +
-## Enable the debug mode for maintainer scripts. +
-## This will produce a verbose output on package installations of web server modules and web application +
-## installations which interact with Apache +
-#export APACHE2_MAINTSCRIPT_DEBUG=1+
 </code> </code>
  
-===/etc/apache2/magic===+<WRAP center round important> 
 +**Important** - Notez que la structure du deuxième document n’a rien à voir avec le premier. Il n’y a pas de schéma (et donc pas de contrainte) dans MongoDB. On est libre de tout faire, ce qui revient à reporter les problèmes (contrôles, contraintes, tests sur la structure) vers l’application. Notez aussi que lorsque l'on veut insérer des documents BSON dans la base MongoDB, au lieu de les insérer un par un, on peut utiliser l’utilitaire d’import de MongoDB, qui prend en entrée un tableau BSON contenant la liste des objets à insérer. 
 +</WRAP>
  
-<code> +===Affecter un identifiant explicitement===
-root@debian8:~# more /etc/apache2/magic +
-# Magic data for mod_mime_magic (originally for file(1) command) +
-+
-# The format is 4-5 columns: +
-#    Column #1: byte number to begin checking from, ">" indicates continuation +
-#    Column #2: type of data to match +
-#    Column #3: contents of data to match +
-#    Column #4: MIME type of result +
-#    Column #5: MIME encoding of result (optional)+
  
-#------------------------------------------------------------------------------ +Pour affecter un identifiant explicitement, il convient d'utiliser la requête **db.<collection>.insert(<document>)** en spécifiant la valeur de **_id** :
-# Localstuff:  file(1magic for locally observed files +
-# Add any locally observed files here.+
  
-# Real Audio (Magic .ra\0375) +<code> db.movies.insert ({_id: "1", "produit": "Kramölk", prix: 10, enStock: true}</code>
-0 belong 0x2e7261fd audio/x-pn-realaudio +
-0 string .RMF application/vnd.rn-realmedia+
  
-#video/x-pn-realvideo +===Remplacer un document===
-#video/vnd.rn-realvideo +
-#application/vnd.rn-realmedia +
-# sigh, there are many mimes for that but the above are the most common.+
  
-# Taken from magicconverted to magic.mime +Pour remplacer un documentil convient d'utiliser la requête **db.<collection>.update(<document>)** :
-# mime types according to http://www.geocities.com/nevilo/mod.htm: +
-# audio/it .it +
-# audio/x-zipped-it .itz +
-# audio/xm fasttracker modules +
-# audio/x-s3m screamtracker modules +
-# audio/s3m screamtracker modules +
-# audio/x-zipped-mod mdz +
-# audio/mod mod +
-# audio/x-mod All modules (mod, s3m, 669, mtm, med, xm, it, mdz, stm, itz, xmz, s3z)+
  
-# Taken from loader code from mikmod version 2.14 +<code> db.movies.update{ "title": "Mr Smith" }, { "title": "Mr Cool", "year": 2000 } ) </code>
-# by Steve McIntyre (stevem@chiark.greenend.org.uk) +
-# <doj@cubic.org> added title printing on 2003-06-24 +
-0 string MAS_UTrack_V00 +
->14 string >/0 audio/x-mod +
-#audio/x-tracker-module +
---More--(4%) +
-</code>+
  
-===/etc/apache2/ports.conf===+===Modifier des champs d’un document===
  
-<code> +Pour modifier des champs d’un document, il convient d'utiliser la requête **db.<collection>.update(<document>)** et **$set** :
-root@debian8:~# cat /etc/apache2/ports.conf +
-# If you just change the port or add more ports here, you will likely also +
-# have to change the VirtualHost statement in +
-# /etc/apache2/sites-enabled/000-default.conf+
  
-Listen 80+<code> db.movies.update( { "title": "Avengers" }, { $set: { "summary": "c'est un film divertissant" } } ) </code>
  
-<IfModule ssl_module> +===Compter le nombre de documents dans la collection===
- Listen 443 +
-</IfModule>+
  
-<IfModule mod_gnutls.c> +Pour compter le nombre de documents dans la collection, il convient d'utiliser la requête **db.<collection>.count()** :
- Listen 443 +
-</IfModule>+
  
-# vim: syntax=apache ts=4 sw=4 sts=4 sr noet +<code> db.movies.count() </code>
-</code>+
  
-=====Administration de Base=====+===Supprimer un document===
  
-==== LAB #1 - Gestion de serveurs virtuels ====+Pour supprimer un ou plusieurs documents il convient d'utiliser la requête **db.<collection>.remove(<document>)** à laquelle on passe en paramètre le query permettant d’identifier les documents visés :
  
-Apache est capable de gérer de multiples sites hébergés sur la même machine+<code> db.movies.remove({"produit": "Grulband"}) </code>
  
-Il existe deux façons de créer des sites ( hôtes ) virtuels :+===Supprimer un champ dans un document===
  
-  Hôte Virtuel par nom +Pour supprimer un champ dans un document, il convient d'utiliser la requête **db.<collection>.update(<document>)** et **$unset** :
-  Hôte Virtuel par adresse IP+
  
-===Sous RHEL CentOS 7===+<code> db.movies.update({"title": "Batman"}, {$unset : {year : 1989}}) </code>
  
-Sous **RHEL / CentOS 7** ceci est rendu possible par un fichier de configuration spécifique appelé: **/etc/httpd/conf/vhosts.d/Vhosts.conf**. Le répertoire **/etc/httpd/conf/vhosts.d/** n'existant pas, créez-le:+===Supprimer une collection===
  
-<code> +Pour supprimer une collection, il convient d'utiliser la requête **db.<collection>.drop()** :
-[root@centos7 ~]# mkdir /etc/httpd/conf/vhosts.d/ +
-</code>+
  
-Créez ensuite le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** :+<code> db.movies.drop() </code>
  
-<code> +===Trier des documents===
-[root@centos7 ~]# touch /etc/httpd/conf/vhosts.d/Vhosts.conf +
-</code>+
  
-Le contenu de fichier est inclus à l'intérieur de la configuration d'apache grâce à la directive suivante du fichier **httpd.conf**:+Pour trier les documents, il convient d'utiliser la requête **db.movies.find ().sort().skip().limit()** :
  
-<file> +<codedb.movies.find ().sort({"title": 1}).skip(9).limit(12) </code>
-... +
-# Supplemental configuration +
-+
-# Load config files in the "/etc/httpd/conf.ddirectory, if any. +
-IncludeOptional conf.d/*.conf +
-Include conf/vhosts.d/*.conf +
-</file>+
  
-Ajoutez donc cette ligne au fichier **/etc/httpd/conf/httpd.conf**.+<WRAP center round important> 
 +**Important** - Notez qu'implicitement, cela suppose qu’il existe un ordre sur le parcours des documentsPar défaut, cet ordre est dicté par le stockage physique: MongoDB fournit les documents dans l’ordre où il les trouve (dans les fichiers). On peut trier explicitement, ce qui rend le résultat plus déterministe. 
 +</WRAP>
  
-==Hôte virtuel par nom==+===Rechercher des documents dans une collection===
  
-Nous allons d'abord considérer les sites virtuels par nom+Pour afficher les contenu d'une collection, il convient d'utiliser la requête **db.<collection>.find(<document>)** :
  
-Créez un répertoire **/www/site1 **à la racine de votre arborescence pour héberger notre premier hôte virtuel :+<code> db.movies.find() </code>
  
-<code> +On obtient des objets (javascript, encodés en BSON), par exemple :
-[root@centos7 ~]# mkdir -p /www/site1 +
-</code>+
  
-Créez ensuite le fichier **index.html** du répertoire **/www/site1**:+<code> { "_id" ObjectId("5422d9095ae45806a0e66474"), "nom" : "nfe024" } </code>
  
-<code+<WRAP center round important
-[root@centos7 ~]# vi /www/site1/index.html +**Important** - Notez que MongoDB associe un identifiant unique à chaque document, de nom conventionnel **_id**, et lui attribue une valeur si elle n’est pas indiquée explicitement
-[root@centos7 ~]# cat /www/site1/index.html +</WRAP>
-<html> +
-<head> +
-<title>Page de Test</title> +
-<body> +
-<center>Accueil du site 1</center> +
-</body> +
-</html> +
-</code>+
  
-Editez le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** en suivant l'exemple ci-dessous :+Il est aussi possible de rechercher en connaissant l’identifiant :
  
-<code> +<code> db.movies.find ({"_id""movie:2"}) </code>
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf +
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf +
-################# Named VirtualHosts +
-NameVirtualHost *:80 +
-##################Default Site Virtual Host +
-<VirtualHost *:80> +
-DocumentRoot /var/www/html +
-ServerName i2tch.loc +
-ServerAlias www.i2tch.loc +
-</VirtualHost> +
-##################www.rhelnom.com +
-<VirtualHost *:80> +
-ServerName www.rhelnom.com +
-DirectoryIndex index.html +
-DocumentRoot /www/site1 +
-<Directory /www/site1> +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-</code>+
  
-<WRAP center round important> +ou en utilisant n’importe quel attribut :
-**Important** Notez qu'apache servira toujours le **contenu da la première section** des sites virtuels par défaut, sauf précision de la part de l'internaute. Il est donc impératif d'ajouter une section **VirtualHost** pour votre site par défaut.  +
-</WRAP>+
  
-Redémarrez ensuite le serveur Apache :+<code> db.movies.find ({"title""Alien"}) </code>
  
-<code> +====Projections====
-[root@centos7 ~]# systemctl restart httpd +
-</code>+
  
-Avant de pouvoir consulter le site virtuelil faut renseigner votre fichier **/etc/hosts** :+Les requêtes précédentes ramènent l’intégralité des objets satisfaisant les critères de recherche. Il est aussi possible de faire des projectionsen passant un second argument à la fonction find() :
  
-<code> +<code> db.movies.find ({"actors.last_name""Tarantino"}, {"title"true, "actors": 'j'} ) </code>
-[root@centos7 ~]# vi /etc/hosts +
-[root@centos7 ~]# cat /etc/hosts +
-127.0.0.1 localhost.localdomain localhost +
-::1 localhost6.localdomain6 localhost6 +
-10.0.2.15 i2tch.loc +
-10.0.2.15   www.i2tch.loc +
-10.0.2.15 www.rhelnom.com +
-</code>+
  
-Sauvegardez votre fichier hosts et installez le navigateur web en mode texte **lynx** :+Le second argument est un objet BSON dont les attributs sont ceux à conserver dans le résultat. La valeur des attributs dans cet objet-projection ne prend que deux interprétations. Toute valeur autre que **0** ou **null** indique que l’attribut doit être conservé. Si on choisit au contraire d’indiquer les attributs à exclure, on leur donne la valeur **0** ou **null**. Par exemple, la requête suivante retourne les films sans les acteurs et sans le résumé :
  
-<code> +<code> db.movies.find ({"actors": null, "summary": 0}) </code>
-[root@centos7 ~]# yum install lynx +
-</code>+
  
-Testez votre configuration avec **lynx** :+====Opérateurs ensemblistes====
  
-<code> +Les opérateurs du langage SQL **in**, **not in**, **any** et **all** se retrouvent dans le langage d’interrogation. La différence, notable, est que SQL applique ces opérateurs à des relations (elles-mêmes obtenues par des requêtes) alors que dans le cas de MongoDB, ce sont des tableaux JSONMongoDB ne permet pas d’imbriquer des requêtes.
-[root@centos7 ~]# lynx --dump http://www.rhelnom.com +
-                              Accueil du site 1+
  
 +Par exemple, on cherche les films dans lesquels joue au moins un des artistes dans une liste dont on connaît l’identifiant :
  
-[root@centos7 ~]#  +<code> db.artists.find({"actors._id": {$in: ["artist:34","artist:98","artist:1"]}}) </code>
-</code>+
  
-Afin de mieux comprendre les visites à notre site virtuel, nous avons besoin d'un fichier log ainsi qu'un fichier de log des erreurs. Ouvrez donc le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** et ajoutez les deux lignes suivantes:+Le **not in** correspond à l’opérateur $nin.
  
-<file> +<codedb.artists.find({"_id": {$nin: ["artist:34","artist:98","artist:1"]}}) </code>
-Customlog /www/logs/site1/rhelnom.log combined +
-Errorlog /www/logs/site1/rhelnom_error.log +
-</file>+
  
-Vous obtiendrez une fenêtre similaire à celle-ci :+Comme dernier example, voici comment trouver les films qui n’ont pas d’attribut summary :
  
-<code> +<code> db.movies.find({"summary"{$existsfalse}}, {"title"1}) </code>
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf +
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf +
-################# Named VirtualHosts +
-NameVirtualHost *:80 +
-##################Default Site Virtual Host +
-<VirtualHost *:80> +
-DocumentRoot /var/www/html +
-ServerName i2tch.loc +
-ServerAlias www.i2tch.loc +
-</VirtualHost> +
-##################www.rhelnom.com +
-<VirtualHost *:80> +
-ServerName www.rhelnom.com +
-DirectoryIndex index.html +
-DocumentRoot /www/site1 +
-Customlog /www/logs/site1/rhelnom.log combined +
-Errorlog /www/logs/site1/rhelnom_error.log +
-<Directory /www/site1> +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-</code>+
  
-Créez ensuite le répertoire /www/logs/site1 : +====Opérateurs booléens====
  
-<code> +Par défaut, quand on exprime plusieurs critères, c’est une conjonction (and) qui est appliquée. On peut l’indiquer explicitement. Voici la syntaxe (les films tournés avec Leonardo DiCaprio en 1997) :
-[root@centos7 ~]# mkdir -p /www/logs/site1 +
-</code>+
  
-Redémarrez le serveur Apache +<code> db.movies.find({$and [{"year": "1997"}, {actors.last_name: "DiCaprio"]} ) </code>
  
-<code> +L’opérateur **and** s’applique à un tableau de conditions. Bien entendu il existe un opérateur **or** avec la même syntaxe. Les films parus en 1997 ou avec Leonardo DiCaprio :
-[root@centos7 ~]# systemctl restart httpd +
-</code>+
  
-Testez votre configuration avec **lynx** :+<code> db.movies.find({$or [{"year": "1997"}, {actors.last_name: "DiCaprio"]} ) </code>
  
-<code> +====Comparaison de la structure des requêtes entre SQL/MongoDB====
-[root@centos7 ~]# lynx --dump http://www.rhelnom.com +
-                              Accueil du site 1+
  
 +===Tables/Collections===
  
-[root@centos7 ~]#  +==CREATE TABLE==
-</code>+
  
-Contrôlez maintenant le contenu du répertoire **/www/logs/site1**Vous devez y retrouver deux fichiers :+^  SQL  ^  MongoDB 
 +| <code>CREATE TABLE people (id MEDIUMINT NOT NULL AUTO_INCREMENT, user_id Varchar(30),
 +age Number, status char(1), PRIMARY KEY (id))</code> |<code>db.people.insertOne( {user_id"abc123", age: 55, status: "A"} )</code> ou simplement <code>db.createCollection("people")</code> |
  
-<code> +==DROP TABLE==
-[root@centos7 ~]# ls -l /www/logs/site1/ +
-total 4 +
--rw-r--r--. 1 root root   0 Aug 24 11:06 rhelnom_error.log +
--rw-r--r--. 1 root root 138 Aug 24 11:06 rhelnom.log +
-</code>+
  
-Ces deux fichiers **rhelnom.log** et **rhelnom_error.log** sont créés automatiquement par Apache.+^  SQL  ^  MongoDB 
 +| <code>DROP TABLE people</code> | <code>db.people.drop()</code> |
  
-En contrôlant le contenu du fichier **/www/logs/site1/rhelnom.log** nous constatons que le log a été généré :+==ALTER TABLE==
  
-<code> +^  SQL  ^  MongoDB 
-[root@centos7 ~]# cat /www/logs/site1/rhelnom.log +<code>ALTER TABLE people ADD join_date DATETIME</code> | <code>db.people.updateMany( { },{ $set{ join_datenew Date() } } )</code> | 
-10.0.2.15 - - [24/Aug/2017:11:06:47 +0200] "GET HTTP/1.0200 100 "-" "Lynx/2.8.8dev.15 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.1e-fips" +| <code>ALTER TABLE people DROP COLUMN join_date</code> | <code>db.people.updateMany( { },{ $unset: { "join_date""" } } )</code> |
-</code>+
  
-==Hôte virtuel par adresse IP==+==CREATE INDEX==
  
-Commencez par créer une adresse IP fixe :+^  SQL  ^  MongoDB 
 +| <code>CREATE INDEX idx_user_id_asc ON people(user_id)</code> | <code>db.people.createIndex( { user_id1 } )</code>
 +| <code>CREATE INDEX idx_user_id_asc_age_desc ON people(user_id, age DESC)</code> | <code>db.people.createIndex( { user_id: 1, age: -1 } )</code> |
  
-<code> +===Rows/documents===
-[root@centos7 ~]# nmcli connection add con-name ip_fixe ifname enp0s3 type ethernet ip4 10.0.2.16/24 gw4 10.0.2.2     +
-[root@centos7 ~]# nmcli connection up ip_fixe     +
-[root@centos7 ~]# nmcli connection mod ip_fixe ipv4.dns 8.8.8.8 +
-[root@centos7 ~]# systemctl restart NetworkManager +
-[root@centos7 ~]# nslookup www.free.fr +
-Server: 8.8.8.8 +
-Address: 8.8.8.8#53+
  
-Non-authoritative answer: +==INSERT==
-Name: www.free.fr +
-Address: 212.27.48.10 +
-</code>+
  
-Avant de pouvoir consulter les sites virtuelil faut modifier votre fichier **/etc/hosts** :+^  SQL  ^  MongoDB 
 +| <code>INSERT INTO people(user_idage, status) VALUES ("bcd001", 45, "A")</code> | <code>db.people.insertOne({ user_id"bcd001", age: 45, status: "A" })</code> |
  
-<code> +==SELECT==
-[root@centos7 ~]# vi /etc/hosts +
-[root@centos7 ~]# cat /etc/hosts +
-127.0.0.1 localhost.localdomain localhost +
-::1 localhost6.localdomain6 localhost6 +
-10.0.2.16 i2tch.loc +
-10.0.2.16   www.i2tch.loc +
-10.0.2.16 www.rhelnom.com +
-</code>+
  
-Vous allez maintenant procéder à la création d'un site hôte virtuel par adresse IPNormalementvotre serveur serait muni de deux cartes réseaux permettant ainsi d'attribuer un site ou hôte virtuel par numéro IPCependantdans le cas suivant vous allez tout simplement affecté deux numéros IP à la même carte afin de procéder aux testsPour faire cecivous devez associer une deuxième adresse IP à votre carte réseau enp0s3Saisissez donc la commande suivante dans une fenêtre de console en tant que root :+^  SQL  ^  MongoDB 
 +| <code>SELECT * FROM people</code> | <code>db.people.find()</code>
 +| <code>SELECT id, user_id, status FROM people</code> | <code>db.people.find( { },{ user_id: 1, status: 1 } )</code>
 +| <code>SELECT user_id, status FROM people</code> | <code>db.people.find( { },{ user_id: 1, status: 1, _id: 0 } )</code>
 +| <code>SELECT * FROM people WHERE status = "A"</code> | <code>db.people.find( { status: "A" } )</code>
 +| <code>SELECT user_idstatus FROM people WHERE status = "A"</code> | <code>db.people.find( { status"A" },{ user_id: 1, status:1, _id: 0 } )</code>
 +| <code>SELECT * FROM people WHERE status != "A"</code> | <code>db.people.find( { status: { $ne: "A" } } )</code>
 +| <code>SELECT * FROM people WHERE status = "A" AND age = 50</code> | <code>db.people.find( { status: "A", age: 50 } )</code>
 +| <code>SELECT * FROM people WHERE status = "A" OR age = 50</code> | <code>db.people.find( { $or: [ { status: "A" } , { age: 50 } ] } )</code>
 +| <code>SELECT * FROM people WHERE age > 25</code> | <code>db.people.find( { age: { $gt: 25 } } )</code>
 +| <code>SELECT * FROM people WHERE age < 25</code> | <code>db.people.find( { age: { $lt: 25 } } )</code>
 +| <code>SELECT * FROM people WHERE age > 25 AND age <= 50</code> | <code>db.people.find( { age: { $gt: 25, $lte: 50 } } )</code>
 +| <code>SELECT * FROM people WHERE status = "A" ORDER BY user_id ASC</code> | <code>db.people.find( { status: "A" } ).sort( { user_id: 1 } )</code>
 +| <code>SELECT * FROM people WHERE status = "A" ORDER BY user_id DESC</code> | <code>db.people.find( { status: "A" } ).sort( { user_id: -1 } )</code>
 +| <code>SELECT * FROM people WHERE user_id like "bc%"</code> | <code>db.people.find( { user_id: /^bc/ } )</code> ou <code>db.people.find( { user_id: { $regex: ^bc/ } } )</code>
 +| <code>SELECT * FROM people WHERE user_id like "%bc%"</code> | <code>db.people.find( { user_id: /bc/ } )</code> ou <code>db.people.find( { user_id: { $regex: /bc/ } } )</code>
 +| <code>SELECT COUNT(*) FROM people</code> | <code>db.people.count()</code> ou <code>db.people.find().count()</code>
 +| <code>SELECT COUNT(user_id) FROM people</code> | <code>db.people.count( { user_id: { $exists: true } } )</code> ou <code>db.people.find( { user_id: { $exists: true } } ).count()</code>
 +| <code>SELECT COUNT(*) FROM people WHERE age > 30</code> | <code>db.people.count( { age: { $gt: 30 } } )</code> ou <code>db.people.find( { age: { $gt: 30 } } ).count()</code>
 +| <code>SELECT DISTINCT(status) FROM people</code> | <code>db.people.distinct( "status" )</code>
 +| <code>SELECT * FROM people LIMIT 1</code> | <code>db.people.findOne()</code> ou <code>db.people.find().limit(1)</code>
 +| <code>SELECT * FROM people LIMIT 5 SKIP 10</code> | <code>db.people.find().limit(5).skip(10)</code> |
  
-<code> +==EXPLAIN SELECT==
-[root@centos7 ~]# ip a | grep 'inet ' +
-    inet 127.0.0.1/8 scope host lo +
-    inet 10.0.2.16/24 brd 10.0.2.255 scope global enp0s3 +
-[root@centos7 ~]# ip a add 192.168.1.99/24 dev enp0s3 +
-[root@centos7 ~]# ip a | grep 'inet ' +
-    inet 127.0.0.1/8 scope host lo +
-    inet 10.0.2.16/24 brd 10.0.2.255 scope global enp0s3 +
-    inet 192.168.1.99/24 scope global enp0s3 +
-</code>+
  
-Créez maintenant le répertoire pour notre site2 +^  SQL  ^  MongoDB 
 +| <code>EXPLAIN SELECT * FROM people WHERE status = "A"</code> | <code>db.people.find( { status"A" } ).explain()</code> |
  
-<code> +==UPDATE==
-[root@centos7 ~]# mkdir /www/site2 +
-</code>+
  
-Créez la page d'accueil :+^  SQL  ^  MongoDB 
 +| <code>UPDATE people SET status = "C" WHERE age > 25</code> | <code>db.people.updateMany( { age{ $gt: 25 } } , { $set: { status: "C" } } )</code>
 +| <code>UPDATE people SET age = age + 3 WHERE status = "A"</code> | <code>db.people.updateMany( { status: "A" } , { $inc: { age: 3 } } )</code> |
  
-<code> +==DELETE FROM==
-[root@centos7 ~]# vi /www/site2/index.html +
-[root@centos7 ~]# cat /www/site2/index.html +
-<html> +
-<head> +
-<title>Page de Test</title> +
-<body> +
-<center>Accueil du site 2</center> +
-</body> +
-</html> +
-</code>+
  
-Créez ensuite le répertoire /www/logs/site2 : +^  SQL  ^  MongoDB 
 +| <code>DELETE FROM people WHERE status = "D"</code> | <code>db.people.deleteMany( { status: "D" } )</code> | 
 +| <code>DELETE FROM people</code> | <code>db.people.deleteMany({})</code> |
  
-<code> 
-[root@centos7 ~]# mkdir /www/logs/site2 
-</code> 
  
-Editez maintenant le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf**:+=====LAB #1 - Utilisation de requêtes de base=====
  
-<code> +====Création d'une collection====
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf +
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf +
-################# IP-based Virtual Hosts +
-<VirtualHost 192.168.1.99> +
-DocumentRoot /www/site2 +
-ServerName www.rhelip.com +
-DirectoryIndex index.html +
-Customlog /www/logs/site2/rhelip.log combined +
-Errorlog /www/logs/site2/rhelip_error.log +
-<Directory /www/site2> +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-################# Named VirtualHosts +
-NameVirtualHost *:80 +
-##################Default Site Virtual Host +
-<VirtualHost *:80> +
-DocumentRoot /var/www/html +
-ServerName i2tch.loc +
-ServerAlias www.i2tch.loc +
-</VirtualHost> +
-##################www.rhelnom.com +
-<VirtualHost *:80> +
-ServerName www.rhelnom.com +
-DirectoryIndex index.html +
-DocumentRoot /www/site1 +
-Customlog /www/logs/site1/rhelnom.log combined +
-Errorlog /www/logs/site1/rhelnom_error.log +
-<Directory /www/site1> +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-</code>+
  
-Éditez ensuite le fichier **/etc/hosts** :+Commencez par créer une collection nommé Movies qui enregistre des informations sur des films :
  
 <code> <code>
-[root@centos7 ~]# vi /etc/hosts +test>db.createCollection("movies") 
-[root@centos7 ~]# cat /etc/hosts +{ "ok" : 1 } 
-127.0.0.1 localhost.localdomain localhost +test>
-::1 localhost6.localdomain6 localhost6 +
-10.0.2.16 i2tch.loc +
-10.0.2.16 www.i2tch.loc +
-10.0.2.16       www.rhelnom.com +
-192.168.1.99    www.rhelip.com+
 </code> </code>
  
-Redémarrez votre serveur Apache :+====Création de documents====
  
-<code> +Créez maintenant les documents de la collection :
-[root@centos7 ~]# systemctl restart httpd +
-</code> +
- +
-Testez votre configuration avec **lynx** :+
  
 <code> <code>
-[root@centos7 ~]# lynx --dump http://www.rhelip.com +test>db.movies.insert({ "_id" : "movie:1", "titre" : "Batman", "année" : 1989, "acteurs"{ "prénom" : "Michael", "nom" : "Keaton"}) 
-                              Accueil du site +WriteResult({ "nInserted" 1 }) 
- +test>db.movies.insert({ "_id" : "movie:2", "titre" : "Beetlejuice", "année" : 1988, "acteurs" : [ { "prénom" : "Michael", "nom" : "Keaton" }, { "prénom" : "Geena", "nom" : "Davis" } ] }) 
- +WriteResult({ "nInserted" : 1 }) 
-[root@centos7 ~]+test>db.movies.insert({ "_id" : "movie:3", "titre" : "Jurassik Park", "réalisateur" : { "prénom" : "Steven", "nom" : "Spielberg" }, "année" : 1990, "acteurs"{ "prénom" : "Sam", "nom" : "Neil" }, { "prénom" : "Laura", "nom" : "Dern"}) 
 +WriteResult({ "nInserted" : 1 }) 
 +test>db.movies.insert({ "_id" : "movie:4", "titre" : "Avengers", "année" : 2012 }) 
 +WriteResult({ "nInserted" : 1 }) 
 +test>db.movies.insert({ "_id" : "movie:5", "titre" : "Hobbit", "année" : 2012 }) 
 +WriteResult({ "nInserted" : 1 }) 
 +test>
 </code> </code>
  
-Consultez maintenant le répertoire **/www/logs/site2**. Vous constaterez l'apparition d'un fichier log pour le site www.rhelip.com :+<WRAP center round important> 
 +**Important** - Notez que vous avez rentré 2 fois le nom et prénom du champ acteurs pour les 2 premiers documents crées. 
 +</WRAP>
  
-<code> +====Recherche de documents====
-total 4 +
--rw-r--r--. 1 root root   0 Aug 24 14:28 rhelip_error.log +
--rw-r--r--. 1 root root 141 Aug 24 14:29 rhelip.log +
-</code>+
  
-==Hôtes Virtuels Dynamiques avec mod_vhost_alias== +Utilisez maintenant la commande find pour vérifier que les 5 documents ont bien été crées dans la collection movies :
- +
-Commencez par installer le paquet **dnsmasq** afin de fournir les services d'un serveur DNS :+
  
 <code> <code>
-[root@centos7 ~]# yum install dnsmasq+test>db.movies.find() 
 +{ "_id" : "movie:1", "titre" : "Batman", "année" : 1989, "acteurs"{ "prénom" : "Michael", "nom" : "Keaton"
 +{ "_id" : "movie:2", "titre" : "Beetlejuice", "année" : 1988, "acteurs" : [ { "prénom" : "Michael", "nom" : "Keaton" }, { "prénom" : "Geena", "nom" : "Davis" } ] } 
 +{ "_id" : "movie:3", "titre" : "Jurassik Park", "réalisateur" : { "prénom" : "Steven", "nom" : "Spielberg" }, "année" : 1990, "acteurs" : [ { "prénom" : "Sam", "nom" : "Neil" }, { "prénom" : "Laura", "nom" : "Dern" } ] } 
 +{ "_id" : "movie:4", "titre" : "Avengers", "année" : 2012 } 
 +{ "_id" : "movie:5", "titre" : "Hobbit", "année" : 2012 } 
 +test>
 </code> </code>
  
-Créez le fichier **/etc/dnsmasq.d/i2tch** pour indiquer à dnsmasq que le domaine i2tch.loc se trouve à l'adresse **127.0.0.1** :+Modifiez ensuite le document ayant pour _id : movie 3) en utilisant la commande update :
  
 <code> <code>
-[root@centos7 ~]# vi /etc/dnsmasq.d/i2tch +test>db.movies.update({"_id": "movie:3"}, {$set: {titre: "le parc des dinosaures"}}) 
-[root@centos7 ~]# cat /etc/dnsmasq.d/i2tch +WriteResult({ "nMatched" : 1, "nUpserted"0, "nModified"}) 
-listen-address=127.0.0.+test>
-address=/.i2tch.loc/127.0.0.1+
 </code> </code>
  
-Re-démarrez le service dnsmasq pour prendre en compte vos modifications :+<WRAP center round important> 
 +**Important** Notez que le retour indique la réussite de l'oprération de mise à jour - **"nModified" 1**. 
 +</WRAP>
  
-<code> +Vérifiez que le champ a bien été modifié dans le document en consultant la collection movies :
-[root@centos7 ~]# systemctl restart dnsmasq +
-</code> +
- +
-Pour qu'apache puisse gérer les hôtes virtuels dynamiques, il faut que les modules **mod_rewrite** et **mod_vhost_alias** soient activés dans le fichier **/etc/httpd/conf.modules.d/00-base.conf** :+
  
 <code> <code>
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep rewrite +test>db.movies.find() 
-LoadModule rewrite_module modules/mod_rewrite.so +{ "_id" : "movie:1", "titre" : "Batman", "année" : 1989, "acteurs" : [ { "prénom" : "Michael", "nom" : "Keaton" } ] } 
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep alias +{ "_id" : "movie:2", "titre" : "Beetlejuice", "année" : 1988, "acteurs"{ "prénom" : "Michael", "nom" : "Keaton" }, { "prénom" : "Geena", "nom" : "Davis"} 
-LoadModule alias_module modules/mod_alias.so +{ "_id" : "movie:3", "titre" : "le parc des dinosaures", "réalisateur" : { "prénom" : "Steven", "nom" : "Spielberg" }, "année" : 1990, "acteurs" : [ { "prénom" : "Sam", "nom" : "Neil" }, { "prénom" : "Laura", "nom" : "Dern" } ] } 
-LoadModule vhost_alias_module modules/mod_vhost_alias.so+{ "_id" : "movie:4", "titre" : "Avengers", "année" : 2012 } 
 +{ "_id" : "movie:5", "titre" : "Hobbit", "année" : 2012 } 
 +test>
 </code> </code>
  
-Editez maintenant la section **Default Site Virtual Host** du fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** :+<WRAP center round important> 
 +**Important** - Notez que le titre du film ayant pour **"_id" : "movie:3"** a bien été modifié. 
 +</WRAP>
  
-<code> +Affichez maintenant les films n'ayant pas de réalisateur :
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf +
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf +
-################# IP-based Virtual Hosts +
-<VirtualHost 192.168.1.99> +
-DocumentRoot /www/site2 +
-ServerName www.rhelip.com +
-DirectoryIndex index.html +
-Customlog /www/logs/site2/rhelip.log combined +
-Errorlog /www/logs/site2/rhelip_error.log +
-<Directory /www/site2> +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-################# Named VirtualHosts +
-NameVirtualHost *:80 +
-##################Default Site Virtual Host +
-<VirtualHost *:80> +
-VirtualDocumentRoot /var/www/html/%-3 +
-ServerName i2tch.loc +
-ServerAlias *.i2tch.loc +
-ServerAdmin webmaster@localhost +
-LogLevel info +
-<Directory /> +
-Options FollowSymLinks +
-AllowOverride All +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-##################www.rhelnom.com +
-<VirtualHost *:80> +
-ServerName www.rhelnom.com +
-DirectoryIndex index.html +
-DocumentRoot /www/site1 +
-Customlog /www/logs/site1/rhelnom.log combined +
-Errorlog /www/logs/site1/rhelnom_error.log +
-<Directory /www/site1> +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-</code> +
- +
-Créez le fichier **/var/www/html/.htaccess** afin d'activer la ré-écriture des URLs :+
  
 <code> <code>
-[root@centos7 ~]# vi /var/www/html/.htaccess +test>db.movies.find({"réalisateur": null}) 
-[root@centos7 ~]# cat /var/www/html/.htaccess +{ "_id" : "movie:1", "titre" : "Batman", "année" : 1989, "acteurs"{ "prénom" : "Michael", "nom" : "Keaton"} 
-RewriteEngine On +{ "_id" : "movie:2", "titre" : "Beetlejuice", "année" : 1988, "acteurs"{ "prénom" : "Michael", "nom" : "Keaton" }, { "prénom" : "Geena", "nom" : "Davis"
-RewriteBase /+{ "_id" : "movie:4", "titre" : "Avengers", "année" : 2012 } 
 +{ "_id" : "movie:5", "titre" : "Hobbit", "année" : 2012 } 
 +test>
 </code> </code>
  
-Re-démarrez le serveur httpd :+====Suppression d'un document====
  
-<code> +Supprimez le film dont le titre est **"Batman"** :
-[root@centos7 ~]# systemctl restart httpd +
-</code> +
- +
-Creéz maintenant le répertoire **/var/www/html/_** pour contenir le site par défaut :+
  
 <code> <code>
-[root@centos7 ~]# mkdir /var/www/html/_+test>db.movies.remove({"titre": "Batman"}) 
 +WriteResult({ "nRemoved" : 1 }) 
 +test>
 </code> </code>
  
-Créez la page d'accueil du site par défaut :+Constatez le résultat de la requête :
  
 <code> <code>
-[root@centos7 ~]# vi /var/www/html/_/index.html +test>db.movies.find() 
-[root@centos7 ~]# cat /var/www/html/_/index.html +{ "_id" : "movie:2", "titre" : "Beetlejuice", "année" : 1988, "acteurs"{ "prénom" : "Michael", "nom" : "Keaton" }, { "prénom" : "Geena", "nom" : "Davis"} 
-<html> +{ "_id" : "movie:3", "titre" : "le parc des dinosaures", "réalisateur" : { "prénom" : "Steven", "nom" : "Spielberg" }, "année" : 1990, "acteurs"{ "prénom" : "Sam", "nom" : "Neil" }, { "prénom" : "Laura", "nom" : "Dern"} 
-<body> +{ "_id" : "movie:4", "titre" : "Avengers", "année" : 2012 } 
-<center>Accueil du site par défaut</center> +{ "_id" : "movie:5", "titre" : "Hobbit", "année" : 2012 } 
-</body> +test>
-</html>+
 </code> </code>
  
-Créez deux sites **projecta** et **projectb** :+Supprimez maintenant les films ayant **"année": 2012** :
  
 <code> <code>
-[root@centos7 ~]# mkdir /var/www/html/projecta +test>db.movies.remove({"année": 2012}) 
-[root@centos7 ~]# vi /var/www/html/projecta/index.html +WriteResult({ "nRemoved" : 2 }) 
-[root@centos7 ~]# cat /var/www/html/projecta/index.html +test>db.movies.find() 
-<html> +{ "_id" : "movie:2", "titre" : "Beetlejuice", "année" : 1988, "acteurs" : [ { "prénom" : "Michael", "nom" : "Keaton" }, { "prénom" : "Geena", "nom" : "Davis" } ] } 
-<body+{ "_id" : "movie:3", "titre" : "le parc des dinosaures", "réalisateur" : { "prénom" : "Steven", "nom" : "Spielberg" }, "année" : 1990, "acteurs" : [ { "prénom" : "Sam", "nom" : "Neil" }, { "prénom" : "Laura", "nom" : "Dern" } ] }
-<center>Accueil du Project A</center> +
-</body> +
-</html>+
 </code> </code>
  
-<code+<WRAP center round important
-[root@centos7 ~]# mkdir /var/www/html/projectb +**Important** - Notez la suppression de deux documents : **"_id" : "movie:4"** et **"_id" : "movie:5"**
-[root@centos7 ~]# vi /var/www/html/projectb/index.html +</WRAP>
-[root@centos7 ~]# cat /var/www/html/projectb/index.html +
-<html> +
-<body> +
-<center>Accueil du Project B</center> +
-</body> +
-</html> +
-</code>+
  
-Modifiez l'appartenance du répertoire **/var/www/html** et son contenu :+=====LAB #2 - Rechercher, filtrer et trier=====
  
-<code> +====La Requête find()====
-root@debian8:~# chown -R apache:apache /var/www/html +
-</code>+
  
-Modifiez le fichier **/etc/resolv.conf** en y ajoutant la ligne **nameserver 127.0.0.1** :+Connectez-vous à MongoDB en utilisant le client **mongo** :
  
 <code> <code>
-[root@centos7 ~]# vi /etc/resolv.conf  +[trainee@centos7 ~]$ su - 
-[root@centos7 ~]# cat /etc/resolv.conf  +Mot de passe : fenestros 
-# Generated by NetworkManager +Dernière connexion : lundi 18 septembre 2017 à 13:39:03 CEST sur pts/0 
-search i2tch.loc +[root@centos7 ~]# mongo 
-nameserver 127.0.0.1 +MongoDB shell version: 3.2.16 
-nameserver 8.8.8.8+connecting to: test 
 +Server has startup warnings:  
 +2017-09-18T13:46:09.416+0200 I CONTROL  [initandlisten]  
 +2017-09-18T13:46:09.416+0200 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 filesNumber of processes should be at least 32000 : 0.5 times number of files. 
 +test> 
 </code> </code>
  
-Testez que vous avez accès aux hôtes virtuels :+Commencez par créer une base de données appelée **find** :
  
 <code> <code>
-[root@centos7 ~]# lynx --dump http://www.rhelnom.com +test>use find 
-                              Accueil du site 1 +switched to db find 
- +find>
- +
-[root@centos7 ~]# lynx --dump http://www.rhelip.com +
-                              Accueil du site 2 +
- +
- +
-[root@centos7 ~]# lynx --dump http://i2tch.loc +
-                         Accueil du site par défaut +
- +
- +
-[root@centos7 ~]# lynx --dump http://projecta.i2tch.loc +
-                            Accueil du Project A +
- +
- +
-[root@centos7 ~]# lynx --dump http://projectb.i2tch.loc +
-                            Accueil du Project A +
- +
- +
-[root@centos7 ~]# lynx --dump http://projectc.i2tch.loc +
-                                   Not Found +
- +
-   The requested URL / was not found on this server. +
 </code> </code>
  
-===Sous Debian 8===+===Critères de recherche===
  
-==Hôte virtuel par nom== +En sachant que le client mongo interprète du JavaScriptcréez 100 000 documents dans la base de données **find** dans une collection appelée **products** :
- +
-Sous **Debian 8** la configuration des hôtes virtuels ne se fait pas de la même façon que sous RHEL / CentOS 7. Sous Debianles hôtes virtuels sont configurés par des fichiers par hôte dans le répertoire **/etc/apache2/sites-available**. Ils sont activés en créant un lien symbolique dans le répertoire **/etc/apache2/sites-enabled** :+
  
 <code> <code>
-root@debian8:~# vi /etc/apache2/sites-available/debiannom.conf +find>for(i=1; i<=100000; i++){var tenthousand = i%10000; var thousand = i%1000; var hundred = i%100; db.products.insert({counter:i, tenthousand:tenthousand, thousand:thousand, hundred:hundred })} 
-root@debian8:~# cat /etc/apache2/sites-available/debiannom.conf +WriteResult({ "nInserted" : 1 })
-<VirtualHost *:80> +
- ServerName debiannom.com +
-    ServerAlias www.debiannom.com +
- +
- ServerAdmin webmaster@localhost +
- DocumentRoot /www/site1 +
- +
- <Directory "/www/site1"+
-    AllowOverride None +
-    Require all granted +
- </Directory> +
- +
-</VirtualHost> +
- +
-# vimsyntax=apache ts=4 sw=4 sts=4 sr noet+
 </code> </code>
  
-Créez un répertoire **/www/site1** à la racine de votre arborescence pour héberger notre premier hôte virtuel :+Saisissez maintenant la commande **db.products.find()** :
  
 <code> <code>
-root@debian8:~# mkdir -p /www/site1+find>db.products.find() 
 +{ "_id" ObjectId("59c0fb1a3b6221e3d36169a6"), "counter" : 1, "tenthousand" : 1, "thousand" : 1, "hundred" : 1 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169a7"), "counter" : 2, "tenthousand" : 2, "thousand" : 2, "hundred" : 2 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169a8"), "counter" : 3, "tenthousand" : 3, "thousand" : 3, "hundred" : 3 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169a9"), "counter" : 4, "tenthousand" : 4, "thousand" : 4, "hundred" : 4 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169aa"), "counter" : 5, "tenthousand" : 5, "thousand" : 5, "hundred" : 5 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169ab"), "counter" : 6, "tenthousand" : 6, "thousand" : 6, "hundred" : 6 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169ac"), "counter" : 7, "tenthousand" : 7, "thousand" : 7, "hundred" : 7 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169ad"), "counter" : 8, "tenthousand" : 8, "thousand" : 8, "hundred" : 8 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169ae"), "counter" : 9, "tenthousand" : 9, "thousand" : 9, "hundred" : 9 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169af"), "counter" : 10, "tenthousand" : 10, "thousand" : 10, "hundred" : 10 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169b0"), "counter" : 11, "tenthousand" : 11, "thousand" : 11, "hundred" : 11 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169b1"), "counter" : 12, "tenthousand" : 12, "thousand" : 12, "hundred" : 12 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169b2"), "counter" : 13, "tenthousand" : 13, "thousand" : 13, "hundred" : 13 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169b3"), "counter" : 14, "tenthousand" : 14, "thousand" : 14, "hundred" : 14 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169b4"), "counter" : 15, "tenthousand" : 15, "thousand" : 15, "hundred" : 15 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169b5"), "counter" : 16, "tenthousand" : 16, "thousand" : 16, "hundred" : 16 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169b6"), "counter" : 17, "tenthousand" : 17, "thousand" : 17, "hundred" : 17 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169b7"), "counter" : 18, "tenthousand" : 18, "thousand" : 18, "hundred" : 18 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169b8"), "counter" : 19, "tenthousand" : 19, "thousand" : 19, "hundred" : 19 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169b9"), "counter" : 20, "tenthousand" : 20, "thousand" : 20, "hundred" : 20 } 
 +Type "it" for more 
 +find>
 </code> </code>
  
-Créez ensuite le fichier **index.html** du répertoire **/www/site1**:+Notez l'instruction **Type "it" for more** :
  
 <code> <code>
-root@debian8:~# vi /www/site1/index.html +find>it 
-root@debian8:~# cat /www/site1/index.html +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169ba"), "counter" : 21, "tenthousand" : 21, "thousand" : 21, "hundred" 21 } 
-<html> +{ "_id" ObjectId("59c0fb1a3b6221e3d36169bb"), "counter" : 22, "tenthousand" : 22, "thousand" : 22, "hundred" : 22 } 
-<head> +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169bc"), "counter" : 23, "tenthousand" : 23, "thousand" : 23, "hundred" : 23 } 
-<title>Page de Test</title> +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169bd"), "counter" : 24, "tenthousand" : 24, "thousand" : 24, "hundred" : 24 } 
-<body> +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169be"), "counter" : 25, "tenthousand" : 25, "thousand" : 25, "hundred" : 25 } 
-<center>Accueil du site 1</center> +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169bf"), "counter" : 26, "tenthousand" : 26, "thousand" : 26, "hundred" : 26 } 
-</body> +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169c0"), "counter" : 27, "tenthousand" : 27, "thousand" : 27, "hundred" : 27 } 
-</html>+{ "_id" : ObjectId("59c0fb1a3b6221e3d36169c1"), "counter" : 28, "tenthousand" : 28, "thousand" : 28, "hundred" : 28 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169c2"), "counter" : 29, "tenthousand" : 29, "thousand" : 29, "hundred" : 29 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169c3"), "counter" : 30, "tenthousand" : 30, "thousand" : 30, "hundred" : 30 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169c4"), "counter" : 31, "tenthousand" : 31, "thousand" : 31, "hundred" : 31 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169c5"), "counter" : 32, "tenthousand" : 32, "thousand" : 32, "hundred" : 32 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169c6"), "counter" : 33, "tenthousand" : 33, "thousand" : 33, "hundred" : 33 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169c7"), "counter" : 34, "tenthousand" : 34, "thousand" : 34, "hundred" : 34 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169c8"), "counter" : 35, "tenthousand" : 35, "thousand" : 35, "hundred" : 35 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169c9"), "counter" : 36, "tenthousand" : 36, "thousand" : 36, "hundred" : 36 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169ca"), "counter" : 37, "tenthousand" : 37, "thousand" : 37, "hundred" : 37 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169cb"), "counter" : 38, "tenthousand" : 38, "thousand" : 38, "hundred" : 38 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169cc"), "counter" : 39, "tenthousand" : 39, "thousand" : 39, "hundred" : 39 } 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d36169cd"), "counter" : 40, "tenthousand" : 40, "thousand" : 40, "hundred" : 40 } 
 +Type "it" for more 
 +find>
 </code> </code>
  
 <WRAP center round important> <WRAP center round important>
-**Important** : Notez qu'Apache servira toujours le contenu du fichier **/etc/apache2/sites-available/000-default.conf** par défaut, sauf précision de la part de l'internaute.+**Important** - Bien que pratique, il faudrait taper la commande **it** un grand nombre de fois pour atteindre le document 90 000 !
 </WRAP> </WRAP>
  
-Modifiez l'appartenance du répertoire **/www** et son contenu :+Tapez maintenat la commande **db.products.find({tenthousand:9999})** :
  
 <code> <code>
-root@debian8:/etc/apache2/sites-enabled# chown -R www-data:www-data /www+find>db.products.find({tenthousand:9999}) 
 +{ "_id" ObjectId("59c0fb2d3b6221e3d36190b4"), "counter" : 9999, "tenthousand" : 9999, "thousand" : 999, "hundred" : 99 } 
 +{ "_id" : ObjectId("59c0fb403b6221e3d361b7c4"), "counter" : 19999, "tenthousand" : 9999, "thousand" : 999, "hundred" : 99 } 
 +{ "_id" : ObjectId("59c0fb533b6221e3d361ded4"), "counter" : 29999, "tenthousand" : 9999, "thousand" : 999, "hundred" : 99 } 
 +{ "_id" : ObjectId("59c0fb663b6221e3d36205e4"), "counter" : 39999, "tenthousand" : 9999, "thousand" : 999, "hundred" : 99 } 
 +{ "_id" : ObjectId("59c0fb793b6221e3d3622cf4"), "counter" : 49999, "tenthousand" : 9999, "thousand" : 999, "hundred" : 99 } 
 +{ "_id" : ObjectId("59c0fb8e3b6221e3d3625404"), "counter" : 59999, "tenthousand" : 9999, "thousand" : 999, "hundred" : 99 } 
 +{ "_id" : ObjectId("59c0fba13b6221e3d3627b14"), "counter" : 69999, "tenthousand" : 9999, "thousand" : 999, "hundred" : 99 } 
 +{ "_id" : ObjectId("59c0fbb43b6221e3d362a224"), "counter" : 79999, "tenthousand" : 9999, "thousand" : 999, "hundred" : 99 } 
 +{ "_id" : ObjectId("59c0fbc93b6221e3d362c934"), "counter" : 89999, "tenthousand" : 9999, "thousand" : 999, "hundred" : 99 } 
 +{ "_id" : ObjectId("59c0fbdc3b6221e3d362f044"), "counter" : 99999, "tenthousand" : 9999, "thousand" : 999, "hundred" : 99 } 
 +find>
 </code> </code>
  
-Créez ensuite un lien symbolique dans le répertoire **/etc/apache2/sites-enabled** pointant vers le fichier **/etc/apache2/sites-available/debiannom.conf** :+<WRAP center round important> 
 +**Important** - Vous obtenez les documents qui correspondent à **tenthousand = 9999**
 +</WRAP>
  
-<code> +Précisez maintenant un deuxième critère de recherche :
-root@debian8:~# cd /etc/apache2/sites-enabled/ +
-root@debian8:/etc/apache2/sites-enabled# ln -s ../sites-available/debiannom.conf . +
-root@debian8:/etc/apache2/sites-enabled# ls -l +
-total 0 +
-lrwxrwxrwx 1 root root 35 Aug 27 11:08 000-default.conf -> ../sites-available/000-default.conf +
-lrwxrwxrwx 1 root root 33 Aug 27 18:32 debiannom.conf -> ../sites-available/debiannom.conf +
-</code> +
- +
-Redémarrez ensuite le serveur Apache :+
  
 <code> <code>
-root@debian8:/etc/apache2/sites-enabled# systemctl restart apache2+find>db.products.find({counter:19999, tenthousand:9999}) 
 +{ "_id" : ObjectId("59c0fb403b6221e3d361b7c4"), "counter" : 19999, "tenthousand" : 9999, "thousand" : 999, "hundred" : 99 } 
 +find>
 </code> </code>
  
-Avant de pouvoir consulter le site virtuel, il faut renseigner votre fichier **/etc/hosts** :+<WRAP center round important> 
 +**Important** - Vous obtenez un seul document où counter=19999 et tenthousand=9999. 
 +</WRAP>
  
-<code> +Pour connaître le nombre de documents retournés lors d'une recherche spécifique, utilisez la commande **count()** :
-root@debian8:/etc/apache2/sites-enabled# vi /etc/hosts +
-root@debian8:/etc/apache2/sites-enabled# cat /etc/hosts +
-127.0.0.1 localhost +
-127.0.1.1 debian8.i2tch.loc debian8 +
- +
-# The following lines are desirable for IPv6 capable hosts +
-::1     localhost ip6-localhost ip6-loopback +
-ff02::1 ip6-allnodes +
-ff02::2 ip6-allrouters +
-10.0.2.15 i2tch.loc +
-10.0.2.15   www.i2tch.loc +
-10.0.2.15 www.debiannom.com +
-</code> +
- +
-Sauvegardez votre fichier hosts et installez le navigateur web en mode texte **lynx** :+
  
 <code> <code>
-root@debian8:/etc/apache2/sites-enabled# apt-get install lynx+find>db.products.find({thousand:289, hundred:89}) 
 +{ "_id" : ObjectId("59c0fb1a3b6221e3d3616ac6"), "counter" : 289, "tenthousand" : 289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb1d3b6221e3d3616eae"), "counter" : 1289, "tenthousand" : 1289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb1e3b6221e3d3617296"), "counter" : 2289, "tenthousand" : 2289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb203b6221e3d361767e"), "counter" : 3289, "tenthousand" : 3289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb223b6221e3d3617a66"), "counter" : 4289, "tenthousand" : 4289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb243b6221e3d3617e4e"), "counter" : 5289, "tenthousand" : 5289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb263b6221e3d3618236"), "counter" : 6289, "tenthousand" : 6289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb283b6221e3d361861e"), "counter" : 7289, "tenthousand" : 7289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb2a3b6221e3d3618a06"), "counter" : 8289, "tenthousand" : 8289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb2c3b6221e3d3618dee"), "counter" : 9289, "tenthousand" : 9289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb2e3b6221e3d36191d6"), "counter" : 10289, "tenthousand" : 289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb2f3b6221e3d36195be"), "counter" : 11289, "tenthousand" : 1289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb313b6221e3d36199a6"), "counter" : 12289, "tenthousand" : 2289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb333b6221e3d3619d8e"), "counter" : 13289, "tenthousand" : 3289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb353b6221e3d361a176"), "counter" : 14289, "tenthousand" : 4289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb373b6221e3d361a55e"), "counter" : 15289, "tenthousand" : 5289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb393b6221e3d361a946"), "counter" : 16289, "tenthousand" : 6289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb3b3b6221e3d361ad2e"), "counter" : 17289, "tenthousand" : 7289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb3d3b6221e3d361b116"), "counter" : 18289, "tenthousand" : 8289, "thousand" : 289, "hundred" : 89 } 
 +{ "_id" : ObjectId("59c0fb3f3b6221e3d361b4fe"), "counter" : 19289, "tenthousand" : 9289, "thousand" : 289, "hundred" : 89 } 
 +Type "it" for more 
 +find>db.products.find({thousand:289, hundred:89}).count() 
 +100 
 +find>
 </code> </code>
  
-Testez votre configuration avec **lynx** :+<WRAP center round important> 
 +**Important** - Notez qu'il existe **100** documents correspondant à notre critère **({thousand:289, hundred:89})**. 
 +</WRAP>
  
-<code> +===Utiliser des Opérandes===
-root@debian8:/etc/apache2/sites-enabled# lynx --dump http://www.debiannom.com +
-                              Accueil du site 1+
  
 +Il est possilible d'utiliser des opérandes avec la requête find() :
  
-root@debian8:/etc/apache2/sites-enabled#  +^  Opérande  ^  Description  ^ 
-</code>+|  $gt  |  Supérieur à  | 
 +|  $gte  |  Supérieur ou égal à  | 
 +|  $lt  |  Inférieur à  | 
 +|  $lte  |  Inférieur ou égal à  |
  
-Afin de mieux comprendre les visites à notre site virtuel, nous avons besoin d'un fichier log ainsi qu'un fichier de log des erreurs. Ouvrez donc le fichier **/etc/apache2/sites-available/debiannom.conf** et ajoutez les deux lignes suivantes: 
  
-<file+<WRAP center round important
-Customlog /www/logs/site1/debiannom.log combined +**Important** Les 4 opérandes ci-dessus fonctionnent pour des nombres et des chaines de caractèresDans le cas des chaines de caractères, l'ordre appliqué est l'ordre alphabétique
-Errorlog /www/logs/site1/debiannom_error.log +</WRAP>
-</file> +
- +
-Vous obtiendrez une fenêtre similaire à celle-ci +
- +
-<file text debiannom.conf> +
-<VirtualHost *:80> +
- ServerName debiannom.com +
-    ServerAlias www.debiannom.com +
- +
- ServerAdmin webmaster@localhost +
- DocumentRoot /www/site1 +
- +
- Customlog /www/logs/site1/debiannom.log combined +
- Errorlog /www/logs/site1/debiannom_error.log +
- +
- <Directory "/www/site1"> +
-    AllowOverride None +
-    Require all granted +
- </Directory> +
- +
-</VirtualHost> +
- +
-# vim: syntax=apache ts=4 sw=4 sts=4 sr noet +
-</file>+
  
-Créez ensuite le répertoire /www/logs/site1 +Par exemple le nombre de documents qui ont pour la valeur **thousand** supérieure ou égale à 525 et la valeur **hundred** inférieure à 90 :
  
 <code> <code>
-root@debian8:/etc/apache2/sites-enabled# mkdir -p /www/logs/site1+find>db.products.find({thousand:{$gte:525}, hundred:{$lt:90}}).count() 
 +42500 
 +find>
 </code> </code>
  
-Modifiez l'appartenance du répertoire **/www/logs** et son contenu :+====Filtrer les champs====
  
-<code> +Saisissez la requête **db.products.find({tenthousand525})** :
-root@debian8:/etc/apache2/sites-enabled# chown -R www-data:www-data /www/logs +
-</code> +
- +
-Redémarrez le serveur Apache +
  
 <code> <code>
-root@debian8:/etc/apache2/sites-enabled# systemctl restart apache2+find>db.products.find({tenthousand525}) 
 +{ "_id" : ObjectId("59c0fb1b3b6221e3d3616bb2"), "counter" : 525, "tenthousand" : 525, "thousand" : 525, "hundred" : 25 } 
 +{ "_id" : ObjectId("59c0fb2e3b6221e3d36192c2"), "counter" : 10525, "tenthousand" : 525, "thousand" : 525, "hundred" : 25 } 
 +{ "_id" : ObjectId("59c0fb413b6221e3d361b9d2"), "counter" : 20525, "tenthousand" : 525, "thousand" : 525, "hundred" : 25 } 
 +{ "_id" : ObjectId("59c0fb543b6221e3d361e0e2"), "counter" : 30525, "tenthousand" : 525, "thousand" : 525, "hundred" : 25 } 
 +{ "_id" : ObjectId("59c0fb673b6221e3d36207f2"), "counter" : 40525, "tenthousand" : 525, "thousand" : 525, "hundred" : 25 } 
 +{ "_id" : ObjectId("59c0fb7a3b6221e3d3622f02"), "counter" : 50525, "tenthousand" : 525, "thousand" : 525, "hundred" : 25 } 
 +{ "_id" : ObjectId("59c0fb8f3b6221e3d3625612"), "counter" : 60525, "tenthousand" : 525, "thousand" : 525, "hundred" : 25 } 
 +{ "_id" : ObjectId("59c0fba23b6221e3d3627d22"), "counter" : 70525, "tenthousand" : 525, "thousand" : 525, "hundred" : 25 } 
 +{ "_id" : ObjectId("59c0fbb53b6221e3d362a432"), "counter" : 80525, "tenthousand" : 525, "thousand" : 525, "hundred" : 25 } 
 +{ "_id" : ObjectId("59c0fbca3b6221e3d362cb42"), "counter" : 90525, "tenthousand" : 525, "thousand" : 525, "hundred" : 25 } 
 +find>
 </code> </code>
  
-Testez votre configuration avec **lynx** :+Ajoutez maintenant un deuxième paramètre destiné à filtrer les champs retournés par la requête :
  
 <code> <code>
-root@debian8:/etc/apache2/sites-enabled# lynx --dump http://www.debiannom.com +find>db.products.find({tenthousand: 525} , {counter:1}) 
-                              Accueil du site +{ "_id" : ObjectId("59c0fb1b3b6221e3d3616bb2"), "counter" : 525 } 
- +{ "_id" : ObjectId("59c0fb2e3b6221e3d36192c2"), "counter" : 10525 } 
- +{ "_id" ObjectId("59c0fb413b6221e3d361b9d2"), "counter" : 20525 } 
-root@debian8:/etc/apache2/sites-enabled#+{ "_id" : ObjectId("59c0fb543b6221e3d361e0e2"), "counter" : 30525 } 
 +{ "_id" : ObjectId("59c0fb673b6221e3d36207f2"), "counter" : 40525 } 
 +{ "_id" : ObjectId("59c0fb7a3b6221e3d3622f02"), "counter" : 50525 } 
 +{ "_id" : ObjectId("59c0fb8f3b6221e3d3625612"), "counter" : 60525 } 
 +{ "_id" : ObjectId("59c0fba23b6221e3d3627d22"), "counter" : 70525 } 
 +{ "_id" : ObjectId("59c0fbb53b6221e3d362a432"), "counter" : 80525 } 
 +{ "_id" : ObjectId("59c0fbca3b6221e3d362cb42"), "counter" : 90525 } 
 +find>
 </code> </code>
  
-Contrôlez maintenant le contenu du répertoire **/www/logs/site1**. Vous devez y retrouver deux fichiers : +<WRAP center round important> 
- +**Important** - Notez que vous n'avez plus que les champs **_id** et **counter** dans les résultatsLe champs **_id** est systématiquement renvoyé sauf quand il est explicitement indiqué le contraire dans la requête**counter** est renvoyé parce que dans le second paramètre se trouve la valeur **1**.  
-<code> +</WRAP>
-root@debian8:/etc/apache2/sites-enabled# ls -l /www/logs/site1/ +
-total 4 +
--rw-r--r-- 1 root root   0 Aug 27 19:34 debiannom_error.log +
--rw-r--r-- 1 root root 131 Aug 27 19:35 debiannom.log +
-</code> +
- +
-Ces deux fichiers **debiannom_error.log** et **debiannom.log** sont créés automatiquement par Apache.+
  
-En contrôlant le contenu du fichier **/www/logs/site1/debiannom.log** nous constatons que le log a été généré :+Saisissez donc la requête suivante qui indique que celle-ci ne doit **pas** retournée le champs **_id** :
  
 <code> <code>
-root@debian8:/etc/apache2/sites-enabled# cat /www/logs/site1/debiannom.log +find>db.products.find({tenthousand: 525} , {_id:0, counter:1}) 
-10.0.2.15 - - [27/Aug/2018:19:35:07 +0100] "GET / HTTP/1.0200 370 "-" "Lynx/2.8.9dev.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/3.3.8"+{ "counter" 525 } 
 +{ "counter" 10525 } 
 +"counter: 20525 } 
 +"counter: 30525 } 
 +"counter: 40525 } 
 +{ "counter" : 50525 } 
 +{ "counter" : 60525 } 
 +{ "counter" : 70525 } 
 +{ "counter" : 80525 } 
 +{ "counter" : 90525 } 
 +find>
 </code> </code>
  
-==Hôte virtuel par adresse IP==+====Trier=====
  
-NetworkManager inclus la notion de **connections** ou **profils** permettant des configurations différentes en fonction de la localisation. Pour voir les connections actuelles, utilisez la commande **nmcli c** avec la sous-commande **show** : +Saissisez la requête suivante :
- +
-Si vous constatez que vous n'avez pas de profil dans la sortie de la commande **nmcli c show**, ceci indique que NetworkManager ne gère pas la carte :+
  
 <code> <code>
-root@debian8:/etc/apache2/sites-enabled# cd ~ +find>db.products.find({thousand {$in: [500, 600, 700]}}) 
-root@debian8:~# nmcli c show +{ "_id" ObjectId("59c0fb1b3b6221e3d3616b99"), "counter" : 500, "tenthousand" : 500, "thousand" : 500, "hundred" : 0 } 
-NAME     UUID      TYPE      DEVICE +{ "_id" : ObjectId("59c0fb1b3b6221e3d3616bfd"), "counter" : 600, "tenthousand" : 600, "thousand" : 600, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb1b3b6221e3d3616c61"), "counter" : 700, "tenthousand" : 700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb1d3b6221e3d3616f81"), "counter" : 1500, "tenthousand" : 1500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb1d3b6221e3d3616fe5"), "counter" : 1600, "tenthousand" : 1600, "thousand" : 600, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb1d3b6221e3d3617049"), "counter" : 1700, "tenthousand" : 1700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb1f3b6221e3d3617369"), "counter" : 2500, "tenthousand" : 2500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb1f3b6221e3d36173cd"), "counter" : 2600, "tenthousand" : 2600, "thousand" : 600, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb1f3b6221e3d3617431"), "counter" : 2700, "tenthousand" : 2700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb213b6221e3d3617751"), "counter" : 3500, "tenthousand" : 3500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb213b6221e3d36177b5"), "counter" : 3600, "tenthousand" : 3600, "thousand" : 600, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb213b6221e3d3617819"), "counter" : 3700, "tenthousand" : 3700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb233b6221e3d3617b39"), "counter" : 4500, "tenthousand" : 4500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb233b6221e3d3617b9d"), "counter" : 4600, "tenthousand" : 4600, "thousand" : 600, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb233b6221e3d3617c01"), "counter" : 4700, "tenthousand" : 4700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb253b6221e3d3617f21"), "counter" : 5500, "tenthousand" : 5500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb253b6221e3d3617f85"), "counter" : 5600, "tenthousand" : 5600, "thousand" : 600, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb253b6221e3d3617fe9"), "counter" : 5700, "tenthousand" : 5700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb263b6221e3d3618309"), "counter" : 6500, "tenthousand" : 6500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb273b6221e3d361836d"), "counter" : 6600, "tenthousand" : 6600, "thousand" : 600, "hundred" : 0 } 
 +Type "it" for more 
 +find>
 </code> </code>
  
-Dans ce cas, le fichier **/etc/network/interfaces** contiendra une entrée pour la carte **eth0** :+<WRAP center round important> 
 +**Important** - Notez que le résultat démontre une alternance des valeurs de **thousand**, alternativement 500, 600 et 700.   
 +</WRAP>
  
-<code> +Triez maintenant les résultats sur la valeur de **thousand** dans le sens croissant :
-root@debian8:~# cat /etc/network/interfaces +
-# This file describes the network interfaces available on your system +
-# and how to activate them. For more information, see interfaces(5). +
- +
-source /etc/network/interfaces.d/+
- +
-# The loopback network interface +
-auto lo +
-iface lo inet loopback +
- +
-# The primary network interface +
-allow-hotplug eth0 +
-iface eth0 inet dhcp +
-</code> +
- +
-Afin de permettre NetworkManager de gérer la carte malgré cette configuration, il convient d'éditer le fichier **/etc/NetworkManager/NetworkManager.conf** et passer la directive **managed=false** à **managed=true** :+
  
 <code> <code>
-root@debian8:~# vi /etc/NetworkManager/NetworkManager.conf +find>db.products.find({thousand {$in: [500, 600, 700]}}).sort({thousand:1}) 
-root@debian8:~# cat /etc/NetworkManager/NetworkManager.conf +{ "_id" ObjectId("59c0fb1b3b6221e3d3616b99"), "counter" : 500, "tenthousand" : 500, "thousand" : 500, "hundred" : 0 } 
-[main] +{ "_id" : ObjectId("59c0fb1d3b6221e3d3616f81"), "counter" : 1500, "tenthousand" : 1500, "thousand" : 500, "hundred" : 0 } 
-plugins=ifupdown,keyfile +{ "_id" : ObjectId("59c0fb1f3b6221e3d3617369")"counter" : 2500, "tenthousand" : 2500, "thousand" : 500, "hundred" : 0 } 
- +{ "_id" : ObjectId("59c0fb213b6221e3d3617751"), "counter" : 3500, "tenthousand" : 3500, "thousand" : 500, "hundred" : 0 } 
-[ifupdown] +{ "_id" : ObjectId("59c0fb233b6221e3d3617b39"), "counter" : 4500, "tenthousand" : 4500, "thousand" : 500, "hundred" : 0 } 
-managed=true+{ "_id" : ObjectId("59c0fb253b6221e3d3617f21"), "counter" : 5500, "tenthousand" : 5500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb263b6221e3d3618309"), "counter" : 6500, "tenthousand" : 6500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb283b6221e3d36186f1"), "counter" : 7500, "tenthousand" : 7500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb2a3b6221e3d3618ad9"), "counter" : 8500, "tenthousand" : 8500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb2c3b6221e3d3618ec1"), "counter" : 9500, "tenthousand" : 9500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb2e3b6221e3d36192a9"), "counter" : 10500, "tenthousand" : 500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb303b6221e3d3619691"), "counter" : 11500, "tenthousand" : 1500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb323b6221e3d3619a79"), "counter" : 12500, "tenthousand" : 2500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb343b6221e3d3619e61"), "counter" : 13500, "tenthousand" : 3500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb363b6221e3d361a249"), "counter" : 14500, "tenthousand" : 4500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb373b6221e3d361a631"), "counter" : 15500, "tenthousand" : 5500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb393b6221e3d361aa19"), "counter" : 16500, "tenthousand" : 6500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb3b3b6221e3d361ae01"), "counter" : 17500, "tenthousand" : 7500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb3d3b6221e3d361b1e9"), "counter" : 18500, "tenthousand" : 8500, "thousand" : 500, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb3f3b6221e3d361b5d1"), "counter" : 19500, "tenthousand" : 9500, "thousand" : 500, "hundred" : 0 } 
 +Type "it" for more 
 +find>
 </code> </code>
  
-Il faut ensuite re-démarrer le service NetworkManager :+Dernièrement, triez dans le sens décroissant :
  
 <code> <code>
-root@debian8:~# systemctl restart NetworkManager.service +find>db.products.find({thousand {$in: [500, 600, 700]}}).sort({thousand:-1}) 
 +{ "_id" : ObjectId("59c0fb1b3b6221e3d3616c61"), "counter" : 700, "tenthousand" : 700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb1d3b6221e3d3617049"), "counter" : 1700, "tenthousand" : 1700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb1f3b6221e3d3617431"), "counter" : 2700, "tenthousand" : 2700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb213b6221e3d3617819"), "counter" : 3700, "tenthousand" : 3700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb233b6221e3d3617c01"), "counter" : 4700, "tenthousand" : 4700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb253b6221e3d3617fe9"), "counter" : 5700, "tenthousand" : 5700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb273b6221e3d36183d1"), "counter" : 6700, "tenthousand" : 6700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb293b6221e3d36187b9"), "counter" : 7700, "tenthousand" : 7700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb2b3b6221e3d3618ba1"), "counter" : 8700, "tenthousand" : 8700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb2d3b6221e3d3618f89"), "counter" : 9700, "tenthousand" : 9700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb2e3b6221e3d3619371"), "counter" : 10700, "tenthousand" : 700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb303b6221e3d3619759"), "counter" : 11700, "tenthousand" : 1700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb323b6221e3d3619b41"), "counter" : 12700, "tenthousand" : 2700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb343b6221e3d3619f29"), "counter" : 13700, "tenthousand" : 3700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb363b6221e3d361a311"), "counter" : 14700, "tenthousand" : 4700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb383b6221e3d361a6f9"), "counter" : 15700, "tenthousand" : 5700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb3a3b6221e3d361aae1"), "counter" : 16700, "tenthousand" : 6700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb3c3b6221e3d361aec9"), "counter" : 17700, "tenthousand" : 7700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb3e3b6221e3d361b2b1"), "counter" : 18700, "tenthousand" : 8700, "thousand" : 700, "hundred" : 0 } 
 +{ "_id" : ObjectId("59c0fb3f3b6221e3d361b699"), "counter" : 19700, "tenthousand" : 9700, "thousand" : 700, "hundred" : 0 } 
 +Type "it" for more 
 +find>
 </code> </code>
  
-Constatez la sortie de la commande **nmcli c show** :+=====LAB #3 - Requêtes sur la base movies=====
  
-<code> +====Préparation====
-root@debian8:~# nmcli c show +
-NAME             UUID                                  TYPE            DEVICE  +
-eth0             b88d25a0-2d19-429d-a808-d2548be81dec  802-3-ethernet  eth0    +
-Ifupdown (eth0)  681b428f-beaf-8932-dce4-687ed5bae28e  802-3-ethernet  --  +
-</code> +
  
-Créez maintenant un profil IP fixe rattaché au périphérique **eth0** :+Sortez du client mongo, puis télécharger à partir de la section Fichiers de ce cours le fichier au format JSON dont nous aurons besoin pour ce LAB :
  
-<code> +  * movies.json 
-root@debian8:~# nmcli connection add con-name ip_fixe ifname eth0 type ethernet ip4 10.0.2.16/24 gw4 10.0.2.2 +    * ce fichier contient la liste de films complets comprenant tous les noms et prénoms des artistes, répétés à chaque occurrence.
-Connection 'ip_fixe' (0421e288-cb7c-4569-ac1f-70598a13c96f) successfully added. +
-</code>+
  
-Constatez sa présence :+===Création de base de données===
  
-<code> +Connectez-vous à MongoDB avec le client **mongo** et créez une base de données **movies** contenant une collection **movies**,
-root@debian8:~# nmcli c show +
-NAME             UUID                                  TYPE            DEVICE  +
-ip_fixe          0421e288-cb7c-4569-ac1f-70598a13c96f  802-3-ethernet  --      +
-eth0             b88d25a0-2d19-429d-a808-d2548be81dec  802-3-ethernet  eth0    +
-Ifupdown (eth0)  681b428f-beaf-8932-dce4-687ed5bae28e  802-3-ethernet  --    +
-</code> +
- +
-L'étude du fichier **/etc/NetworkManager/system-connections/ip_fixe** démontre l'absence de directives concernant les DNS :+
  
 <code> <code>
-root@debian8:~# cat /etc/NetworkManager/system-connections/ip_fixe +[root@centos7 ~]mongo 
-[connection] +MongoDB shell version: 3.2.16 
-id=ip_fixe +connecting to: test 
-uuid=0421e288-cb7c-4569-ac1f-70598a13c96f +Server has startup warnings:  
-interface-name=eth0 +2017-09-19T11:51:43.992+0200 I CONTROL  [initandlisten]  
-type=ethernet +2017-09-19T11:51:43.992+0200 I CONTROL  [initandlisten** WARNING: soft rlimits too lowrlimits set to 4096 processes64000 filesNumber of processes should be at least 32000 : 0.5 times number of files. 
- +test>use movies 
-[ipv4] +switched to db movies 
-method=manual +movies>db.createCollection("movies"
-address1=10.0.2.16/24,10.0.2.2+{ "ok" : 1 } 
 +movies>exit 
 +bye
 </code> </code>
  
-Activez la connexion ip_fixe : +===Importer les données===
- +
-<code> +
-root@debian8:~# nmcli connection up ip_fixe +
-</code>+
  
-Ajoutez le DNS 8.8.8.8 au profil **ip_fixe** :+Utilisez maintenant la commande **mongoimport** pour importer le fichier dans MongoDB :
  
 <code> <code>
-root@debian8:~# nmcli connection mod ip_fixe ipv4.dns 8.8.8.8+[root@centos7 ~]mongoimport -d movies -c movies --file movies.json --jsonArray 
 +2017-09-20T11:19:44.012+0200 connected to: localhost 
 +2017-09-20T11:19:44.122+0200 imported 88 documents
 </code> </code>
  
-L'étude du fichier **/etc/NetworkManager/system-connections/ip_fixe** démontre que la directive concernant le serveur DNS a été ajoutée :+<WRAP center round important> 
 +**Important** - Notez que l’argument jsonArray indique à mongoimport qu’il s’agit d’un tableau d’objets à créer individuellement, et pas d’un unique document JSON. 
 +</WRAP>
  
-<code> +Re-connectez-vous à MongoDB en utilisant le client mongo :
-root@debian8:~# cat /etc/NetworkManager/system-connections/ip_fixe +
-[connection] +
-id=ip_fixe +
-uuid=0421e288-cb7c-4569-ac1f-70598a13c96f +
-interface-name=eth0 +
-type=ethernet +
- +
-[ipv6] +
-method=auto +
- +
-[ipv4] +
-method=manual +
-dns=8.8.8.8; +
-address1=10.0.2.16/24,10.0.2.2 +
-</code> +
- +
-Afin que la modification du serveur DNS soit prise en compte, re-démarrez le service NetworkManager :+
  
 <code> <code>
-root@debian8:~# systemctl restart NetworkManager.service +[root@centos7 ~]mongo 
-root@debian8:~#  +MongoDB shell version3.2.16 
-root@debian8:~# systemctl status NetworkManager.service +connecting totest 
-● NetworkManager.service - Network Manager +Server has startup warnings:  
-   Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled) +2017-09-19T11:51:43.992+0200 I CONTROL  [initandlisten]  
-   Active: active (running) since Mon 2018-08-27 20:04:16 BST; 30s ago +2017-09-19T11:51:43.992+0200 I CONTROL  [initandlisten** WARNINGsoft rlimits too lowrlimits set to 4096 processes, 64000 filesNumber of processes should be at least 32000 : 0.5 times number of files
- Main PID32570 (NetworkManager) +test>
-   CGroup/system.slice/NetworkManager.service +
-           └─32570 /usr/sbin/NetworkManager --no-daemon +
- +
-Aug 27 20:04:16 debian8 NetworkManager[32570]: <info> Activation (eth0) Stage 5 of 5 (IPv4 Commit) started... +
-Aug 27 20:04:16 debian8 NetworkManager[32570]: <info> (eth0): device state change: ip-config -> ip-check (reason 'none') [70 80 0] +
-Aug 27 20:04:16 debian8 NetworkManager[32570]: <info> Activation (eth0) Stage 5 of 5 (IPv4 Commit) complete. +
-Aug 27 20:04:16 debian8 NetworkManager[32570]: <info> Activation (eth0) Stage 5 of 5 (IPv6 Commit) started..+
-Aug 27 20:04:16 debian8 NetworkManager[32570]: <info> Activation (eth0) Stage 5 of 5 (IPv6 Commit) complete. +
-Aug 27 20:04:16 debian8 NetworkManager[32570]: <info> (eth0): device state change: ip-check -> secondaries (reason 'none') [80 90 0+
-Aug 27 20:04:16 debian8 NetworkManager[32570]: <info> (eth0): device state change: secondaries -> activated (reason 'none') [90 100 0] +
-Aug 27 20:04:16 debian8 NetworkManager[32570]: <info> Policy set 'eth0' (eth0) as default for IPv4 routing and DNS. +
-Aug 27 20:04:16 debian8 NetworkManager[32570]: <info> Activation (eth0) successful, device activated+
-Aug 27 20:04:22 debian8 NetworkManager[32570]: <infostartup complete+
 </code> </code>
  
-Vérifiez la resolution des noms :+En utilisant la base de données **movies**, vérifiez que vous pouvez trouver les 88 documents :
  
 <code> <code>
-root@debian8:~# ping www.free.fr +movies>db.movies.count () 
-PING www.free.fr (212.27.48.1056(84) bytes of data. +88
-64 bytes from www.free.fr (212.27.48.10): icmp_seq=1 ttl=63 time=80.3 ms +
-64 bytes from www.free.fr (212.27.48.10): icmp_seq=2 ttl=63 time=94.8 ms +
-64 bytes from www.free.fr (212.27.48.10): icmp_seq=3 ttl=63 time=88.9 ms +
-64 bytes from www.free.fr (212.27.48.10): icmp_seq=4 ttl=63 time=107 ms +
-^C +
---- www.free.fr ping statistics --- +
-4 packets transmitted, 4 received, 0% packet loss, time 3025ms +
-rtt min/avg/max/mdev = 80.331/92.823/107.080/9.730 ms+
 </code> </code>
  
-Avant de pouvoir consulter les sites virtuels existants, il faut modifier votre fichier **/etc/hosts** :+====Exercices====
  
-<code> +Trouvez maintenant les informations suivantes :
-root@debian8:/etc/apache2/sites-enabled# vi /etc/hosts +
-root@debian8:/etc/apache2/sites-enabled# cat /etc/hosts +
-127.0.0.1 localhost +
-127.0.1.1 debian8.i2tch.loc debian8+
  
-# The following lines are desirable for IPv6 capable hosts +  * tous les titres, 
-::1     localhost ip6-localhost ip6-loopback +  * le résumé de Spider-Man, 
-ff02::1 ip6-allnodes +  * le metteur en scène de Gladiator, 
-ff02::2 ip6-allrouters +  * les titres des films avec Kirsten Dunst, 
-10.0.2.16 i2tch.loc +  * les films ayant un résumé, 
-10.0.2.16   www.i2tch.loc +  * les films qui ne sont ni des drames ni des comédies, 
-10.0.2.16 www.debiannom.com +  * les titres des films et les noms des acteurs, 
-</code>+  * les films où Clint Eastwood est acteur mais pas réalisateur.
  
-Vous allez maintenant procéder à la création d'un site ( hôte ) virtuel par adresse IP. Normalement, votre serveur serait muni de deux cartes réseaux permettant ainsi d'attribuer un site ou hôte virtuel par numéro IP. Cependant, dans le cas suivant vous allez tout simplement affecté deux numéros IP à la même carte afin de procéder aux tests. Pour faire ceci, vous devez associer une deuxième adresse IP à votre carte réseau eth0. Saisissez donc la commande suivante dans une fenêtre de console en tant que root : 
  
-<code> 
-root@debian8:~# ip a | grep 'inet ' 
-    inet 127.0.0.1/8 scope host lo 
-    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 
-root@debian8:~# ip a add 192.168.1.99/24 dev eth0 
-root@debian8:~# ip a | grep 'inet ' 
-    inet 127.0.0.1/8 scope host lo 
-    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 
-    inet 192.168.1.99/24 scope global eth0 
-</code> 
  
-Créez maintenant le répertoire pour notre site2 :  +===Corrigés===
- +
-<code> +
-root@debian8:~# mkdir /www/site2 +
-</code>+
  
-Créez la page d'accueil :+==Tous les titres==
  
 <code> <code>
-root@debian8:~# vi /www/site2/index.html +movies>db.movies.find({}, {"title": 1}) 
-root@debian8:~# cat /www/site2/index.html +{ "_id" "movie:1", "title" : "Vertigo" } 
-<html> +{ "_id" : "movie:2", "title" : "Alien" } 
-<body> +{ "_id" : "movie:3", "title" : "Titanic" } 
-<center>Accueil du site 2</center> +{ "_id" : "movie:4", "title" : "Sacrifice" } 
-</body> +{ "_id" : "movie:5", "title" : "Volte/Face" } 
-</html>+{ "_id" : "movie:6", "title" : "Sleepy Hollow"
 +{ "_id" : "movie:7", "title" : "American Beauty"
 +{ "_id" : "movie:8", "title" : "Impitoyable"
 +{ "_id" : "movie:9", "title" : "Gladiator"
 +{ "_id" : "movie:10", "title" : "Blade Runner"
 +{ "_id" : "movie:11", "title" : "Piège de cristal"
 +{ "_id" : "movie:12", "title" : "58 minutes pour vivre" } 
 +{ "_id" : "movie:13", "title" : "Van Gogh" } 
 +{ "_id" : "movie:14", "title" : "Seven"
 +{ "_id" : "movie:15", "title" : "Twelve Monkeys"
 +{ "_id" : "movie:16", "title" : "Le last_name de la rose" } 
 +{ "_id" : "movie:17", "title" : "Pulp fiction"
 +{ "_id" : "movie:18", "title" : "Mary à tout prix" } 
 +{ "_id" : "movie:19", "title" : "Terminator"
 +{ "_id" : "movie:20", "title" : "Les dents de la mer" } 
 +Type "it" for more 
 +movies>
 </code> </code>
  
-Créez ensuite le répertoire /www/logs/site2 : +==Le résumé de Spider-Man==
  
 <code> <code>
-root@debian8:~# mkdir /www/logs/site2+movies>db.movies.find({"title""Spider-Man"}, {"summary": 1}) 
 +{ "_id" : "movie:47", "summary" : "Orphelin, Peter Parker est élevé par sa tante May et son oncle Ben dans le quartier Queens de New York. Tout en poursuivant ses études à l'université, il trouve un emploi de photographe au journal Daily Bugle. Il partage son appartement avec Harry Osborn, son meilleur ami, et rêve de séduire la belle Mary Jane.Cependant, après avoir été mordu par une araignée génétiquement modifiée, Peter voit son agilité et sa force s'accroître et se découvre des pouvoirs surnaturels. Devenu Spider-Man, il décide d'utiliser ses nouvelles capacités au service du bien.Au même moment, le père de Harry, le richissime industriel Norman Osborn, est victime d'un accident chimique qui a démesurément augmenté ses facultés intellectuelles et sa force, mais l'a rendu fou. Il est devenu le Bouffon Vert, une créature démoniaque qui menace la ville. Entre lui et Spider-Man, une lutte sans merci s'engage." }
 </code> </code>
  
-Modifiez l'appartenance du répertoire **/www** et son contenu :+==Le metteur en scène de Gladiator==
  
 <code> <code>
-root@debian8:~# chown -R www-data:www-data /www+movies>db.movies.find({"title""Gladiator"}, {"director"1}) 
 +{ "_id" : "movie:9", "director" : { "_id" : "artist:4", "last_name" : "Scott", "first_name" : "Ridley", "birth_date" : "1937" } }
 </code> </code>
  
-Copiez le fichier **/etc/apache2/sites-available/debiannom.conf** vers **/etc/apache2/sites-available/debianip.conf** :+==Les titres des films avec Kirsten Dunst==
  
 <code> <code>
-root@debian8:~# cp /etc/apache2/sites-available/debiannom.conf /etc/apache2/sites-available/debianip.conf+movies>db.movies.find({"actors.last_name": "Dunst"}, {"title": 1}) 
 +{ "_id" : "movie:67", "title" : "Marie Antoinette" }
 </code> </code>
  
-Editez maintenant le fichier **/etc/apache2/sites-available/debianip.conf**:+==Les films ayant un résumé==
  
 <code> <code>
-root@debian8:~# vi /etc/apache2/sites-available/debianip.conf +movies>db.movies.find({"summary": {$exists: true}}, {"title": 1}) 
-root@debian8:~# cat /etc/apache2/sites-available/debianip.conf +{ "_id" : "movie:1", "title" "Vertigo" } 
-<VirtualHost 192.168.1.99:80> +{ "_id" : "movie:2", "title" : "Alien" } 
- ServerName debianip.com +{ "_id" : "movie:3", "title" : "Titanic" } 
-   ServerAlias www.debianip.com +{ "_id" : "movie:4", "title" : "Sacrifice" } 
- +{ "_id" : "movie:5", "title" : "Volte/Face" } 
- ServerAdmin webmaster@localhost +{ "_id" : "movie:6", "title" : "Sleepy Hollow" } 
- DocumentRoot /www/site2 +{ "_id" : "movie:7", "title" : "American Beauty" } 
- +{ "_id" : "movie:8", "title" : "Impitoyable" } 
- Customlog /www/logs/site2/debianip.log combined +{ "_id" : "movie:9", "title" : "Gladiator" } 
- Errorlog /www/logs/site2/debianip_error.log +"_id: "movie:10", "title" : "Blade Runner" } 
- +{ "_id" : "movie:11", "title" : "Piège de cristal" } 
- <Directory "/www/site2"> +{ "_id" : "movie:12", "title" : "58 minutes pour vivre" } 
-     AllowOverride None +{ "_id" : "movie:13", "title" : "Van Gogh" } 
-     Require all granted +{ "_id" : "movie:14", "title" : "Seven" } 
- </Directory> +{ "_id" : "movie:15", "title" : "Twelve Monkeys" } 
- +{ "_id" : "movie:16", "title" : "Le last_name de la rose" } 
-</VirtualHost> +{ "_id" "movie:17", "title" : "Pulp fiction"
- +{ "_id" : "movie:18", "title" : "Mary à tout prix" } 
-# vimsyntax=apache ts=4 sw=4 sts=4 sr noet+{ "_id" : "movie:19", "title" : "Terminator"
 +{ "_id" : "movie:20", "title" : "Les dents de la mer" } 
 +Type "it" for more
 </code> </code>
  
-Créez le lien symbolique pour activer le site :+==Les films qui ne sont ni des drames ni des comédies==
  
 <code> <code>
-root@debian8:~# cd /etc/apache2/sites-enabled +movies>db.movies.find({"genre"{$nin: ["Drame", "Comédie"]}}, {"title": 1, "genre": 1}) 
-root@debian8:/etc/apache2/sites-enabled# ln -s ../sites-available/debianip.conf .+{ "_id" : "movie:1", "title" : "Vertigo", "genre" : "drama"
 +{ "_id" : "movie:2", "title" : "Alien", "genre" : "Science-fiction" } 
 +{ "_id" "movie:3", "title" : "Titanic", "genre" : "drama"
 +{ "_id" : "movie:4", "title" : "Sacrifice", "genre" : "drama"
 +{ "_id" : "movie:5", "title" : "Volte/Face", "genre" : "Action"
 +{ "_id" : "movie:6", "title" : "Sleepy Hollow", "genre" : "Fantastique"
 +{ "_id" : "movie:8", "title" : "Impitoyable", "genre" : "Western"
 +{ "_id" : "movie:9", "title" : "Gladiator", "genre" : "drama"
 +{ "_id" : "movie:10", "title" : "Blade Runner", "genre" : "Action"
 +{ "_id" : "movie:11", "title" : "Piège de cristal", "genre" : "Action"
 +{ "_id" : "movie:12", "title" : "58 minutes pour vivre", "genre" : "Action"
 +{ "_id" : "movie:13", "title" : "Van Gogh", "genre" : "drama"
 +{ "_id" : "movie:14", "title" : "Seven", "genre" : "crime"
 +{ "_id" : "movie:15", "title" : "Twelve Monkeys", "genre" : "Science-fiction"
 +{ "_id" : "movie:16", "title" : "Le last_name de la rose", "genre" : "crime"
 +{ "_id" : "movie:17", "title" : "Pulp fiction", "genre" : "Action"
 +{ "_id" : "movie:19", "title" : "Terminator", "genre" : "Science-fiction"
 +{ "_id" : "movie:20", "title" : "Les dents de la mer", "genre" : "Horreur"
 +{ "_id" : "movie:21", "title" : "Le silence des agneaux", "genre" : "crime"
 +{ "_id" : "movie:22", "title" : "Godzilla", "genre" : "Action"
 +Type "it" for more
 </code> </code>
  
-Éditez ensuite le fichier **/etc/hosts** :+==Les titres des films et les noms des acteurs==
  
 <code> <code>
-root@debian8:/etc/apache2/sites-enabled# vi /etc/hosts +movies>db.movies.find({}, {"title": 1, "actors.first_name": 1, "actors.last_name": 1}) 
-root@debian8:/etc/apache2/sites-enabled# cat /etc/hosts +{ "_id" : "movie:1", "title" : "Vertigo", "actors" : [ { "first_name" : "James", "last_name" : "Stewart" }, { "first_name" : "Kim", "last_name" : "Novak" }, { "first_name" : "Arthur", "last_name" : "Pierre" } ] } 
-127.0.0.1 localhost +{ "_id" : "movie:2", "title" : "Alien", "actors" : [ { "first_name" : "Sigourney", "last_name" : "Weaver" } ] } 
-127.0.1.1 debian8.i2tch.loc debian8 +{ "_id" "movie:3", "title" : "Titanic", "actors" : [ { "first_name" : "Kate", "last_name" : "Winslet" }, { "first_name" : "Leonardo", "last_name" : "DiCaprio" } ] } 
- +{ "_id" "movie:4", "title" : "Sacrifice", "actors" : [ ] } 
-# The following lines are desirable for IPv6 capable hosts +{ "_id" "movie:5", "title" : "Volte/Face", "actors" : [ { "first_name" : "John", "last_name" : "Travolta" }, { "first_name" : "Nicolas", "last_name" : "Cage" } ] } 
-::1     localhost ip6-localhost ip6-loopback +{ "_id" : "movie:6", "title" : "Sleepy Hollow", "actors" : [ { "first_name" : "Johnny", "last_name" : "Depp" }, { "first_name" : "Christina", "last_name" : "Ricci" }, { "first_name" : "Christopher", "last_name" : "Walken" } ] } 
-ff02::1 ip6-allnodes +{ "_id" : "movie:7", "title" : "American Beauty", "actors" : [ { "first_name" : "Kevin", "last_name" : "Spacey" }, { "first_name" : "Anette", "last_name" : "Bening" } ] } 
-ff02::2 ip6-allrouters +{ "_id" : "movie:8", "title" : "Impitoyable", "actors" : [ { "first_name" : "Clint", "last_name" : "Eastwood" }, { "first_name" : "Gene", "last_name" : "Hackman" }, { "first_name" : "Morgan", "last_name" : "Freeman" } ] } 
-10.0.2.16 i2tch.loc +{ "_id" : "movie:9", "title" : "Gladiator", "actors" : [ { "first_name" : "Russell", "last_name" : "Crowe" }, { "first_name" : "Adam", "last_name" : "Baldwin" }, { "first_name" : "Ryan", "last_name" : "ONeal" }, { "first_name" : "Marisa", "last_name" : "Berenson" } ] } 
-10.0.2.16   www.i2tch.loc +{ "_id" : "movie:10", "title" : "Blade Runner", "actors" : [ { "first_name" : "Harrison", "last_name" : "Ford" }, { "first_name" : "Rutger", "last_name" : "Hauer" } ] } 
-10.0.2.16 www.debiannom.com +{ "_id" : "movie:11", "title" : "Piège de cristal", "actors" : [ { "first_name" : "Bruce", "last_name" : "Willis" } ] } 
-192.168.1.99 www.debianip.com+{ "_id" : "movie:12", "title" : "58 minutes pour vivre", "actors" : [ { "first_name" : "Bruce", "last_name" : "Willis" } ] } 
 +{ "_id" : "movie:13", "title" : "Van Gogh", "actors" : [ { "first_name" : "Jacques", "last_name" : "Dutronc" } ] } 
 +{ "_id" : "movie:14", "title" : "Seven", "actors" : [ { "first_name" : "Kevin", "last_name" : "Spacey" }, { "first_name" : "Morgan", "last_name" : "Freeman" }, { "first_name" : "Brad", "last_name" : "Pitt" } ] } 
 +{ "_id" : "movie:15", "title" : "Twelve Monkeys", "actors" : [ { "first_name" : "Bruce", "last_name" : "Willis" } ] } 
 +{ "_id" : "movie:16", "title" : "Le last_name de la rose", "actors" : [ { "first_name" : "Sean", "last_name" : "Connery" }, { "first_name" : "Christian", "last_name" : "Slater" } ] } 
 +{ "_id" : "movie:17", "title" : "Pulp fiction", "actors" : [ { "first_name" : "John", "last_name" : "Travolta" }, { "first_name" : "Bruce", "last_name" : "Willis" }, { "first_name" : "Quentin", "last_name" : "Tarantino" }, { "first_name" : "Samuel L.", "last_name" : "Jackson" }, { "first_name" : "Rosanna", "last_name" : "Arquette" }, { "first_name" : "Uma", "last_name" : "Thurman" }, { "first_name" : "Christopher", "last_name" : "Walken" }, { "first_name" : "Harvey", "last_name" : "Keitel" }, { "first_name" : "Tim", "last_name" : "Roth" } ] } 
 +{ "_id" : "movie:18", "title" : "Mary à tout prix", "actors" : [ { "first_name" : "Cameron", "last_name" : "Diaz" }, { "first_name" : "Mat", "last_name" : "Dillon" } ] } 
 +{ "_id" : "movie:19", "title" : "Terminator", "actors" : [ { "first_name" : "Arnold", "last_name" : "Schwartzenegger" } ] } 
 +{ "_id" : "movie:20", "title" : "Les dents de la mer", "actors" : [ { "first_name" : "Roy", "last_name" : "Scheider" }, { "first_name" : "Robert", "last_name" : "Shaw" }, { "first_name" : "Richard", "last_name" : "Dreyfus" } ] } 
 +Type "it" for more
 </code> </code>
  
-Redémarrez votre serveur Apache :+==Les films où Clint Eastwood est acteur mais pas réalisateur==
  
 <code> <code>
-root@debian8:/etc/apache2/sites-enabled# systemctl restart httpd+movies>db.movies.find({"actors.last_name""Eastwood", "director.last_name": {$ne: "Eastwood"}}, {"title": 1}) 
 +{ "_id" : "movie:32", "title" : "Le bon, la brute et le truand" }
 </code> </code>
  
-Testez votre configuration avec **lynx** : 
  
-<code> 
-root@debian8:/etc/apache2/sites-enabled# lynx --dump http://www.debianip.com 
-                              Accueil du site 2 
  
  
-root@debian8:/etc/apache2/sites-enabled +=====LAB #4 - Jointures=====
-</code>+
  
-Consultez maintenant le répertoire **/www/logs/site2**. Vous constaterez l'apparition d'un fichier log pour le site www.debianip.com :+====Préparation====
  
-<code> +Sortez du client mongo, puis téléchargez à partir de la section Fichiers de ce cours les deux fichiers au format JSON dont nous aurons besoin pour ce LAB :
-root@debian8:/etc/apache2/sites-enabled# ls -l /www/logs/site2/ +
-total 4 +
--rw-r--r-- 1 root root   0 Aug 27 22:14 debianip_error.log +
--rw-r--r-- 1 root root 134 Aug 27 22:17 debianip.log +
-root@debian8:/etc/apache2/sites-enabled# cat /www/logs/site2/debianip.log  +
-192.168.1.99 - - [27/Aug/2018:22:17:23 +0100] "GET / HTTP/1.0" 200 311 "-" "Lynx/2.8.9dev.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/3.3.8" +
-</code>+
  
-==Hôtes Virtuels Dynamiques avec mod_vhost_alias==+  * movies_ref.json 
 +    * ce fichier contient la liste des films avec références, les identifiants des artistes, et impose donc d'effectuer des jointures 
 +  * artists.json 
 +    * ce fichier contient la liste des artistes.
  
-Commencez par installer le paquet **dnsmasq** afin de fournir les services d'un serveur DNS : +===Création des bases de données===
- +
-<code> +
-root@debian8:/etc/apache2/sites-enabled# cd ~ +
-root@debian8:~# apt-get install dnsmasq +
-</code>+
  
-Créez le fichier **/etc/dnsmasq.d/i2tch** pour indiquer à dnsmasq que le domaine i2tch.loc se trouve à l'adresse **127.0.0.1** :+Connectez-vous à MongoDB avec le client **mongo** et créez une base de données **moviesref** contenant deux collections **movies** et **artists**.
  
 <code> <code>
-root@debian8:~# vi /etc/dnsmasq.d/i2tch +[root@centos7 ~]mongo 
-root@debian8:~# cat /etc/dnsmasq.d/i2tch +MongoDB shell version3.2.16 
-listen-address=127.0.0.1 +connecting to: test 
-address=/.i2tch.loc/127.0.0.1+Server has startup warnings:  
 +2017-09-19T11:51:43.992+0200 I CONTROL  [initandlisten]  
 +2017-09-19T11:51:43.992+0200 I CONTROL  [initandlisten] ** WARNING: soft rlimits too lowrlimits set to 4096 processes, 64000 filesNumber of processes should be at least 32000 : 0.5 times number of files. 
 +movies>use moviesref 
 +switched to db moviesref 
 +moviesref>db.createCollection("movies"
 +{ "ok"
 +moviesref>db.createCollection("artists"
 +{ "ok" : 1 } 
 +moviesref>exit 
 +bye
 </code> </code>
  
-Re-démarrez le service dnsmasq pour prendre en compte vos modifications :+===Importer les données===
  
-<code> +Utilisez maintenant la commande **mongoimport** pour importer les fichiers dans MongoDB :
-root@debian8:~# systemctl restart dnsmasq +
-</code> +
- +
-Pour qu'apache puisse gérer les hôtes virtuels dynamiques, il faut que les modules **mod_rewrite** et **mod_vhost_alias** soient activés :+
  
 <code> <code>
-root@debian8:~# a2enmod vhost_alias +[root@centos7 ~]mongoimport -d moviesref -c movies --file movies-refs.json --jsonArray 
-Enabling module vhost_alias+2017-09-20T11:19:58.697+0200 connected to: localhost 
-To activate the new configuration, you need to run+2017-09-20T11:19:58.721+0200 imported 88 documents 
-  service apache2 restart +[root@centos7 ~]mongoimport -d moviesref -c artists --file artists.json --jsonArray 
-root@debian8:~# +2017-09-20T11:20:14.384+0200 connected to: localhost 
-root@debian8:~# a2enmod rewrite +2017-09-20T11:20:14.405+0200 imported 206 documents
-Enabling module rewrite+
-To activate the new configuration, you need to run+
-  service apache2 restart+
 </code> </code>
  
-Editez maintenant le fichier **/etc/apache2/sites-available/000-default.conf** : +<WRAP center round important
- +**Important** Notez que l’argument jsonArray indique à mongoimport qu’il s’agit d’un tableau d’objets à créer individuellement, et pas d’un unique document JSON
-<code+</WRAP>
-root@debian8:~# vi /etc/apache2/sites-available/000-default.conf  +
-root@debian8:~# cat /etc/apache2/sites-available/000-default.conf  +
-<VirtualHost *:80> +
- +
- ServerName i2tch.loc +
- ServerAlias *.i2tch.loc +
- +
- ServerAdmin webmaster@localhost +
- VirtualDocumentRoot /var/www/html/%-+
- +
- LogLevel info +
- +
- ErrorLog ${APACHE_LOG_DIR}/error.log +
- CustomLog ${APACHE_LOG_DIR}/access.log combined +
- +
- <Directory /> +
- Options FollowSymLinks +
- AllowOverride All +
- </Directory> +
- +
-</VirtualHost> +
- +
-# vim: syntax=apache ts=4 sw=4 sts=4 sr noet +
-</code>+
  
-Créez le fichier **/var/www/html/.htaccess** afin d'activer la ré-écriture des URLs :+Re-connectez-vous à MongoDB en utilisant le client mongo :
  
 <code> <code>
-root@debian8:~# vi /var/www/html/.htaccess +[root@centos7 ~]mongo 
-root@debian8:~# cat /var/www/html/.htaccess +MongoDB shell version: 3.2.16 
-RewriteEngine On +connecting totest 
-RewriteBase /+Server has startup warnings:  
 +2017-09-19T11:51:43.992+0200 I CONTROL  [initandlisten]  
 +2017-09-19T11:51:43.992+0200 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files
 +test>use moviesref 
 +switched to db moviesref
 </code> </code>
  
-Re-démarrez le serveur apache2 :+====Effectuer la jointure du côté client====
  
-<code> +Le serveur MongoDB ne sait pas effectuer de jointures. Pour cette raison celles-ci doivent être mises en place du côté client. Cela revient essentiellement à appliquer l’algorithme de jointures par boucle imbriquées en stockant des données temporaires dans des structures de données sur le client, et en effectuant des échanges réseaux entre le client et le serveur.
-root@debian8:~# systemctl restart apache2 +
-</code>+
  
-Creéz maintenant le répertoire **/var/www/html/_** pour contenir le site par défaut :+La première étape dans la jointure côté client consiste à chercher l’artiste Clint Eastwood et à le stocker dans l’espace mémoire du client :
  
 <code> <code>
-root@debian8:~# mkdir /var/www/html/_+moviesref>eastwood = db.artists.findOne({"first_name""Clint", "last_name": "Eastwood"}) 
 +
 + "_id" : "artist:20", 
 + "last_name" : "Eastwood", 
 + "first_name" : "Clint", 
 + "birth_date" : "1930" 
 +}
 </code> </code>
  
-Créez la page d'accueil du site par défaut :+Ensuite il convient d'utiliser cette "variable" pour rechercher dans la collection **movies** :
  
 <code> <code>
-root@debian8:~# vi /var/www/html/_/index.html +moviesref>db.movies.find({"director._id": eastwood['_id']}, {"title": 1}) 
-root@debian8:~# cat /var/www/html/_/index.html +{ "_id" "movie:8", "title" : "Impitoyable" } 
-<html> +{ "_id" : "movie:26", "title" : "Les pleins pouvoirs" } 
-<body> +{ "_id" : "movie:63", "title" : "Million Dollar Baby" }
-<center>Accueil du site par défaut</center> +
-</body> +
-</html>+
 </code> </code>
  
-Créez deux sites **projecta** et **projectb** :+=====MapReduce=====
  
-<code> +====Définition====
-root@debian8:~# mkdir /var/www/html/projecta +
-root@debian8:~# vi /var/www/html/projecta/index.html +
-root@debian8:~# cat /var/www/html/projecta/index.html +
-<html> +
-<body> +
-<center>Accueil du Project A</center> +
-</body> +
-</html> +
-</code>+
  
-<code> +Etant donné une collection de documents on applique un traitement en deux phases:
-root@debian8:~# mkdir /var/www/html/projectb +
-root@debian8:~# vi /var/www/html/projectb/index.html +
-root@debian8:~# cat /var/www/html/projectb/index.html +
-<html> +
-<body> +
-<center>Accueil du Project B</center> +
-</body> +
-</html> +
-</code>+
  
-Modifiez l'appartenance du répertoire **/var/www/html** et son contenu :+=== La première phase appelée map===
  
-<code> +Une fonction est appliquée à chaque document de la collection et produit une valeur placée dans un **accumulateur**.
-root@debian8:~# chown -R www-data:www-data /var/www/html +
-</code>+
  
-Modifiez le fichier **/etc/resolv.conf** en y ajoutant la ligne **nameserver 127.0.0.1** :+===La seconde phase appelée reduce===
  
-<code> +Les valeurs placées dans l’accumulateur sont traitées par une fonction d’agrégation **reduce** ,produisant une valeur finale.
-root@debian8:~# vi /etc/resolv.conf  +
-root@debian8:~# cat /etc/resolv.conf  +
-# Generated by NetworkManager +
-nameserver 127.0.0.1 +
-nameserver 8.8.8.8 +
-</code>+
  
-Testez que vous avez accès aux hôtes virtuels :+Un exemple simple peut être vu en considérant la requête SQL suivante :
  
-<code> +  select count(*) from Collection
-root@debian8:~# lynx --dump http://www.debiannom.com +
-                              Accueil du site 1+
  
-root@debian8:~# lynx --dump http://www.debianip.com +Dans ce cas :
-                              Accueil du site 2+
  
-root@debian8:~# lynx --dump http://i2tch.loc +  * la phase **map** produit une valeur de 1 et la place dans l'**accumulateur** pour chaque document dans la collection, 
-                         Accueil du site par défaut+  * la phase **reduce** calcule la somme pour produire un résultat.
  
-root@debian8:~# lynx --dump http://projecta.i2tch.loc/ +En allant un peu plus loins, considérez la requête SQL suivante :
-                            Accueil du Project A+
  
-root@debian8:~# lynx --dump http://projectb.i2tch.loc/ +  select count(*) from Collection group by annee
-                            Accueil du Project B+
  
-</code>+Dans ce cas, les valeurs produites par le **map** sont **partionnées** en groupes où chaque groupe représente une année. Le **map** produit donc des paires **groupe, valeur** ou **année, valeur**.
  
-====LAB #2 - Gestion des pages personnelles avec mod_userdir====+Revenons maintenant à notre base de données de films. Notre but est de produire un document par réalisateur contenant la liste des films réalisés par ce réalisateur :
  
-===Sous RHEL / CentOS 7===+  * la phase **map** : un groupe doit être créé par réalisateur contenant les films réalisés par ce dernier, 
 +  * la phase **reduce** : la création du document final. 
  
-Pour qu'apache puisse gérer les pages personnelles des utilisateurs enregistrées du système, il faut que le module **mod_userdir** soit activé dans le fichier **/etc/httpd/conf.modules.d/00-base.conf** +Par exemple la phase **map** est la définition d'une variable **mapRealisateur** contenant une fonctionSaisissez donc cette commande dans l'interface du client mongo :
- +
-<file> +
-... +
-LoadModule userdir_module modules/mod_userdir.so +
-... +
-</file> +
- +
-Afin de pouvoir tester les pages perso, ajoutez un nouveau utilisateur dénommé homepage :+
  
 <code> <code>
-[root@centos7 ~]# groupadd homepage && useradd homepage -c homepage -g homepage -d /home/homepage -s /bin/bash+movies>var mapRealisateur = function() { 
 +...               emit(this.director._id, this.title); 
 +...       }; 
 +movies>
 </code> </code>
  
-Créez le répertoire /home/homepage/public_html : +<WRAP center round important> 
 +**Important** - La fonction contient l'instruction **emit** qui produit une paire **clef:valeur** constituée de l'identifiant du réalisateur et du titre du film. Le mot clef **this** indique le document actuel. 
 +</WRAP>
  
-<code> +La phase **reduce** contient une fonction, **reduceRealisateur**, qui prend deux arguments **directorId**, l’identifiant du groupe auquel elle s’applique, et la liste des valeurs produites par le **map** sous forme d'un tableau javascript. Saisissez donc cette commande dans l'interface du client mongo :
-[root@centos7 ~]# mkdir /home/homepage/public_html +
-</code> +
- +
-Modifiez l'appartenance du répertoire /home/homepage :+
  
 <code> <code>
-[root@centos7 ~]# chown -R homepage:homepage /home/homepage+movies>var reduceRealisateur = function(directorId, titres) { 
 +...    var res = new Object(); 
 +...    res.director = directorId; 
 +...    res.films = titres; 
 +...    return res; 
 +...  }; 
 +movies>
 </code> </code>
  
-Ouvrez le fichier **/etc/httpd/conf.d/userdir.conf**. Le but de de fichier est de configurer le support des répertoires des utilisateurs dans le cas où le module **mod_userdir.c** est chargé :+<WRAP center round important> 
 +**Important** - La fonction construit la valeur de résultat comme un objet **res** auquel on affecte deux propriétés**director** et **titres**. 
 +</WRAP>
  
-<code> +Pour lancer le traitement, il convient d'exécuter la commande suivante qui appelle la fonction **mapReduce** sur la collection **movies** :
-[root@centos7 ~]# cat /etc/httpd/conf.d/userdir.conf +
-+
-# UserDir: The name of the directory that is appended onto a user's home +
-# directory if a ~user request is received. +
-+
-# The path to the end user account 'public_html' directory must be +
-# accessible to the webserver userid.  This usually means that ~userid +
-# must have permissions of 711, ~userid/public_html must have permissions +
-# of 755, and documents contained therein must be world-readable. +
-# Otherwise, the client will only receive a "403 Forbidden" message. +
-+
-<IfModule mod_userdir.c> +
-    # +
-    # UserDir is disabled by default since it can confirm the presence +
-    # of a username on the system (depending on home directory +
-    # permissions). +
-    # +
-    UserDir disabled +
- +
-    # +
-    # To enable requests to /~user/ to serve the user's public_html +
-    # directory, remove the "UserDir disabled" line above, and uncomment +
-    # the following line instead: +
-    #  +
-    #UserDir public_html +
-</IfModule> +
- +
-+
-# Control access to UserDir directories.  The following is an example +
-# for a site where these directories are restricted to read-only. +
-+
-<Directory "/home/*/public_html"> +
-    AllowOverride FileInfo AuthConfig Limit Indexes +
-    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec +
-    Require method GET POST OPTIONS +
-</Directory> +
-</code> +
- +
-Modifiez ce fichier ainsi :+
  
 <code> <code>
-[root@centos7 ~]# vi /etc/httpd/conf.d/userdir.conf +movies>db.movies.mapReduce(mapRealisateur,  reduceRealisateur, {out: {"inline": 1}} ) 
-[root@centos7 ~]# cat /etc/httpd/conf.d/userdir.conf +
-# + "results"[ 
-# UserDirThe name of the directory that is appended onto a user's home +
-# directory if a ~user request is received. + "_id" : "artist:1", 
-# + "value" : "Marie Antoinette" 
-The path to the end user account 'public_html' directory must be + }, 
-# accessible to the webserver userid.  This usually means that ~userid +
-# must have permissions of 711~userid/public_html must have permissions + "_id" : "artist:10", 
-# of 755and documents contained therein must be world-readable. + "value" : "Volte/Face" 
-# Otherwisethe client will only receive a "403 Forbiddenmessage. + }, 
-# +
-<IfModule mod_userdir.c> + "_id" : "artist:101", 
-    UserDir public_html + "value" : { 
-</IfModule> + "director" : "artist:101", 
- + "films" : [ 
-# + "Eyes Wide Shut", 
-# Control access to UserDir directories.  The following is an example + "Shining" 
-# for a site where these directories are restricted to read-only. +
-# +
-<Directory "/home/*/public_html"> + }, 
-    AllowOverride FileInfo AuthConfig Limit Indexes +
-    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec + "_id" : "artist:111", 
-    Require method GET POST OPTIONS + "value" : { 
-</Directory>+ "director" : "artist:111", 
 + "films" : [ 
 + "Jeanne d'Arc", 
 + "Le cinquième élément", 
 + "Léon", 
 + "Nikita", 
 + "Le grand bleu" 
 +
 +
 + }, 
 +
 + "_id" "artist:122", 
 + "value" : { 
 + "director" : "artist:122", 
 + "films" : [ 
 + "King of New York", 
 + "Bad Lieutenant" 
 + ] 
 +
 + }, 
 +
 + "_id" : "artist:13", 
 + "value" : "Sleepy Hollow" 
 + }, 
 +
 + "_id" : "artist:135", 
 + "value" : "The Matrix Revolutions" 
 + }, 
 +
 + "_id" : "artist:138"
 + "value" : "De bruit et de fureur" 
 + }
 +
 + "_id" : "artist:142", 
 + "value" : "Usual suspects
 + }, 
 + { 
 + "_id" : "artist:168", 
 + "value" : "Une journée en enfer" 
 + }, 
 + { 
 + "_id" : "artist:17", 
 + "value" : { 
 + "director" : "artist:17", 
 + "films: [ 
 + "American Beauty", 
 + "Skyfall" 
 + ] 
 +
 + }, 
 +...
 </code> </code>
  
-Redémarrez le service apache :+<WRAP center round important> 
 +**Important** - Le premier paramètre est la fonction de **map**, le second la fonction de **reduce**, et le troisième indique la sortie, ici l’écran. 
 +</WRAP>
  
-<code> +**MapReduce** peut prendre plusieurs options dont une s'avère particuluièrement utile, à savoir le résultat d’une requête :
-[root@centos7 ~]# systemctl restart httpd +
-</code> +
- +
-Creéz maintenant une page d'accueil dans le répertoire **/home/homepage/public_html/**:+
  
 <code> <code>
-[root@centos7 ~]# vi /home/homepage/public_html/index.html +movies>db.movies.mapReduce(mapRealisateur,  reduceRealisateur, 
-[root@centos7 ~]# cat /home/homepage/public_html/index.html +...          {out: {"inline": 1}, query: {"country": "USA"}} ) 
-<html> +
-<head> + "results"[ 
-<title>Page de Test</title> +
-<body> + "_id" : "artist:1", 
-<center>La Page de l'utilisateur Homepage</center> + "value" : "Marie Antoinette" 
-</body> + }, 
-</html> +
-</code>+ "_id" : "artist:10", 
 + "value" : "Volte/Face" 
 + }, 
 +
 + "_id" : "artist:101", 
 + "value" : "Eyes Wide Shut" 
 + }, 
 +
 + "_id" : "artist:122", 
 + "value" : { 
 + "director" : "artist:122", 
 + "films"[ 
 + "King of New York", 
 + "Bad Lieutenant" 
 +
 + } 
 + }, 
 + { 
 + "_id" : "artist:13", 
 + "value" : "Sleepy Hollow" 
 + }, 
 + { 
 + "_id" : "artist:135", 
 + "value" : "The Matrix Revolutions" 
 + }, 
 +
 + "_id" : "artist:142", 
 + "value" : "Usual suspects" 
 + }, 
 +
 + "_id" : "artist:168", 
 + "value" : "Une journée en enfer" 
 + }, 
 +
 + "_id" : "artist:17", 
 + "value" : { 
 + "director" : "artist:17", 
 + "films" : [ 
 + "American Beauty", 
 + "Skyfall" 
 +
 +
 + },
  
-Modifiez les permissions sur le répertoire **/home/homepage** afin que l'utilisateur **apache** puisse avoir accès à son contenu : 
- 
-<code> 
-[root@centos7 ~]# chmod 711 /home/homepage 
-[root@centos7 ~]# chmod 755 /home/homepage/public_html/ 
-[root@centos7 ~]# chmod 666 /home/homepage/public_html/index.html 
 </code> </code>
  
-Le site personnel de l'utilisateur est maintenant en ligne. Pour le tester utilisez **lynx** : 
  
-<code> +=====Références=====
-[root@centos7 ~]# lynx --dump http://localhost/~homepage/ +
-                      La Page de l'utilisateur Homepage+
  
 +  * https://www.mongodb.com/fr
 +  * https://fr.wikipedia.org/wiki/MongoDB
 +  * http://blog.ippon.fr/2013/11/19/mongodb-est-moins-rapide-et-alors/
 +  * http://www.next-decision.fr/les-editeurs/stockage/mongo-db
 +  * https://docs.mongodb.com/manual/release-notes/
 +  * http://b3d.bdpedia.fr/mongodb.html
 +  * https://openclassrooms.com/courses/guide-de-demarrage-pour-utiliser-mongodb
 +  * http://blog.xebia.fr/2010/12/15/mongodb-en-pratique/
 +  * http://www.slideshare.net/marksmalley1/json-the-argonauts-and-mark
 +  * https://fr.wikipedia.org/wiki/BSON
 +  * https://blog.michaelckennedy.net/2013/04/22/a-roundup-of-mongodb-management-tools-nosql-database/
 +  * http://rockmongo.com/
 +  * http://genghisapp.com/
 +  * http://b3d.bdpedia.fr/mongodb.html
 +  * http://blog.xebia.fr/2010/12/15/mongodb-en-pratique/
 +  * https://api.mongodb.com/java/current/
 +  * http://javarticles.com/2016/01/inserting-document-using-mongodb-java-driver.html
 +  * https://www.mongodb.com/blog/post/introducing-new-c-driver
 +  * http://mongoc.org/libmongoc/1.2.2/tutorial.html
  
-[root@centos7 ~]#  +-----
-</code> +
- +
-===Sous Debian 8=== +
- +
-Pour qu'apache puisse gérer les pages personnelles des utilisateurs enregistrées du système, il faut que le module **mod_userdir** soit activé : +
- +
-<code> +
-root@debian8:~# apachectl -M | grep userdir +
-root@debian8:~# a2enmod userdir +
-Enabling module userdir. +
-To activate the new configuration, you need to run: +
-  service apache2 restart +
-root@debian8:~# apachectl -M | grep userdir +
- userdir_module (shared) +
-root@debian8:~# systemctl restart apache2 +
-</code> +
- +
-Afin de pouvoir tester les pages perso, ajoutez un nouveau utilisateur dénommé homepage : +
- +
-<code> +
-root@debian8:~# groupadd homepage +
-root@debian8:~# useradd homepage --c homepage -g homepage -d /home/homepage -s /bin/bash +
-</code> +
- +
-Créez le répertoire /home/homepage/public_html :  +
- +
-<code> +
-root@debian8:~# mkdir /home/homepage/public_html +
-</code> +
- +
-Modifiez l'appartenance du répertoire /home/homepage : +
- +
-<code> +
-root@debian8:~# chown -R homepage:homepage /home/homepage +
-</code> +
- +
-Consultez le fichier **/etc/apache2/mods-available/userdir.conf**. Le but de de fichier est de configurer le support des répertoires des utilisateurs dans le cas où le module **mod_userdir.c** est chargé : +
- +
-<code> +
-<code> +
-root@debian8:~# cat /etc/apache2/mods-available/userdir.conf +
-<IfModule mod_userdir.c> +
- UserDir public_html +
- UserDir disabled root +
- +
- <Directory /home/*/public_html> +
- AllowOverride FileInfo AuthConfig Limit Indexes +
- Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec +
- <Limit GET POST OPTIONS> +
- Require all granted +
- </Limit> +
- <LimitExcept GET POST OPTIONS> +
- Require all denied +
- </LimitExcept> +
- </Directory> +
-</IfModule> +
- +
-# vim: syntax=apache ts=4 sw=4 sts=4 sr noet +
-</code> +
- +
-Creéz maintenant une page d'accueil dans le répertoire **/home/homepage/public_html/**: +
- +
-<code> +
-root@debian8:~# vi /home/homepage/public_html/index.html +
-root@debian8:~# cat /home/homepage/public_html/index.html+
 <html> <html>
-<head+<div align="center"
-<title>Page de Test</title> +Copyright © 2004-2017 I2TCH LIMITED.<br><br
-<body> +</div>
-<center>La Page de l'utilisateur Homepage</center+
-</body>+
 </html> </html>
-</code>+-----
  
-Modifiez les permissions sur le répertoire **/home/homepage** afin que l'utilisateur **www-data** puisse avoir accès à son contenu : 
- 
-<code> 
-root@debian8:~# chmod 711 /home/homepage 
-root@debian8:~# chmod 755 /home/homepage/public_html/ 
-root@debian8:~# chmod 666 /home/homepage/public_html/index.html 
-</code> 
- 
-Le site personnel de l'utilisateur est maintenant en ligne. Pour le tester utilisez **lynx** : 
- 
-<code> 
-root@debian8:~# lynx --dump http://localhost/~homepage/ 
-                      La Page de l'utilisateur Homepage 
- 
- 
-root@debian8:~# 
-</code> 
- 
------ 
-<html> 
-<DIV ALIGN="CENTER"> 
-Copyright © 2004-2018 Hugh Norris. 
-</DIV> 
-</html> 
  
Menu