Outils pour utilisateurs

Outils du site


nethserver_101_cahier_06_nethserver_wordpress

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nethserver_101_cahier_06_nethserver_wordpress [2019-08-06 15:24] michelandrenethserver_101_cahier_06_nethserver_wordpress [2025-01-12 19:30] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +\\ 
 +[[cours_nethserver_101|{{ Images_Cahier-101-06-000.png?650 }}]]
 +\\ 
 +====== Description générale ======
  
 +Le **Cahier-06** du cours **NethServer-101** décrit l'installation de **Wordpress-4.9.9** et sa mise à jour vers la dernière version disponible, c.-à-d. //WordPress-5.0.3// du //5 janvier 2019//, la création d'un hôte virtuel et installation d'un deuxième WordPress pour ce dernier.
 +
 +{{Images_Cahier-101-03-005.png?25}} Ce cahier peut être utilisé pour l'installation de toutes les versions 4.x/5.x de WordPress.
 +
 +//Référence:// [[http://fr.wikipedia.org/wiki/WordPress|http://fr.wikipedia.org/wiki/WordPress]].\\ 
 +WordPress est un système de gestion de contenu LIBRE, écrit en PHP et reposant sur une base de données MySQL, distribué par Automattic. WordPress est surtout utilisé comme moteur de blog, mais ses fonctionna­lités lui permettent également de gérer n'importe quel site web. Il est distribué selon les termes de la GNU GPL. Le logiciel est aussi à l'origine du service WordPress.com.
 +
 +===== Description du Serveur NethServer utilisé pour ce cahier =====
 +
 +Pour ce cahier, nous utilisons le Serveur NethServer du [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]: //Création d'un Serveur NethServer virtuel//.
 +
 +{{ Images_Cahier-101-06-001.png?400 }}
 +\\ 
 +
 +==== But de ce cahier ==== 
 +
 +{{ Images_Cahier-101-06-002.png?600 }}
 +\\ 
 +
 +===== Cours NethServer-101 =====
 +
 +Le //Cours NethServer-101//, se voulant une base solide pour la création d'un site de **Commerce en ligne**, comprend plusieurs cahiers:
 +
 +  - [[nethserver_101_cahier_01_linux|Cahier-01]]: -> Les bases de Linux.
 +  - [[nethserver_101_cahier_02_installations_configurations_logiciels_prerequis|Cahier-02]]: -> Installation et configuration des logiciels prérequis sur le poste de travail.
 +  - [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]: -> Création d'un Serveur NethServer virtuel.
 +  - [[nethserver_101_cahier_04_local_certificat_let_encrypt|Cahier-04]]: -> Serveur NethServer LOCAL & Let's Encrypt.
 +  - [[nethserver_101_cahier_05_vdsl_fqdn_internet_et_nethserver|Cahier-05]]: -> FAI, modem VDSL, domaine FQDN(( **FQDN**: Dans le //DNS//, un Fully Qualified Domain Name //(FQDN, ou nom de domaine complètement qualifié)// est un nom de domaine qui révèle la position absolue d'un nœud dans l'arborescence //DNS// en indiquant tous les domaines de niveau supérieur jusqu'à la racine. On parle également de domaine absolu, par opposition aux domaines relatifs. Par convention, le //FQDN// est ponctué par un point final.\\ 
 +//Référence:// [[https://fr.wikipedia.org/wiki/Fully_qualified_domain_name|https://fr.wikipedia.org/wiki/Fully_qualified_domain_name]]. \\ \\ )) et Serveur NethServer physique.
 +  - [[nethserver_101_cahier_06_nethserver_wordPress|Cahier-06]]: -> Installation de WordPress.
 +  - [[nethserver_101_cahier_07_nethserver_wordPress_wordfence|Cahier-07]]: -> Installation de l'extension de sécurité Wordfence.
 +  - [[nethserver_101_cahier_08_woocommerce_paypal_stripe|Cahier-08]]: -> WooCommerce, comptes chez Stripe et   PayPal pour les paiements en ligne.
 +  - [[nethserver_101_cahier_09_duplicator_migration|Cahier-09]]: -> Sauvegarde/restauration ou migration d'un site avec l'extension Duplicator.
 +  - [[nethserver_101_cahier_10_mandataire_inverse|Cahier-10]]: -> Serveur mandataire inversé.
 +  - [[nethserver_101_cahier_11_nethserver_backuppc|Cahier-11]]: -> Sauvegarde/restauration avec BackupPC.
 +
 +==== Cours NethServer-201 ====
 +
 +Le //Cours NethServer-201// décrit l'installation et la configuration d'applications sur un serveur NethServer.
 +
 +  - [[nethserver_201_cahier_01_nethserver_et_dolibarr|Cahier-201-01]]: -> Dolibarr.
 +  - [[nethserver_201_cahier_02_odoo_12|Cahier-201-02]]: -> Odoo-12.
 +  - [[nethserver_201_cahier_03_mediawiki|Cahier-201-03]]: -> MediaWiki.
 +  - [[nethserver_201_cahier_04_dokuwiki|Cahier-201-04]]: -> DokuWiki.
 +  - [[nethserver_201_cahier_05_moodle|Cahier-201-05]]: -> Moodle.
 +  - [[nethserver_201_cahier_06_proxmox|Cahier-201-06]]: -> Proxmox.
 +  - [[nethserver_201_cahier_07_flectra|Cahier-201-07]]: -> Flectra.
 +
 +==== Logiciels ====
 +
 +Tous les logiciels nécessaires sont du domaine public ou LIBRE sous licence //GPL//; ils ne coûtent pas un sou. Le seul achat nécessaire est l'obtention d'un nom de domaine au prix initial de $15 CAD et son renouvellement annuel d'environ $30 CAD.
 +
 +==== But final ====
 +
 +Après avoir suivi le //Cours NethServer-101//, vous posséderez un site de //Commerce en ligne// fiable et hautement sécuritaire. De plus, vous pourrez utiliser un clone de votre site, sur un //Serveur NethServer// virtuel roulant sur votre poste de travail, pour tester de nouvelles extensions et applications sans compromettre la sécurité ou l'intégrité de votre site en ligne.
 +
 +{{ NS-101_001_Diagramme.png?500 }}
 +
 +===== Particularités de ce document =====
 +
 +==== Notes au lecteur ====
 +
 +<nowiki>*</nowiki> Les captures d'écrans ne sont que des références.\\
 +<nowiki>**</nowiki> Les informations écrites ont préséance sur celles retrouvées dans les captures d'écrans. Veillez vous référer aux différents tableaux lorsque ceux-ci sont présents.\\ 
 +<nowiki>***</nowiki> Une capture d'écran avec une accentuation en magenta indique qu'il faut remplacer cette distinction par vos propres paramètres ou implique un choix laissé à votre appréciation.
 +
 +==== Conventions ====
 +
 +{{Images_icone-201-001_doigt.png?22}} Manipulation, truc ou ruse pour se tirer d'embarras.\\
 +{{Images_icone-201-002_Lumiere.png?25}} Une recommandation ou astuce.\\
 +{{Images_icone-201-003_Note.png?25}} Une note.\\
 +{{Images_icone-201-004_Triangle.png?25}} Une étape, note ou procédure à surveiller.\\
 +{{Images_icone-201-005_Non-termine.png?25}} Paragraphe non complété ou non vérifié.\\
 +{{Images_icone-201-006_Securite.png?25}} Danger pour la sécurité du système.
 +
 +Toutes les commandes à la console ou à travers //PuTTY// sont précédées d'une invite qui est toujours présente.
 +
 +<file>
 +[root@dorgee ~]# ping 10.10.10.75 -c1
 +
 +PING 10.10.10.75 (10.10.10.75) 56(84) bytes of data.
 +64 bytes from 10.10.10.75: icmp_seq=1 ttl=64 time=1.63 ms
 +
 +--- 10.10.10.75 ping statistics ---
 +1 packets transmitted, 1 received, 0% packet loss, time 0ms
 +rtt min/avg/max/mdev = 1.639/1.639/1.639/0.000 ms
 +[root@dorgee ~]#
 +</file>
 +
 +<WRAP box round>
 +<file>
 +Commande à exécuter si ce n'est déjà fait.
 +</file>
 +</WRAP>
 +
 +<WRAP box>
 +<file>
 +Commande indiquée à titre d'information seulement.
 +</file>
 +</WRAP>
 +\\ 
 +
 +====== Prérequis ======
 +
 +===== Installation d'un Serveur NethServer =====
 +
 +Voir le [[nethserver_101_cahier_03_creation_un_serveur_virtuel#Cahier-03]]: //Création d'un Serveur NethServer virtuel//.
 +\\ 
 +
 +===== Mise à jour du Serveur =====
 +
 +Avant de commencer quoi que ce soit, il est toujours préférable de mettre à jour le Serveur NethServer. Voir la section //Gestionnaire des logiciels// dans le [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]: dans le Cahier-03: //Création d'un Serveur NethServer virtuel//.
 +\\ 
 +
 +===== Collection PHP =====
 +
 +Version PHP actuelle pour un Serveur NethServer-7.6-1810.
 +
 +<file>
 +[root@tchana ~]# php --version
 +
 +PHP 5.4.16 (cli) (built: Oct 30 2018 19:30:51)
 +Copyright (c) 1997-2013 The PHP Group
 +Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
 +[root@tchana ~]#
 +</file>
 +
 +Comme on le voit, notre version //5.4.16// de PHP est légèrement vieillotte.
 +
 +{{Images_Cahier-101-03-005.png?25}} Nous allons installer la Collection PHP qui fournit une version plus récente tout en gardant installée la version originale.
 +
 +==== Collections de logiciels ==== 
 +
 +{{Images_Cahier-101-03-003.png?22}} Les développeurs de RedHat ont pensé qu'un inconvénient, avec entre autres la version 5 de PHP, allait survenir tôt ou tard et ont écrit les paquetages des //Collections//.
 +
 +Tous les //RPM// des Collections sont installés dans le répertoire ''/opt''; ce qui empêche toutes interférences ou conflits avec les installations par défaut.
 +
 +=== * Collection PHP ===
 +
 +Le but de la //Collection PHP// est d'installer //PHP-5.6//, //PHP-7.0//, //PHP-7.1//, //PHP-7.2// et //PHP-7.3// parallèlement à la version installée par défaut avec NethServer-7.6.1810, sans devoir supprimer ou modifier cette dernière. Cette Collection utilise les RPM du référentiel **remi** qui sont en fait, les mêmes que ceux sur le site Web officiel, mais ils ont l'avantage de fournir plus de choix. Cette Collection nécessite d'installer le référentiel **stephdl**.
 +
 +=== ** Collection MariaDB 10.2 ===
 +
 +Nous installerons aussi la //Collection MariaDB 10.2//, car elle offre une durée de vie s'étendant jusqu'à //mai 2022//.
 +\\ 
 +\\ 
 +
 +==== Prérequis pour l'installation de la Collection PHP ==== 
 +
 +//Référence:// [[https://wiki.nethserver.org/doku.php?id=php-scl|https://wiki.nethserver.org/doku.php?id=php-scl]].\\ 
 +Il faut installer les référentiels //stephdl// et //remi// pour pouvoir installer la //Collection PHP//.
 +
 +=== Référentiel stephdl ===
 +
 +//Référence:// [[https://wiki.nethserver.org/doku.php?id=stephdl_repository|https://wiki.nethserver.org/doku.php?id=stephdl_repository]].
 +
 +<file>
 +[root@tchana ~]# yum install -y  http://mirror.de-labrusse.fr/NethServer/7/x86_64/nethserver-stephdl-1.0.7-1.ns7.sdl.noarch.rpm
 +
 +...
 +Transaction Summary
 +============================================================================================
 +Install  1 Package
 +
 +Total size: 40 k
 +Installed size: 40 k
 +...
 +Installed:
 +  nethserver-stephdl.noarch 0:1.0.7-1.ns7.sdl
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +
 +Vérification.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep stephdl
 +
 +nethserver-stephdl-1.0.7-1.ns7.sdl.noarch
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +=== Référentiel remi ===
 +
 +<file>
 +[root@tchana ~]# yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
 +
 +...
 +Transaction Summary
 +============================================================================================
 +Install  1 Package
 +
 +Total size: 18 k
 +Installed size: 18 k
 +...
 +Installed:
 +  remi-release.noarch 0:7.6-1.el7.remi
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +
 +Vérification
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep remi
 +
 +remi-release-7.6-1.el7.remi.noarch
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +==== Installation de la Collection PHP ==== 
 +
 +<file>
 +[root@tchana ~]# yum install -y nethserver-php-scl --enablerepo=stephdl
 +
 +...
 +Resolving Dependencies
 +...
 +Dependencies Resolved
 +...
 +Transaction Summary
 +============================================================================================
 +Install  1 Package (+129 Dependent packages)
 +
 +Total download size: 47 M
 +Installed size: 134 M
 +Downloading packages:
 +(1/130): enchant-1.6.0-8.el7.x86_64.rpm                              |  55 kB  00:00:00
 +...
 +(130/130): php73-php-fpm-7.3.1-1.el7.remi.x86_64.rpm                 | 1.7 MB  00:00:08
 +--------------------------------------------------------------------------------------------
 +Total                                                       1.6 MB/s |  47 MB  00:00:29
 +Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
 +Importing GPG key 0x00F97F56:
 +...
 +Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-stephdl
 +Importing GPG key 0xF5194398:
 +...
 +  Installing : scl-utils-20130529-19.el7.x86_64                                       1/130
 +...
 +  Installing : nethserver-php-scl-1.2.4-1.ns7.sdl.x86_64                            130/130
 +  Verifying  : 1:enchant-1.6.0-8.el7.x86_64                                           1/130
 +...
 +  Verifying  : php71-php-mysqlnd-7.1.26-1.el7.remi.x86_64                           130/130
 +
 +Installed:
 +  nethserver-php-scl.x86_64 0:1.2.4-1.ns7.sdl
 +
 +Dependency Installed:
 +  enchant.x86_64 1:1.6.0-8.el7
 +...
 +  vsftpd.x86_64 0:3.0.2-25.el7
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +==== Usage ==== 
 +
 +Normalement, l'interface Web devrait être complète et vous ne devriez pas devoir utiliser la ligne de commande. Si vous pensez que //Stéphane de Labrusse// pourrait améliorer les paramètres PHP en apportant plus d'options, veuillez le lui demander: //stephd arobas de-labrusse point fr//.
 +
 +Les réglages sont répartis à deux endroits.
 +
 +  - À la page **Gestion -> Hôtes virtuels**.\\ 
 +Là, après avoir créé un hôte virtuel, vous pouvez choisir la version que vous utiliserez pour l'//Ibay/virtualhost// //(par défaut, la version PHP d’Apache)//. Vu que NethServer utilise un script CGI pour gérer la version de PHP, vous ne pourrez pas ajuster les paramètres PHP avec le module //nethserver-phpsettings//; vous devez régler les paramètres à l'aide du fichier ''php.ini'' correspondant. Stéphane de Labrusse voulait coder quelque chose de "cool" afin que tous les paramètres ne soient pas basés uniquement sur des commandes de ''BD…'' Il a alors crée une page de configuration.
 +  -  À la page **Configuration -> Paramètres PHP**.\\ 
 +Là, vous pouvez choisir la version PHP que vous souhaitez utiliser __pour l’ensemble du serveur__. Lorsqu'Apache est le gestionnaire de PHP, vous pouvez alors définir les paramètres PHP avec le module //nethserver-phpsettings//. En d'autres termes, si vous souhaitez utiliser le module //nethserver-phpsettings// et que vous avez besoin d'une version spécifique de PHP, vous devez utiliser cette version __pour tout le serveur__. Bien sûr, vous pouvez revenir à la version par défaut en cas de problème avec une ancienne application Web. Dans d’autres parties de cette page, vous pouvez ajuster les paramètres PHP pour toutes les versions de PHP.
 +\\ 
 +\\ 
 +
 +==== Répertoire d'installation ==== 
 +
 +{{Images_Cahier-101-03-005.png?25}} Toutes les versions PHP de la Collection proviennent du référentiel **remi-safe** et sont installées dans le répertoire ''/opt/remi''.
 +
 +<file>
 +[root@tchana ~]# yum repolist | grep remi
 +
 + * remi-safe: repo1.ash.innoscale.net
 +remi-safe                   Safe Remi's RPM repository for Enterprise Lin  3,134
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie le répertoire ''/opt''.
 +
 +<file>
 +[root@tchana ~]# ls -ls /opt
 +
 +total 0
 +0 drwxr-xr-x. 7 root root 81 Jan  4 09:16 puppetlabs
 +0 drwxr-xr-x  7 root root 71 Feb  8 17:44 remi
 +0 drwxr-xr-x  2 root root  6 Oct 30 15:17 rh
 +[root@tchana ~]#
 +</file>
 +
 +On affiche le répertoire ''/opt/remi''.
 +
 +<file>
 +[root@tchana ~]# ls -ls /opt/remi
 +
 +total 0
 +0 dr-xr-xr-x 3 root root 32 Feb  8 17:44 php56
 +0 dr-xr-xr-x 3 root root 32 Feb  8 17:44 php70
 +0 dr-xr-xr-x 3 root root 32 Feb  8 17:44 php71
 +0 dr-xr-xr-x 3 root root 32 Feb  8 17:44 php72
 +0 dr-xr-xr-x 3 root root 32 Feb  8 17:44 php73
 +
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +==== PHP72 par défaut après une connexion à la ligne de commande ==== 
 +
 +//Référence:// [[http://appdev.oit.umn.edu/2015/02/11/scl/|http://appdev.oit.umn.edu/2015/02/11/scl/]]
 +
 +On crée le fichier d'activation qui sera lu lors d'une connexion au Serveur NethServer.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /etc/profile.d/activer-php72.sh <<'EOT'
 +#!/bin/bash
 +source /opt/remi/php72/enable
 +if [[ "$X_SCLS" != *php72* ]]; then
 +src="`scl enable php72 'echo $X_SCLS'`"
 +pkgs=(${src// / })
 +uniq=($(printf "%s\n" "${pkgs[@]}" | sort -u));
 +export X_SCLS="${uniq[@]}"
 +fi
 +EOT
 +
 +</file>
 +
 +On rend le fichier exécutable.
 +
 +<file>
 +[root@tchana ~]# chmod +x /etc/profile.d/activer-php72.sh
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -als /etc/profile.d/activer-php72.sh
 +
 +4 -rwxr-xr-x 1 root root 215  8 févr. 17:47 /etc/profile.d/activer-php72.sh
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +=== Vérification si PHP72 est le défaut==
 +
 +{{Images_Cahier-101-03-006.png?25}} On ferme la connexion PuTTY et on en ouvre une nouvelle.
 +
 +On vérifie l'installation de la Collection.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep scl-
 +
 +centos-release-scl-rh-2-2.el7.centos.noarch
 +centos-release-scl-2-2.el7.centos.noarch
 +scl-utils-20130529-19.el7.x86_64
 +nethserver-php-scl-1.2.4-1.ns7.sdl.x86_64
 +[root@tchana ~]#
 +</file>
 +
 +Collections installées.
 +
 +<file>
 +[root@tchana ~]# scl -l
 +
 +php56
 +php70
 +php71
 +php72
 +php73
 +[root@tchana ~]#
 +</file>
 +
 +Quel est le PHP par défaut?
 +
 +<file>
 +[root@tchana ~]# which php
 +
 +/opt/remi/php72/root/usr/bin/php
 +[root@tchana ~]#
 +</file>
 +
 +Quelle est sa version?
 +
 +<file>
 +[root@tchana ~]# php --version
 +
 +PHP 7.2.15 (cli) (built: Feb  5 2019 18:05:51) ( NTS )
 +Copyright (c) 1997-2018 The PHP Group
 +Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +=== Sauvegarde ===
 +
 +On vérifie si le nom du fichier ''/etc/profile.d/activer-php72.sh'' est déjà présent dans le fichier d'inclusion de la sauvegarde des données: ''/etc/backup-data.d/custom.include'', sinon on l'insère.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +NouvelleInclusion="/etc/profile.d/activer-php72.sh"
 +if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include
 +then
 +    # L'entrée a été trouvée dans custom.include
 +    echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n"
 +else
 +    # L'entrée n'a pas été trouvée dans custom.include
 +    echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include
 +    echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n"
 +fi
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /etc/profile.d/activer-php72.sh
 +
 +/etc/profile.d/activer-php72.sh
 +[root@tchana ~]#
 +</file>
 +
 +Ci-dessus, il n'y a pas de ligne vide avant __/etc/profile.d/activer-php72.sh__. Nous en avons inséré une afin de faciliter la copie de la commande.
 +\\ 
 +\\ 
 +
 +==== Mise à jour de la Collection ==== 
 +
 +Nous utilisons pour NS7, le référentiel remi-safe. Ce qui signifie qu'il est activé par défaut, lancez simplement la commande suivante pour mettre à jour:
 +
 +<file>
 +[root@tchana ~]# yum update -y nethserver-php-scl --enablerepo=stephdl
 +
 +Loaded plugins: changelog, fastestmirror, nethserver_events
 +Loading mirror speeds from cached hostfile
 + * ce-base: it.centos.contactlab.it
 + * ce-extras: it.centos.contactlab.it
 + * ce-updates: it.centos.contactlab.it
 + * epel: epel.mirror.constant.com
 + * nethforge: mirror.nethserver.org
 + * nethserver-base: mirror.nethserver.org
 + * nethserver-updates: mirror.nethserver.org
 + * remi-safe: rpms.remirepo.net
 +No packages marked for update
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} S'il y avait une mise à jour, elle serait installée avec cette commande.
 +\\ 
 +\\ 
 +
 +==== Ajustement des paramètres PHP ==== 
 +
 +Les valeurs de certains paramètres de PHP ne sont pas suffisants pour certaines extensions WordPress. Ces paramètres sont: **''MemoryLimit''**, **''PostMaxSize''** et **''UploadMaxFilesize''**. Il faut les ajuster.
 +
 +<file>
 +[root@tchana ~]# config show php72
 +
 +php72=configuration
 +    AllowUrlFopen=On
 +    ExposePhp=0
 +    MaxExecutionTime=30
 +    MaxFileUpload=20
 +    MaxInputTime=60
 +    MemoryLimit=128
 +    PostMaxSize=20
 +    UploadMaxFilesize=10
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-003.png?22}} Il faut obligatoirement que le paramètre ''PostMaxSize'' soit plus grand que celui de ''UploadMaxFilesize''. Si on modifie l'un, il faut vérifier l'autre pour que la correspondance des grandeurs soit respectée.
 +\\ 
 +\\ 
 +
 +{{Images_Cahier-101-03-006.png?25}} Nous allons ajuster: ''MemoryLimit'' //(250M)// **>** ''PostMaxSize'' //(100M)// **>** ''UploadMaxFilesize'' //(75M)//.
 +\\ 
 +
 +=== MemoryLimit ===
 +
 +Chaque fois qu'un client fait une requête au serveur Web, PHP génère un processus PHP. Le travail de ce processus est de générer du code HTML qu'il envoie au client. Le processus fournit un temps d'exécution à un script qui crée la réponse à la requête. La limite de mémoire ''MemoryLimit'' est la quantité maximale de mémoire que ce processus peut utiliser. Si la limite est atteinte ou dépassée, le processus échoue et Apache signale une erreur //HTTP 500//.
 +
 +=== PostMaxSize ===
 +
 +Le paramètre ''PostMaxSize'' définit la taille maximale autorisée pour les données d'un //post//. Ce paramètre affecte également le téléchargement de fichiers. Pour télécharger des fichiers volumineux, cette valeur doit absolument être toujours supérieure à ''UploadMaxFilesize''.
 +
 +<WRAP column 30%>
 +=== UploadMaxFilesize ===
 +
 +Pour certaines extensions telles que //WooCommerce//, WordPress doit autoriser le téléversement de fichiers et la grandeur de ceux-ci ne peut dépasser la limite définie par le paramètre ''UploadMaxFilesize'' de PHP.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-003.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +<WRAP column 30%>
 +=== Version PHP par défaut ===
 +
 +On définit la version PHP par défaut pour Apache.
 +
 +**Configuration -> Paramètres PHP ->** onglet **Version PHP Apache ->** cliquer  **Php72 SCL Version -> SOUMETTRE**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-004.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +=== Ajustements des paramètres de la version PHP-7.2 ===
 +
 +**Configuration -> Paramètres PHP ->** onglet **Php V7.2 SCL -> SOUMETTRE**.
 +
 +{{Images_Cahier-101-03-008.png?25}} Allow PHP access to remote files est un bris de sécurité.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-005.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +=== Vérifications à la ligne de commande ===
 +
 +''MemoryLimit''
 +
 +<file>
 +[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i Memory_Limit
 +
 +memory_limit                           = 250M
 +[root@tchana ~]#
 +</file>
 +
 +''PostMaxSize''
 +
 +<file>
 +[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i post_max_size
 +
 +post_max_size                          = 100M
 +[root@tchana ~]#
 +</file>
 +
 +''UploadMaxFilesize''
 +
 +<file>
 +[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i upload_max_filesize
 +
 +upload_max_filesize                    = 75M
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Comme on le voit ci-dessus, les grandeurs maximales sont maintenant de: ''MemoryLimit'' //(250M)// **>** ''PostMaxSize'' //(100M)// **>** //UploadMaxFilesize// //(75M)//.
 +\\ 
 +\\ 
 +
 +===== Collection MariaDB 10.2 =====
 +
 +//Référence:// [[https://wiki.nethserver.org/doku.php?id=mariadb102|https://wiki.nethserver.org/doku.php?id=mariadb102]].\\ 
 +La //Collection rh-mariadb102// est une récente version stable de //MariaDB 10.2//. Cette collection de logiciels offre aux utilisateurs de CentOS et RHEL une alternative à MySQL. Compatible binairement avec MySQL et pouvant remplacé ce dernier. Cette version fournit plusieurs nouvelles fonctionnalités et améliorations.
 +
 +==== Fin de vie ==== 
 +
 +Référence: [[https://mariadb.org/about/maintenance-policy/|https://mariadb.org/about/maintenance-policy/]].
 +
 +La Foundation MariaDB peut décider de maintenir les versions sélectionnées au-delà de la période normale de 5 ans //(fin de vie)//(( **Fin de vie**//(////Eol - ////End of life////)//: Sedit en [[https://fr.wikipedia.org/wiki/Informatique|informatique]] d'un logiciel ou d'un produit en fin de vie que l'[[https://fr.wikipedia.org/wiki/Éditeur_de_logiciel|éditeur]] ou le [[https://fr.wikipedia.org/wiki/Constructeur_informatique|constructeur]] ne fait plus évoluer.\\ //**Référence**//: [[https://fr.wikipedia.org/wiki/Fin_de_vie_(produit)|https://fr.wikipedia.org/wiki/Fin_de_vie_(produit)]].
 + )) si leur utilisation est exceptionnellement répandue. Vu que la version MariaDB 5.5, incluse dans plusieurs distributions Linux importantes, jouissait d'une durée de vie jusqu'en 2017 //(date d'émission + 5ans)//, la Fondation s’est engagée à la maintenir jusqu’en //2020//.
 +
 +<WRAP column 45%>
 +<file>
 +[root@tchana ~]# rpm -qa | grep mariadb
 +
 +mariadb-server-5.5.60-1.el7_5.x86_64
 +mariadb-5.5.60-1.el7_5.x86_64
 +mariadb-libs-5.5.60-1.el7_5.x86_64
 +[root@tchana ~]#
 +</file>
 +Vu que la version //MariaDB 10.2// est assurée d'une durée de vie jusqu'en //2022//, nous avons décidé d'utiliser la //Collection MariaDB 10.2// au lieu de la version fournie par NethServer.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-006.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Prérequis ==== 
 +
 +L'installation de //MariaDB 10.2// requière le référentiel ''stephdl'' que nous avons déjà installé. Voir le paragraphe [[nethserver_101_cahier_06_nethserver_wordPress#Référentiel stephdl]].
 +\\ 
 +
 +==== Installation de la Collection MariaDB 10.2 ==== 
 +
 +<file>
 +[root@tchana ~]# yum install -y --enablerepo=stephdl nethserver-rh-mariadb102
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation   1 Paquet (+8 Paquets en dépendance)
 +
 +Taille totale des téléchargements : 27 M
 +Taille d'installation : 135 M
 +...
 +Installé :
 +  nethserver-rh-mariadb102.noarch 0:0.0.5-1.ns7.sdl
 +
 +Dépendances installées :
 +  rh-mariadb102.x86_64 0:3.0-5.el7
 +  rh-mariadb102-mariadb.x86_64 1:10.2.8-5.el7
 +  rh-mariadb102-mariadb-common.x86_64 1:10.2.8-5.el7
 +  rh-mariadb102-mariadb-config.x86_64 1:10.2.8-5.el7
 +  rh-mariadb102-mariadb-errmsg.x86_64 1:10.2.8-5.el7
 +  rh-mariadb102-mariadb-server.x86_64 1:10.2.8-5.el7
 +  rh-mariadb102-mariadb-server-utils.x86_64 1:10.2.8-5.el7
 +  rh-mariadb102-runtime.x86_64 0:3.0-5.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +=== Vérification ===
 +
 +<file>
 +[root@tchana ~]# scl -l
 +
 +php56
 +php70
 +php71
 +php72
 +php73
 +rh-mariadb102
 +[root@tchana ~]#
 +</file>
 +
 +La collection a été installée dans le répertoire ''/opt/rh''.
 +
 +<file>
 +[root@tchana ~]# ls -als /opt/rh
 +
 +total 0
 +0 drwxr-xr-x  3 root root 27  8 févr. 19:07 .
 +0 drwxr-xr-x. 5 root root 46  8 févr. 17:44 ..
 +0 dr-xr-xr-x  3 root root 59  8 févr. 19:08 rh-mariadb102
 +[root@tchana ~]#
 +</file>
 +
 +On affiche les propriétés de la collection.
 +
 +<file>
 +[root@tchana ~]# config show rh-mariadb102-mariadb
 +
 +rh-mariadb102-mariadb=configuration
 +    LocalNetworkingOnly=no
 +    MaxAllowedPacket=16M
 +    TCPPort=3312
 +    access=private
 +    status=enabled
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-005.png?25}} Le port <wrap em>3312</wrap> est à retenir, car nous l'utiliserons dans le fichier de configuration ''wp-config.php'' de WordPress.
 +
 +On vérifie que le démon soit activé.
 +
 +<file>
 +[root@tchana ~]# systemctl list-unit-files | grep mariadb
 +
 +mariadb.service                               disabled
 +rh-mariadb102-mariadb.service                 enabled
 +rh-mariadb102-mariadb@.service                disabled
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie que le démon soit en exécution.
 +
 +<file>
 +[root@tchana ~]# ps aux | grep mariadb102
 +
 +mysql     3653  0.2  2.3 1764152 92156 ?       Ssl  19:38   0:01 /opt/rh/rh-mariadb102/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mariadb102/root/usr
 +root      5716  0.0  0.0 112736   980 pts/0    S+   19:53   0:00 grep --color=auto mariadb102
 +[root@tchana ~]#
 +</file>
 +
 +==== Journal de la Collection ==== 
 +
 +Le journal pour cette collection est situé dans le fichier ''/var/log/rh-mariadb102/mariadb.log''.
 +
 +<file>
 +[root@tchana ~]# ls -ls /var/log/rh-mariadb102/mariadb.log
 +
 +12 -rw-rw---- 1 mysql mysql 7404  8 févr. 19:38 /var/log/rh-mariadb102/mariadb.log
 +[root@tchana ~]#
 +</file>
 +
 +==== Usage ==== 
 +
 +{{Images_Cahier-101-03-004.png?25}} Il n'existe pas de page dédiée à cette collection dans l'interface Web. Si vous en avez besoin d'une, installez //nethserver-phpmyadmin// puis, lancez ''signal-event nethserver-phpmyadmin-save''.
 +
 +Stéphane a créé plusieurs raccourcis pour faciliter l'utilisation de cette collection depuis votre terminal.
 +
 +<WRAP box>
 +<file>
 +mysql102
 +mysqladmin102
 +mysqlbinlog102
 +mysqlcheck102
 +mysql_config_editor102
 +mysqld_multi102
 +mysqldump102
 +mysqlimport102
 +mysql_plugin102
 +mysqlshow102
 +mysqlslap102
 +</file>
 +</WRAP>
 +
 +Si vous voulez lancer //MariaDb 10.2// depuis votre terminal, utilisez la commande suivante.
 +
 +<WRAP box>
 +<file>
 +mysql102
 +</file>
 +</WRAP>
 +
 +==== Mise à jour de la Collection ==== 
 +
 +Le Serveur NethServer utilise le référentiel ''remi-safe'' et ce dernier est __activé par défaut__. Lancez simplement la commande suivante pour mettre à jour la //Collection MariaDB 10.2//:
 +
 +<file>
 +[root@tchana ~]# yum update -y rh-mariadb102-mariadb --enablerepo=stephdl
 +
 +Modules complémentaires chargés : changelog, fastestmirror, nethserver_events
 +Loading mirror speeds from cached hostfile
 + * ce-base: mirror.rackspace.com
 + * ce-extras: mirror.rackspace.com
 + * ce-updates: mirror.rackspace.com
 + * epel: mirror.texas3006.com
 + * nethforge: mirror.nethserver.org
 + * nethserver-base: mirror.nethserver.org
 + * nethserver-updates: mirror.nethserver.org
 + * remi-safe: mirror.bebout.net
 +No packages marked for update
 +[root@tchana ~]#
 +</file>
 +{{Images_Cahier-101-03-006.png?25}} S'il y avait une mise à jour, elle serait installée avec cette commande.
 +\\ 
 +\\ 
 +
 +===== Serveurs FTP - non recommandé =====
 +
 +{{Images_Cahier-101-03-006.png?25}} WordPress utilise son propre logiciel FTP, il n'est donc pas nécessaire d'activer le service FTP sur le serveur.\\ 
 +{{Images_Cahier-101-03-004.png?25}} Nous ne recommandons pas d'activer ce service car il n'est pas sécuritaire. Pour le transfert de fichiers, il est préférable d'employer des utilitaires sécurisés tels que //WinSCP// ou //FileZilla//.
 +
 +<WRAP column 30%>
 +**Configuration -> FTP ->** onglet  **Configurer ->** on clique **Activé -> SOUMETTRE** pour activer le service FTP.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-007.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +**Statut -> Services** pour vérifier si //**FTP (vsftpd)**// est en exécution.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-008.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Installation du client FTP - non recommandé ==== 
 +
 +On peut aussi installer le logiciel client du service FTP.
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# yum install -y ftp
 +
 +...
 +Transaction Summary
 +============================================================================================
 +Install  1 Package
 +
 +Total download size: 61 k
 +Taille d'installation : 96 k
 +...
 +Installed:
 +  ftp.x86_64 0:0.17-67.el7
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +\\ 
 +
 +===== Hôte virtuel =====
 +
 +//Référence:// [[http://docs.nethserver.org/en/v7/virtual_hosts.html|http://docs.nethserver.org/en/v7/virtual_hosts.html]].\\ 
 +L'hébergement virtuel permet d'héberger plusieurs noms de domaine sur un seul serveur. À la page **Gestion -> Hôtes virtuels**, il est possible de configurer des sites Web en tant qu'hôtes virtuels d'//Apache//.
 +
 +==== Default virtual host ==== 
 +
 +L'hôte virtuel par défaut est toujours activé et ne peut être supprimé. __Si l'accès FTP est activé__, un utilisateur du service FTP sera "chrooté(( **chroot**//(change root)//: est un appel système qui a également donné son nom à une commande des systèmes d'exploitation Unix permettant de changer le répertoire racine d'un processus de la machine hôte.//Référence//: [[https://fr.wikipedia.org/wiki/Chroot|https://fr.wikipedia.org/wiki/Chroot]]. ))" dans le répertoire ''/var/www/html''. Ce répertoire ''html'' peut contenir des données migrées à partir de l'ancien format utilisé pour les dossiers partagés.
 +
 +=== Activation de FTP ===
 +
 +{{Images_Cahier-101-03-006.png?25}} __Il n'est pas recommandé d'activer le service FTP__ pour l'hôte virtuel par défaut, car le tableau de bord de WordPress se charge du téléchargement des fichiers.
 +
 +<WRAP column 30%>
 +**Gestion -> Hôtes virtuels ->** vis-à-vis  //**default**//  **→  Éditer**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-009.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +//**Enable FTP access**//\\ 
 +Si cette option est cochée, elle autorise, en fournissant le justificatif d'authentification choisi ci-dessous, le téléchargement de fichiers vers le site Web via FTP.
 +
 +//**Nom d'utilisateur**//\\ 
 +Le nom de l'utilisateur qu'on doit obligatoirement utiliser pour une connexion FTP à l'hôte virtuel.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-010.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +//**Mot de passe**//\\ 
 +Le mot de passe de l'utilisateur pour la connexion FTP.
 +
 +<wrap em>**SOUMETTRE**</wrap>.
 +\\ 
 +
 +Vérification.
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# ftp localhost
 +
 +Connected to localhost (127.0.0.1).
 +220 (vsFTPd 3.0.2)
 +Name (localhost:root): default
 +331 Please specify the password.
 +Password: MOT-DE-PASSE-FTP-DONNÉ-CI-DESSUS
 +230 Login successful.
 +Remote system type is UNIX.
 +Using binary mode to transfer files.
 +ftp>
 +</file>
 +</WRAP>
 +
 +On affiche le contenu du répertoire.
 +
 +<WRAP box>
 +<file>
 +ftp> ls -als
 +
 +227 Entering Passive Mode (127,0,0,1,121,6).
 +150 Here comes the directory listing.
 +drwxr-xr-x    3 ftp      ftp            25 Nov 05 01:47 .
 +drwxr-xr-x    3 ftp      ftp            25 Nov 05 01:47 ..
 +drwxr-xr-x    3 ftp      ftp            28 Jan 04 14:16 .well-known
 +226 Directory send OK.
 +ftp>
 +</file>
 +</WRAP>
 +
 +{{Images_Cahier-101-03-005.png?25}}  Le répertoire ''.well-known'' est celui utilisé pour stocker les défis lors d'une demande/renouvellement d'un certificat Let's Encrypt.
 +
 +Nous sommes bien dans le répertoire Web de l'hôte virtuel par défaut, car lors de l'installation de NethServer, c'est seulement dans ce répertoire qu'est créé le sous-répertoire ''.well-known''.
 +
 +On affiche le chemin du répertoire courant.
 +
 +<WRAP box>
 +<file>
 +ftp> pwd
 +
 +257 "/"
 +ftp>
 +</file>
 +</WRAP>
 +
 +
 +{{Images_Cahier-101-03-006.png?25}} L'utilisateur a bien été "chrooté", car le répertoire courant est ''/'' et ce n'est pas le répertoire racine du serveur.
 +
 +On lance une commande FTP.
 +
 +<WRAP box>
 +<file>
 +ftp> help
 +
 +Commands may be abbreviated.  Commands are:
 +
 +!               debug           mdir            sendport        site
 +$               dir             mget            put             size
 +account         disconnect      mkdir           pwd             status
 +append          exit            mls             quit            struct
 +ascii           form            mode            quote           system
 +bell            get             modtime         recv            sunique
 +binary          glob            mput            reget           tenex
 +bye             hash            newer           rstatus         tick
 +case            help            nmap            rhelp           trace
 +cd              idle            nlist           rename          type
 +cdup            image           ntrans          reset           user
 +chmod           lcd             open            restart         umask
 +close           ls              prompt          rmdir           verbose
 +cr              macdef          passive         runique         ?
 +delete          mdelete         proxy           send
 +ftp> 
 +ftp>
 +</file>
 +</WRAP>
 +
 +On quitte la session FTP.
 +
 +<WRAP box>
 +<file>
 +ftp> exit
 +
 +221 Goodbye.
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +\\ 
 +
 +===== Propriétaire:groupe du répertoire /var/www/html =====
 +
 +On change le propriétaire:groupe du répertoire ''/var/www/html'' pour ''apache:apache'', sinon nous aurons des difficultés pour mettre à jour WordPress.
 +
 +<file>
 +[root@tchana ~]# chown -R apache:apache /var/www/html
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie
 +
 +<file>
 +[root@tchana ~]# ls -alsd /var/www/html/
 +
 +4 drwxr-xr-x. 8 apache apache 4096 20 avril 20:06 /var/www/html/
 +[root@tchana ~]#
 +</file>
 +\\ 
 +<WRAP centeralign>**Tous les prérequis pour l'installation de WordPress sont remplis.**</WRAP>
 +\\ 
 +
 +====== Préparation & fichiers de configuration ======
 +
 +===== Description =====
 +
 +Nous allons installer notre site dans le répertoire Web par défaut: ''/var/www/html''.
 +
 +===== Téléchargement de WordPress-4.9.9-fr_FR.tar.gz =====
 +
 +On se rend dans le répertoire racine de notre site.
 +
 +''[root@tchana ~]# cd /var/www/html
 +
 +[root@tchana html]#''
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana html]# pwd
 +
 +/var/www/html
 +[root@tchana html]#
 +</file>
 +
 +On affiche le contenu du répertoire.
 +
 +<file>
 +[root@tchana html]# ls -als
 +
 +total 0
 +0 drwxr-xr-x. 3 root root 25  4 nov.  20:47 .
 +0 drwxr-xr-x. 4 root root 33  4 nov.  20:47 ..
 +0 drwxr-xr-x. 3 root root 28  4 janv. 09:16 .well-known
 +[root@tchana html]#
 +</file>
 +\\ 
 +
 +{{Images_Cahier-101-03-004.png?25}} Pour les versions de WordPress, voir: [[https://fr.wordpress.org/releases/|https://fr.wordpress.org/releases/]].
 +<WRAP column 50%>
 +En date du //1er février 2019//, la dernière version de WordPress est //5.0.3//. Nous allons télécharger la version précédente //4.9.9// afin de démontrer la mise à jour vers la version majeure la plus plus récente.
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-101-06-011.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 50%>
 +On claque (clic droit) sur le ''tar.gz'' de la version //4.9.9// et on copie l'adresse du lien.
 +
 +{{Images_Cahier-101-03-005.png?25}} On peut aussi télécharger le fichier sur le poste de travail puis, à l'aide de WinSCP, le copier dans le répertoire ''/var/www/html''.
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-101-06-012.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +À la ligne de commande, on entre ''wget'' suivi d'un [Espace] et on y colle le lien.
 +
 +<file>
 +[root@tchana html]# wget https://fr.wordpress.org/wordpress-4.9.9-fr_FR.tar.gz
 +
 +--2019-02-08 20:27:21--  https://fr.wordpress.org/wordpress-4.9.9-fr_FR.tar.gz
 +Résolution de fr.wordpress.org (fr.wordpress.org)... 198.143.164.252
 +Connexion vers fr.wordpress.org (fr.wordpress.org)|198.143.164.252|:443...connecté.
 +requête HTTP transmise, en attente de la réponse...200 OK
 +Longueur: 9278489 (8,8M) [application/octet-stream]
 +Sauvegarde en : «wordpress-4.9.9-fr_FR.tar.gz»
 +
 +100%[==================================================>] 9 278 489   1,80MB/  ds 4,9s
 +
 +2019-02-08 20:27:26 (1,79 MB/s) - «wordpress-4.9.9-fr_FR.tar.gz» sauvegardé [9278489/9278489]
 +
 +[root@tchana html]#
 +</file>
 +
 +On vérifie le téléchargement.
 +
 +<file>
 +[root@tchana html]# ls -als
 +
 +total 9064
 +   0 drwxr-xr-x. 3 root root      61  8 févr. 20:27 .
 +   0 drwxr-xr-x. 4 root root      33  4 nov.  20:47 ..
 +   0 drwxr-xr-x. 3 root root      28  4 janv. 09:16 .well-known
 +9064 -rw-r--r--  1 root root 9278489 13 déc.  03:02 wordpress-4.9.9-fr_FR.tar.gz
 +[root@tchana html]#
 +</file>
 +
 +On répète l'opération pour télécharger la somme de contrôle //MD5//.
 +
 +<file>
 +[root@tchana html]# wget https://fr.wordpress.org/wordpress-4.9.9-fr_FR.tar.gz.md5
 +
 +--2019-02-08 20:28:30--  https://fr.wordpress.org/wordpress-4.9.9-fr_FR.tar.gz.md5
 +Résolution de fr.wordpress.org (fr.wordpress.org)... 198.143.164.252
 +Connexion vers fr.wordpress.org (fr.wordpress.org)|198.143.164.252|:443...connecté.
 +requête HTTP transmise, en attente de la réponse...200 OK
 +Longueur: non spécifié [text/plain]
 +Sauvegarde en : «wordpress-4.9.9-fr_FR.tar.gz.md5»
 +
 +    [ <=>                                               ] 32          --.-K/  ds 0s
 +
 +2019-02-08 20:28:30 (2,53 MB/s) - «wordpress-4.9.9-fr_FR.tar.gz.md5» sauvegardé [32]
 +
 +[root@tchana html]#
 +</file>
 +
 +On affiche la somme de contrôle téléchargée.
 +
 +<file>
 +root@tchana html]# cat wordpress-4.9.9-fr_FR.tar.gz.md5
 +
 +14411f5949c885926747c351e9316eab
 +[root@tchana html]#
 +</file>
 +
 +On calcule la somme de contrôle du fichier ''wordpress-4.9.9-fr_FR.tar.gz''.
 +
 +<file>
 +[root@tchana html]# md5sum wordpress-4.9.9-fr_FR.tar.gz
 +
 +14411f5949c885926747c351e9316eab  wordpress-4.9.9-fr_FR.tar.gz
 +[root@tchana html]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Les sommes de contrôle correspondent, on peut utiliser le fichier ''tar.gz'' sans crainte de falsification.
 +\\ 
 +\\ 
 +
 +==== Préparation ==== 
 +
 +On décompresse le fichier ''tar.gz''.
 +
 +<file>
 +[root@tchana html]# tar -zxvf wordpress-4.9.9-fr_FR.tar.gz
 +
 +wordpress/
 +wordpress/wp-login.php
 +wordpress/wp-cron.php
 +...
 +wordpress/wp-signup.php
 +wordpress/wp-links-opml.php
 +[root@tchana html]#
 +</file>
 +
 +Par sécurité, on peut transférer les fichiers ''tar.gz'' et ''tar.gz.md5'' vers le répertoire supérieur, à l'extérieur du répertoire racine du site, en cas d'une future ré-utilisation.
 +
 +<file>
 +[root@tchana html]# mv wordpress-4.9.9* ../
 +
 +[root@tchana html]#
 +</file>
 +
 +Vérification.
 +
 +<file>
 +[root@tchana html]# ls -ls ../wordpress*
 +
 +9064 -rw-r--r-- 1 root root 9278489 13 déc.  03:02 ../wordpress-4.9.9-fr_FR.tar.gz
 +   4 -rw-r--r-- 1 root root      32  8 févr. 12:11 ../wordpress-4.9.9-fr_FR.tar.gz.md5
 +[root@tchana html]#
 +</file>
 +
 +On affiche le contenu du répertoire.
 +
 +<file>
 +[root@tchana html]# ls -als
 +
 +total 4
 +0 drwxr-xr-x. 4 root root   42  8 févr. 20:29 .
 +0 drwxr-xr-x. 4 root root  109  8 févr. 20:29 ..
 +0 drwxr-xr-x. 3 root root   28  4 janv. 09:16 .well-known
 +4 drwxr-xr-x  5 1006 1006 4096 13 déc.  03:01 wordpress
 +[root@tchana html]#
 +</file>
 +
 +On transfère le contenu du répertoire wordpress vers la racine du site, c'est à dire: ''/var/www/html''.
 +
 +Ici on utilise le chemin complet pour éviter les erreurs.
 +
 +<file>
 +[root@tchana html]# mv /var/www/html/wordpress/ /var/www/html
 +
 +[root@tchana html]#
 +</file>
 +
 +On ajuste __**R**__écursivement le propriétaire et le groupe pour les fichiers et répertoires de notre site.
 +
 +<file>
 +[root@tchana html]# chown -R apache:apache *
 +
 +[root@tchana html]#
 +</file>
 +\\ 
 +
 +==== Utilisateur "other" ==== 
 +
 +Par sécurité, nous recommandons d'enlever tous les droits à l'utilisateur "other", il n'a rien à faire dans les répertoires de WordPress.
 +
 +<file>
 +[root@tchana html]# chmod -R o-rwx *
 +
 +[root@tchana html]#
 +</file>
 +
 +Vérification.
 +
 +<file>
 +[root@tchana html]# ls -als
 +
 +total 196
 + 4 drwxr-xr-x.  7 root   root    4096  8 févr. 20:30 .
 + 0 drwxr-xr-x.  4 root   root     109  8 févr. 20:29 ..
 + 4 -rw-r-----   1 apache apache   418 24 sept.  2013 index.php
 +20 -rw-r-----   1 apache apache 19935  6 janv.  2018 license.txt
 +12 -rw-r-----   1 apache apache  9089 13 déc.  03:02 readme.html
 + 0 drwxr-xr-x.  3 root   root      28  4 janv. 09:16 .well-known
 + 0 drwxr-x---   2 apache apache      8 févr. 20:30 wordpress
 + 8 -rw-r-----   1 apache apache  6878 12 déc.  20:33 wp-activate.php
 + 4 drwxr-x---   9 apache apache  4096 13 déc.  03:01 wp-admin
 + 4 -rw-r-----   1 apache apache   364 19 déc.   2015 wp-blog-header.php
 + 4 -rw-r-----   1 apache apache  1889  2 mai    2018 wp-comments-post.php
 + 4 -rw-r-----   1 apache apache  3581 13 déc.  03:02 wp-config-sample.php
 + 0 drwxr-x---   5 apache apache    69 13 déc.  03:02 wp-content
 + 4 -rw-r-----   1 apache apache  3669 20 août   2017 wp-cron.php
 +12 drwxr-x---  18 apache apache  8192 13 déc.  03:02 wp-includes
 + 4 -rw-r-----   1 apache apache  2422 20 nov.   2016 wp-links-opml.php
 + 4 -rw-r-----   1 apache apache  3306 22 août   2017 wp-load.php
 +40 -rw-r-----   1 apache apache 37804 12 déc.  19:34 wp-login.php
 + 8 -rw-r-----   1 apache apache  8048 11 janv.  2017 wp-mail.php
 +16 -rw-r-----   1 apache apache 16246  3 oct.   2017 wp-settings.php
 +32 -rw-r-----   1 apache apache 30091 29 avril  2018 wp-signup.php
 + 8 -rw-r-----   1 apache apache  4620 23 oct.   2017 wp-trackback.php
 + 4 -rw-r-----   1 apache apache  3065 31 août   2016 xmlrpc.php
 +[root@tchana html]#
 +</file>
 +
 +On supprime le répertoire ''wordpress'' qui est maintenant vide.
 +<file>
 +
 +[root@tchana html]# rmdir wordpress/
 +
 +[root@tchana html]#
 +</file>
 +
 +Vérification.
 +
 +<file>
 +[root@tchana html]# ls -lsd wordpress
 +
 +ls: impossible d'accéder à wordpress: Aucun fichier ou dossier de ce type
 +[root@tchana html]#
 +</file>
 +\\
 +
 +===== Base de données pour WordPress =====
 +
 +{{Images_Cahier-101-03-006.png?25}} On crée la base de données //(dans notre exemple, on la nomme ''WPBD'')//.
 +
 +<file>
 +[root@tchana html]# mysqladmin102 CREATE WPBD
 +
 +[root@tchana html]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} On entre dans la console //mysql102//.
 +
 +<file>
 +[root@tchana html]# mysql102
 +
 +Welcome to the MariaDB monitor.  Commands end with ; or \g.
 +Your MariaDB connection id is 9
 +Server version: 10.2.8-MariaDB MariaDB Server
 +
 +Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
 +
 +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 +
 +MariaDB [(none)]>
 +</file>
 +
 +On vérifie que la base de données a bien été créée.
 +
 +<file>
 +MariaDB [(none)]> show databases;
 +
 ++--------------------+
 +| Database           |
 ++--------------------+
 +| WPBD               |
 +| information_schema |
 +| mysql              |
 +| performance_schema |
 +| phpmyadmin         |
 ++--------------------+
 +5 rows in set (0.02 sec)
 +
 +MariaDB [(none)]>
 +</file>
 +
 +==== Grant ==== 
 +
 +{{Images_Cahier-101-03-006.png?25}} Pour l'//usager de la BD// de WordPress, il faut choisir un mot de passe __robuste__: au moins 7 caractères, minuscules, majuscules, chiffres et signes non-alphanumériques. Il ne faut pas prendre notre exemple de mot de passe.
 +
 +On crée un usager pour notre base de données et on lui donne //(grant)// les permissions nécessaires.
 +
 +<file>
 +MariaDB [(none)]> grant all on WPBD.* to usager_WPBD@localhost identified by 'mdp_WPBD';
 +
 +Query OK, 0 rows affected (0.00 sec)
 +
 +MariaDB [(none)]>
 +</file>
 +
 +Noter le nom de la base de données: "<nowiki>WPBD</nowiki>", le nom de l'usager: "<nowiki>usager_WPBD</nowiki>" et son mot de passe: "<nowiki>mdp_WPBD</nowiki>"; ils serviront plus tard dans le fichier de configuration de WordPress.
 +
 +{{Images_Cahier-101-03-008.png?25}} __Il ne faut pas prendre nos paramètres, ils ne sont pas assez robustes__.
 +
 +Vous devez exécuter la commande ''FLUSH PRIVILEGES'' ou la commande en ligne ''mysqladmin102 flushprivileges'' pour indiquer à //MariaDB 10.2// qu'il doit recharger les droits.
 +
 +<file>
 +MariaDB [(none)]> FLUSH PRIVILEGES;
 +
 +Query OK, 0 rows affected (0.00 sec)
 +
 +MariaDB [(none)]>
 +</file>
 +
 +On vérifie les droits de l'usager .
 +
 +<file>
 +MariaDB [(none)]> show grants for usager_WPBD@localhost;
 +
 ++------------------------------------------------------------------------------------------+
 +| Grants for usager_WPBD@localhost                                                                                   |
 ++------------------------------------------------------------------------------------------+
 +| GRANT USAGE ON *.* TO 'usager_WPBD'@'localhost' IDENTIFIED BY PASSWORD '*BEB075ED0A4C05AB21866C4BAA23F5284D8CF90A' |
 +| GRANT ALL PRIVILEGES ON `WPBD`.* TO 'usager_WPBD'@'localhost'                                                      |
 ++------------------------------------------------------------------------------------------+
 +2 rows in set (0,00 sec)
 +
 +MariaDB [(none)]>
 +</file>
 +
 +On quitte la console de //MariaDB 10.2//.
 +
 +<file>
 +MariaDB [(none)]> exit;
 +
 +Bye
 +[root@tchana html]#
 +</file>
 +\\ 
 +
 +===== Fichier wp-config.php =====
 +
 +Il faut maintenant copier le fichier d'exemple de configuration de WordPress ''wp-config-sample.php'' vers le véritable fichier de configuration ''wp-config.php''.
 +
 +On vérifie la présence du fichier d'exemple de configuration.
 +
 +<file>
 +[root@tchana html]# ls -ls /var/www/html/wp-config-sample.php
 +
 +4 -rw-r--r-- 1 apache apache 3581 13 déc.  03:02 /var/www/html/wp-config-sample.php
 +[root@tchana html]#
 +</file>
 +
 +{{Images_Cahier-101-03-005.png?25}} On garde le fichier ''wp-config-sample.php'', car il est nécessaire lors d'une récupération ou d'un transfert de WordPress vers un autre serveur.
 +
 +On crée le véritable fichier de configuration ''wp-config.php'' en faisant une copie du fichier ''wp-config-sample.php''.
 +
 +<file>
 +[root@tchana html]# cp /var/www/html/wp-config-sample.php  /var/www/html/wp-config.php
 +
 +[root@tchana html]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana html]# ls -ls /var/www/html/wp-config*
 +
 +4 -rw-r--r-- 1 root  root  3581  8 févr. 20:34 /var/www/html/wp-config.php
 +4 -rw-r--r-- 1 apache apache 3581 13 déc.  03:02 /var/www/html/wp-config-sample.php
 +[root@tchana html]#
 +</file>
 +
 +On ajuste le propriétaire et le groupe pour le fichier ''wp-config.php''.
 +
 +<file>
 +[root@tchana html]# chown apache:apache /var/www/html/wp-config.php
 +
 +[root@tchana html]#
 +</file>
 +
 +On vérifie.
 +<file>
 +
 +[root@tchana html]# ls -als /var/www/html/wp-config.php
 +
 +4 -rw-r--r-- 1 apache apache 3581  8 févr. 20:34 /var/www/html/wp-config.php
 +[root@tchana html]#
 +</file>
 +\\ 
 +
 +===== Édition du fichier de configuration =====
 +
 +Il faut modifier le fichier de configuration pour spécifier à l'installeur WordPress les paramètres utilisés lors du [[nethserver_101_cahier_06_nethserver_wordPress#Grant]] //(octroi de droits et permissions)// et surtout le port utilisé par //MariaDB 10.2//.
 +
 +Il faut changer:\\ 
 +//<nowiki>votre_nom_de_bdd</nowiki>// -> WPBD\\ 
 +//<nowiki>votre_utilisateur_de_bdd</nowiki>// -> <nowiki>usager_WPBD</nowiki> \\ 
 +//<nowiki>votre_mdp_de_bdd</nowiki>// -> <nowiki>mdp_WPBD</nowiki>\\ 
 +//'localhost'// -> <wrap em>'127.0.0.1:3312'</wrap>
 +
 +Contenu actuel du fichier de configuration.
 +
 +<WRAP box>
 +<file>
 +...
 +/** Nom de la base de données de WordPress. */
 +define('DB_NAME', 'votre_nom_de_bdd');
 +
 +/** Utilisateur de la base de données MySQL. */
 +define('DB_USER', 'votre_utilisateur_de_bdd');
 +
 +/** Mot de passe de la base de données MySQL. */
 +define('DB_PASSWORD', 'votre_mdp_de_bdd');
 +
 +/** Adresse de l’hébergement MySQL. */
 +define('DB_HOST', 'localhost');
 +
 +...
 +</file>
 +</WRAP>
 +
 +On procède aux modifications avec l'éditeur ''vi''.
 +
 +<file>
 + vi wp-config.php
 +</file>
 +
 +Ce que le contenu du fichier doit être dans notre cas.
 +
 +<WRAP box>
 +<file>
 +...
 +/** Nom de la base de données de WordPress. */
 +define('DB_NAME', 'WPBD');
 +
 +/** Utilisateur de la base de données MySQL. */
 +define('DB_USER', 'usager_WPBD');
 +
 +/** Mot de passe de la base de données MySQL. */
 +define('DB_PASSWORD', 'mdp_WPBD');
 +/** Adresse de l’hébergement MySQL. */
 +define('DB_HOST', '127.0.0.1:3312');
 +...
 +</file>
 +</WRAP>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana html]# cat /var/www/html/wp-config.php |  grep DB_
 +
 +define('DB_NAME', 'WPBD');
 +define('DB_USER', 'usager_WPBD');
 +define('DB_PASSWORD', 'mdp_WPBD');
 +define('DB_HOST', '127.0.0.1:3312');
 +define('DB_CHARSET', 'utf8');
 +define('DB_COLLATE', '');
 +[root@tchana html]#
 +</file>
 +\\ 
 +
 +==== Chemin de WordPress ==== 
 +
 +{{ Images_Cahier-101-06-013.png?400}}
 +Il nous faut ajouter un bout de code au fichier de configuration ''wp-config.php'', afin que WordPress n'ai pas de problème à exécuter certaines fonctions, telle que la mise à jour, ou il lui sera impossible de localiser le répertoire de contenu et affichera un message d'erreur.
 +
 +Pour une solution fonctionnelle, voir la page WordPress : "Impossible de localiser le répertoire de contenu" à L'URL: [[https://juliencrego.com/wordpress-impossible-de-localiser-le-repertoire-de-contenu/|https://juliencrego.com/wordpress-impossible-de-localiser-le-repertoire-de-contenu/]]. __//Cette URL n'est plus disponible//__.
 +
 +<WRAP box>
 +<file>
 +if(is_admin()){
 +    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));    
 +    define( 'FS_CHMOD_DIR', 0751 );
 +}
 +</file>
 +</WRAP>
 +
 +On ajoute les lignes ci-dessous au fichier ''/var/www/html/wp-config.php''.\\ 
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat >> /var/www/html/wp-config.php <<'EOT'
 +
 +###############################################
 +# Michel-André, 8 février 2019 @ 13h34 HNE
 +#
 +# Référence: https://juliencrego.com/wordpress-impossible-de-localiser-le-repertoire-de-contenu/
 +# Ajout de code afin de pouvoir localiser le répertoire de contenu
 +#
 +if(is_admin()){
 +    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));    
 +    define( 'FS_CHMOD_DIR', 0751 );
 +}
 +###############################################
 +
 +EOT
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana html]# tail -13 /var/www/html/wp-config.php
 +
 +###############################################
 +# Michel-André, 8 février 2019 @ 13h34 HNE
 +#
 +# Référence: https://juliencrego.com/wordpress-impossible-de-localiser-le-repertoire-de-contenu/
 +# Ajout de code afin de pouvoir localiser le répertoire de contenu
 +#
 +if(is_admin()){
 +    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
 +    define( 'FS_CHMOD_DIR', 0751 );
 +}
 +###############################################
 +
 +[root@tchana html]#
 +</file>
 +\\ 
 +
 +==== Préfixe de la BD de WordPress ==== 
 +
 +Le paramètre ''$table_prefix'' est la valeur placée devant les tables de votre base de données.
 +
 +//Référence:// [[http://sql.sh/1205-wordpress-changer-prefixe-tables|http://sql.sh/1205-wordpress-changer-prefixe-tables]].
 +
 +=== Risques en laissant les préfixes par défaut ===
 +
 +Les hackers utilisent des scripts automatisés qui tentent des injections SQL sur des failles connues de WordPress ou de certaines extensions WordPress. Sachant que la base de données contient pratiquement toutes les informations du site, ces failles peuvent être exploitées pour l’une des raisons suivantes:
 +
 +  - Ajouter du contenu sur le site //(exemple: liens vers des sites illégaux)//.
 +  - Ajouter des commentaires pourriels.
 +  - Faire planter le site ou détruire son contenu.
 +  - Extraire des informations //(récupérer la liste des courriels des personnes qui ont laissées un commentaire)//.
 +
 +Sachant que les scripts sont automatisés, ils tentent les requêtes les plus probables possibles. Autrement dit, les scripts utilisent en général des injections SQL avec le nom des tables qui possèdent le préfixe par défaut  "wp_". En laissant le préfixe par défaut des tables facilite indirectement le travail de ces pirates.
 +
 +=== Quel préfixe utiliser? ===
 +
 +Certes, nous venons de comprendre que le préfixe par défaut est à éviter mais alors, quel préfixe utiliser? Utiliser un nom trop commun n’est pas très sécuritaire non plus. Par exemple, un préfixe tel que <nowiki>"monsite_"</nowiki> peut être trop facilement deviné. Pour vraiment compliquer la vie des bidouilleurs, il faut plutôt utiliser un préfixe mélangeant les caractères et les chiffres, tel que "fym39dtz_".
 +
 +{{Images_Cahier-101-03-003.png?22}} En utilisant un préfixe qui commence par "wordpress" //(puis d’autres caractères)// il est plus facile de reconnaître les tables qui correspondent à l’installation WordPress au cas où votre base de données contient d’autres tables qui ne sont pas liées à ce CMS. Par exemple "wordpress_fym39dtz_".
 +
 +=== Modification du fichier wp-config.php ===
 +
 +Ce fichier contient une ligne: ''$table_prefix = 'wp_';'' spécifiant le paramètre et la variable qui indique à PHP le préfixe des tables. Il convient de remplacer ce préfixe avec celui de votre choix.
 +
 +{{Images_Cahier-101-03-006.png?25}} Seulement des lettres, des nombres et le caractère de soulignement "_".
 +
 +Pour les besoins de ce document, on change le préfixe '''wp_''' pour '''Toto0327_'''.
 +
 +<file>
 +[root@tchana html]# sed -i 's/'wp_'/'Toto0327_'/' /var/www/html/wp-config.php
 +
 +[root@tchana html]#
 +
 +</file>
 +On vérifie.
 +
 +<file>
 +[root@tchana html]# cat /var/www/html/wp-config.php | grep table_prefix
 +
 +$table_prefix  = 'Toto0327_';
 +[root@tchana html]
 +</file>
 +\\ 
 +
 +===== Fichier httpd.conf =====
 +
 +Le fichier ''/etc/httpd/conf/httpd.conf'' contient toutes les directives qui contrôlent le démon httpd. Celle qui a le plus d'influence sur les fichiers ''.htaccess'' du répertoire ''/var/www/html'' et de ses sous-répertoires est la directive ''AllowOverride'' à la ligne //151// du fichier de configuration du démon.
 +
 +Par défaut, cette directive est à ''None'' et fait en sorte que le démon httpd ne traitera aucun fichier ''.htaccess'' qu'il trouvera; il les ignorera tous.
 +
 +Plus loin, dans le fichier ''.htaccess'' du répertoire racine de WordPress, nous ajouterons des directives pour modifier les //Permaliens// afin que WordPress affiche le nom de la page au lieu de simplement afficher son numéro. Avec ces directives, Wordpress recherchera les pages contenant le suffixe //Titre de la publication//, mais ne les trouvera pas, car httpd n'utilisera pas le fichier ''.htaccess''. WordPress pensera que le permalien est défini à //Titre de la publication// alors que par défaut ils sont définis à //Simple//. Il affichera alors le message "Page non trouvée", car il ne peut localiser la page avec le suffixe //Titre de la publication//.
 +
 +==== Édition du ficher httpd.conf ==== 
 +
 +On crée une copie de sauvegarde du fichier original ''httpd.conf'' dans le répertoire ''/root''.
 +
 +<file>
 +[root@tchana html]# cp /etc/httpd/conf/httpd.conf  /root/httpd.conf_original
 +
 +[root@tchana html]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana html]# ls -ls /root/httpd.conf_original
 +
 +12 -rw-r--r-- 1 root root 11753 8 févr. 21:04 /root/httpd.conf_original
 +[root@tchana html]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} {{Images_Cahier-101-03-006.png?25}} On édite le fichier ''/etc/httpd/conf/httpd.conf''. Ce fichier contient plusieurs fois la directive //AllowOverride//. Assurez-vous de modifier celle du bon répertoire __''<Directory "/var/www/html">''__. Remplacer la ligne <wrap hi>AllowOverride None</wrap> par les 5 lignes dont la première débute par <wrap hi>##### AllowOverride None</wrap>.
 +
 +<file>
 +...
 +<Directory "/var/www/html">
 +    #
 +    # Possible values for the Options directive are "None", "All",
 +    # or any combination of:
 +    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
 +    #
 +    # Note that "MultiViews" must be named *explicitly* --- "Options All"
 +    # doesn't give it to you.
 +    #
 +    # The Options directive is both complicated and important.  Please see
 +    # http://httpd.apache.org/docs/2.4/mod/core.html#options
 +    # for more information.
 +    #
 +    Options Indexes FollowSymLinks
 +
 +    #
 +    # AllowOverride controls what directives may be placed in .htaccess files.
 +    # It can be "All", "None", or any combination of the keywords:
 +    #   Options FileInfo AuthConfig Limit
 +    #
 +    ##### AllowOverride None
 +    # Modification par Michel-André le 8 février 2019
 +    # afin que le démon httpd traite les fichers .htacces dans 
 +    # les répertoires et sous-répertoires de /var/www/html.
 +    AllowOverride All
 +
 +    #
 +    # Controls who can get stuff from this server.
 +    #
 +    Require all granted
 +</Directory>
 +...
 +</file>
 +
 +{{Images_Cahier-101-03-005.png?25}} La directive ''AllowOverride All'' signifie d'écraser les directives du fichier de configuration ''httpd.conf'' lorsque le démon rencontre des directives identiques dans un fichier ''.htaccess''.
 +\\ 
 +\\ 
 +
 +===== Répertoire well-known =====
 +
 +//Référence:// [[https://dev-notes.eu/2017/01/apache-directives-in-config-vs-htaccess/|https://dev-notes.eu/2017/01/apache-directives-in-config-vs-htaccess/]]\\ 
 +//Référence:// [[http://httpd.apache.org/docs/current/howto/htaccess.html#page-header|http://httpd.apache.org/docs/current/howto/htaccess.html#page-header]].\\ 
 +Lors d'une demande de certificat de Let's Encrypt, ce dernier doit pouvoir accéder au répertoire ''.well-known'' et à son sous-répertoire ''acme-challenge''.
 +
 +Nous allons créer un fichier ''/etc/httpd/conf.d/z_well-known.conf'' pour indiquer à //Apache// de rendre accessibles les deux répertoires en question.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /etc/httpd/conf.d/z_well-known.conf <<'EOT'
 +Alias "/.well-known/acme-challenge/" "/var/www/html/.well-known/acme-challenge/"
 +<Directory "/var/www/html/.well-known/acme-challenge/">
 +   Require all granted
 +   Options -Indexes +FollowSymLinks
 +   AllowOverride All
 +</Directory>
 +
 +EOT
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana html]# ls -als /etc/httpd/conf.d/z_well-known.conf
 +
 +4 -rw-r--r-- 1 root root 231 Apr 20 13:36 /etc/httpd/conf.d/z_well-known.conf
 +[root@tchana html]#
 +</file>
 +
 +On affiche le contenu du fichier.
 +
 +<file>
 +[root@tchana html]# cat /etc/httpd/conf.d/z_well-known.conf
 +
 +Alias "/.well-known/acme-challenge/" "/var/www/html/.well-known/acme-challenge/"
 +<Directory "/var/www/html/.well-known/acme-challenge/">
 +   Require all granted
 +   Options -Indexes +FollowSymLinks
 +   AllowOverride All
 +</Directory>
 +
 +[root@tchana html]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide au dessus de __Alias...__ Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
 +
 +{{Images_Cahier-101-03-005.png?25}} Lors de son lancement, //Apache// incorpore tous les fichiers qui se trouvent dans le répertoire ''/etc/httpd/conf.d/'' et qui ont l'extension ''.conf''. Cette incorporation des fichier se fait par ordre alphabétique et c'est pour cette raison qu'on a nommé notre nouveau fichier de configuration ''z_well-known.conf''.
 +
 +==== Redémarrage du démon httpd ==== 
 +
 +On redémarre le démon //Apache// afin qu'il relise son fichier de configuration.
 +
 +<file>
 +[root@tchana html]# systemctl restart httpd
 +
 +[root@tchana html]#
 +</file>
 +
 +==== Sauvegarde ==== 
 +
 +=== Répertoire du fichier httpd.conf ===
 +
 +On vérifie si le nom du répertoire ''/etc/httpd/conf/'' est déjà présent dans le fichier d'inclusion de la sauvegarde des données: ''/etc/backup-data.d/custom.include'', sinon on l'insère.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +NouvelleInclusion="/etc/httpd/conf/"
 +if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include
 +then
 +    # L'entrée a été trouvée dans custom.include
 +    echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n"
 +else
 +    # L'entrée n'a pas été trouvée dans custom.include
 +    echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include
 +    echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n"
 +fi
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /etc/httpd/conf/
 +
 +/etc/httpd/conf/
 +[root@tchana ~]#
 +</file>
 +
 +Ci-dessus, il n'y a pas de ligne vide avant __/etc/httpd/conf/__. Nous en avons inséré une afin de faciliter la copie de la commande.
 +
 +=== Fichier z_well-known.conf ===
 +
 +On vérifie si le nom du fichier ''/etc/httpd/conf.d/z_well-known.conf'' est déjà présent dans le fichier d'inclusion de la sauvegarde des données: ''/etc/backup-data.d/custom.include'', sinon on l'insère.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +NouvelleInclusion="/etc/httpd/conf.d/z_well-known.conf"
 +if grep -Fxq "$NouvelleInclusion" /etc/backup-data.d/custom.include
 +then
 +    # L'entrée a été trouvée dans custom.include
 +    echo -e "\nLe fichier custom.include contient déjà l'entrée:\n$NouvelleInclusion \n"
 +else
 +    # L'entrée n'a pas été trouvée dans custom.include
 +    echo -e "$NouvelleInclusion" >> /etc/backup-data.d/custom.include
 +    echo -e "\nL'entrée: $NouvelleInclusion a été ajoutée\n"
 +fi
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep z_well-known.conf
 +
 +/etc/httpd/conf.d/z_well-known.conf
 +[root@tchana ~]#
 +</file>
 +
 +Ci-dessus, il n'y a pas de ligne vide avant __<nowiki>/etc/httpd/conf.d/z_well-known.conf</nowiki>__. Nous en avons inséré une afin de faciliter la copie de la commande.
 +\\ 
 +
 +===== Fichier .htaccess =====
 +
 +//Référence:// [[http://www.commentcamarche.net/contents/7-apache-les-fichiers-htaccess|http://www.commentcamarche.net/contents/7-apache-les-fichiers-htaccess]].\\ 
 +Les fichiers ''.htaccess'' sont des fichiers de configuration d'//Apache//, permettant de définir des règles dans un répertoire et tous ses sous-répertoires //(qui n'ont pas de fichier ''.htaccess'')//. On peut les utiliser pour protéger un répertoire par mot de passe, pour changer le nom ou l'extension de la page index ou encore pour interdire l'accès au répertoire. 
 +
 +==== Principe des fichiers .htaccess =====
 +
 +Le fichier ''.htaccess'' est placé dans le répertoire dans lequel il doit agir. Il agit ainsi sur le répertoire qui le contient et sur tous ses sous-répertoires. Vous pouvez placer un autre fichier ''.htaccess'' dans un sous-répertoire d'un répertoire déjà contrôlé par un fichier ''.htaccess''. Le fichier ''.htaccess'' du répertoire parent reste en "activité" tant que les directives du fichier ''.htaccess'' du répertoire enfant n'ont pas été écrites.
 +
 +==== Permaliens ==== 
 +
 +//Référence:// [[https://codex.wordpress.org/fr:Utilisation_des_permaliens|https://codex.wordpress.org/fr:Utilisation_des_permaliens]].\\ 
 +Les permaliens sont les adresses permanentes //(URL)// de vos articles ainsi que des catégories, archives et autres pages spéciales. Un permalien permet à un autre site de référer à l'un de vos articles ou de pointer vers votre article depuis un courriel. L'adresse URL de chaque page, article, etc... devrait être permanente et ne jamais changer - d'où le terme de "perma"-lien.
 +
 +On crée le fichier ''.htaccess'' et on y insère son contenu.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /var/www/html/.htaccess <<'EOT'
 +# ************************************** 
 +# Pour les permaliens
 +<IfModule mod_rewrite.c>
 +RewriteEngine On
 +RewriteBase /
 +RewriteRule ^index\.php$ - [L]
 +RewriteCond %{REQUEST_FILENAME} !-f
 +RewriteCond %{REQUEST_FILENAME} !-d
 +RewriteRule . /index.php [L]
 +</IfModule>
 +
 +EOT
 +
 +</file>
 +
 +On ajuste les droits et permissions.
 +
 +<file>
 +[root@tchana html]# chmod 444 /var/www/html/.htaccess
 +
 +[root@tchana html]#
 +</file>
 +
 +On ajuste le propriétaire et le groupe.
 +
 +<file>
 +[root@tchana html]# chown apache:apache /var/www/html/.htaccess
 +
 +[root@tchana html]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana html]# ls -ls /var/www/html/.htaccess
 +
 +4 -r--r--r-- 1 apache apache 265  8 févr. 21:53 /var/www/html/.htaccess
 +[root@tchana html]#
 +</file>
 +
 +On vérifie le contenu.
 +
 +<file>
 +[root@tchana html]# cat /var/www/html/.htaccess
 +
 +# **************************************
 +# Pour les permaliens
 +<IfModule mod_rewrite.c>
 +RewriteEngine On
 +RewriteBase /
 +RewriteRule ^index\.php$ - [L]
 +RewriteCond %{REQUEST_FILENAME} !-f
 +RewriteCond %{REQUEST_FILENAME} !-d
 +RewriteRule . /index.php [L]
 +</IfModule>
 +
 +[root@tchana html]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide avant la ligne __<nowiki># ******...</nowiki>__ Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
 +
 +==== Protection du fichier wp-config ==== 
 +
 +{{Images_Cahier-101-03-005.png?25}} Dans la commande ci-dessous, les deux caractères __> >__ après ''cat'', signifie qu'__on ajoute au fichier__ ''.htaccess''.\\ 
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat >> /var/www/html/.htaccess <<'EOT'
 +# **************************************
 +# Pour protéger le fichier wp-config
 +<Files wp-config.php>
 + order allow,deny
 + deny from all
 +</Files>
 +
 +EOT
 +
 +</file>
 +
 +On vérifie le contenu.
 +
 +<file>
 +[root@tchana html]# tail -8 /var/www/html/.htaccess
 +
 +# **************************************
 +# Pour protéger le fichier wp-config
 +<Files wp-config.php>
 + order allow,deny
 + deny from all
 +</Files>
 +
 +[root@tchana html]#
 +</file>
 +
 +==== Protection du fichier .htaccess lui-même ==== 
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat >> /var/www/html/.htaccess <<'EOT'
 +# **************************************
 +# Pour protéger le fichier htaccess lui-même
 +<Files .htaccess>
 + order allow,deny
 + deny from all
 +</Files>
 +
 +EOT
 +
 +</file>
 +
 +On vérifie le contenu.
 +
 +<file>
 +[root@tchana html]# tail -8 /var/www/html/.htaccess
 +
 +# **************************************
 +# Pour protéger le fichier htaccess lui-même
 +<Files .htaccess>
 + order allow,deny
 + deny from all
 +</Files>
 +
 +[root@tchana html]#
 +</file>
 +
 +==== Directives Apache ==== 
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat >> /var/www/html/.htaccess <<'EOT'
 +# **************************************
 +# DIRECTIVES POUR APACHE
 +#
 +# Permet au serveur de suivre les liens symboliques dans les répertoires concernés.
 +Options +FollowSymLinks
 +
 +# Empêche d'afficher le contenu des répertoires s'ils ne contiennent aucun DirectoryIndex
 +# c'est-à-dire index.html, index.php etc...
 +Options -Indexes
 +
 +EOT
 +
 +</file>
 +
 +On vérifie le contenu.
 +
 +<file>
 +[root@tchana html]# tail -10 /var/www/html/.htaccess
 +
 +# **************************************
 +# DIRECTIVES POUR APACHE
 +#
 +# Permet au serveur de suivre les liens symboliques dans les répertoires concernés.
 +FollowSymLinks=enabled
 +
 +# Empêche d'afficher le contenu des répertoires s'ils ne contiennent aucun DirectoryIndex
 +# c'est-à-dire index.html, index.php etc...
 +Options -Indexes
 +[root@tchana html]#
 +</file>
 +\\ 
 +
 +====== Installation de WordPress ======
 +
 +===== Lancement de l'installation =====
 +
 +Pour lancer l'installation de WordPress, on indique l'URL de notre site: https://www.micronator-dev.org/.
 +
 +<WRAP column 45%>
 +<WRAP centeralign>
 +L'URL changera pour:\\ https://www.micronator-dev.org/wp-admin/install.php 
 +</WRAP>
 +
 +Le script ''install.php'' est lancé automatiquement et la page ci-contre s'affiche.
 +
 +On entre les informations demandées.
 +
 +{{Images_Cahier-101-03-008.png?25}} Pour des raisons de sécurité, il ne faut jamais utiliser le nom d'usager "admin" comme identifiant de l'administrateur du site.
 +
 +{{Images_Cahier-101-03-008.png?25}} Choisir un mot de passe robuste.
 +
 +Donner l'adresse courriel de l'administrateur du site.
 +
 +Vérifiez toutes les informations demandées, puis cliquer **Installer WordPress**.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-014.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 45%>
 +Si tout a bien été configuré, l'administrateur du site reçoit un courriel de confirmation à son adresse de messagerie donnée lors de l'installation de WordPress ci-dessus.
 +
 +On pourrait se loguer en cliquant le lien spécifié.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-015.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP center>
 +<WRAP column 65%>
 +\\ 
 +De retour à notre page d'installation, on clique **Se connecter**.
 +|{{ Images_Cahier-101-06-016.png?700 }}|
 +</WRAP>
 +<WRAP column 25%>
 +On entre notre **Identifiant -> Mot de passe -> Se connecter**.
 +|{{ Images_Cahier-101-06-017.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 20%>
 +WordPress a été installé et le Tableau de bord s'affiche.
 +
 +Des mises à jour sont disponibles dont la version //WordPress-5.0.3//.
 +
 +Les mises à jour disponibles sont principalement celles des thèmes. 
 +
 +Plus loin, nous nous occuperons de tout mettre à jour.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-101-06-018.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Page d'accueil =====
 +
 +<WRAP column 20%>
 +On se rend à notre page d'accueil [[http://www.micronator-dev.org/|http://www.micronator-dev.org/]].
 +
 +Notre site WordPress s'affiche.
 +
 +{{Images_Cahier-101-03-003.png?22}} Si le site ne s'affiche pas, simplement vidanger l'historique du navigateur Web.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-101-06-019.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Sécurité primaire =====
 +
 +==== Fichier readme.html ==== 
 +
 +On se rend à: [[http://www.micronator-dev.org/readme.html|http://www.micronator-dev.org/readme.html]] pour afficher le fichier ''readme.html'' de WordPress.
 +
 +Comme on le voit, la sécurité de WordPress s'est améliorée, la version n'est plus incluse dans le fichier ''readme.html''.
 +
 +<WRAP center>
 +<WRAP column 45%>
 +Version récente avec sécurité améliorée.
 +|{{ Images_Cahier-101-06-020.png?400 }}|
 +</WRAP>
 +<WRAP column 45%>
 +Ancienne version.
 +|{{ Images_Cahier-101-06-021.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_Cahier-101-03-008.png?25}} La version d’un site ou d’un logiciel est une des informations que les attaquants préfèrent, car connaître la version leur permet de rechercher s’il existe des vulnérabilités connues et exploitables.
 +\\ 
 +\\ 
 +
 +====== Mises à jour ======
 +
 +===== Introduction =====
 +
 +==== Avis #1 ==== 
 +
 +Référence: //(Ce lien n'est plus disponible.)// [[http://www.wordpress-fr.net/faq/est-ce-important-de-faire-regulierement-les-mises-a-jour-proposees/|http://www.wordpress-fr.net/faq/est-ce-important-de-faire-regulierement-les-mises-a-jour-proposees/]].
 +
 +Est-ce important de faire régulièrement les mises à jour proposées?
 +
 +Oui, il est important de faire régulièrement les mises à jour de WordPress, de ses thèmes et de ses extensions; en particulier si votre site est public. Il est même indispensable de le faire lorsque la nouvelle version apporte des correctifs en matière de sécurité.
 +
 +Laisser sur votre site une version obsolète de WordPress, d’un de ses thèmes ou de ses extensions vous expose à des risques de piratage.
 +
 +Pensez à vérifier, avant la mise à jour, la compatibilité de votre hébergement et à effectuer une sauvegarde.
 +
 +==== Avis #2 ==== 
 +
 +//Référence:// [[https://www.evolyos.com/important-mettre-jour-site-wordpress-douleur/|https://www.evolyos.com/important-mettre-jour-site-wordpress-douleur/]].\\ 
 +Pourquoi il est important de mettre à jour son site WordPress (sans douleur)
 +
 +Nous l’avons tous fait au moins une fois: ignorer, plus ou moins volontairement, la notification "Une nouvelle version de WordPress est disponible. Faites la mise à jour!"
 +
 +Cela vous rappelle quelque chose?
 +
 +Il y a quelques années, installer une nouvelle version pouvait tourner au drame: écran blanc, bug complet du site… pour tout débutant ou personne non initiée aux rouages du CMS s’ouvraient alors des heures de manipulations incompréhensibles avant de pouvoir revenir à la normale.
 +
 +Les mises à jour de WordPress, mais également de vos extensions et de votre thème, sont pourtant indispensables et ne se font plus dans la douleur.
 +
 +Mais au fait, pourquoi est-il si important de s’y plier?
 +
 +Les mises à jour apportent de nouvelles fonctionnalités
 +
 +Chaque nouvelle version de WordPress vise à corriger les bogues de la précédente tout en apportant de nouvelles fonctionnalités qui facilitent votre travail de publication au quotidien.
 +
 +WordPress 4.0 inclut par exemple:
 +
 +  - Un éditeur plus intelligent dont la taille s’adapte à votre travail
 +  - Des outils de mise en forme toujours accessibles
 +  - Une intégration exceptionnelle des vidéos YouTube et des Tweets
 +  - Une mise en page fluide de la bibliothèque de médias
 +
 +Pourquoi se passer d’une expérience-utilisateur plus agréable? Les mises à jour servent aussi à cela.
 +
 +Vous renforcez la sécurité de votre installation
 +
 +Une étude a montré que [[http://dvn.fr/mise-a-jour-site-wordpress/|83% des blogs WordPress "hackés" n’étaient pas mis à jour]] Bien sûr, cela ne concerne pas que le CMS lui-même, mais aussi ses extensions et la fiabilité de votre hébergeur.
 +
 +Le mot d’ordre est clair; les failles de sécurité connues par les "hackers" ne risquent pas de disparaître si vous n'installez pas une version plus sûre des composants de votre site!
 +
 +Lorsqu'un talon d’Achille est décelé sur un CMS aussi populaire que WordPress, vous devenez une cible idéale si vous ne vous protégez pas. Contrairement aux idées reçues, même les "petits" sites et blogs sont la cible d’attaques répétées.
 +
 +Quid des thèmes et des extensions?
 +
 +C'est exactement la même chose; les auteurs des thèmes et des extensions les mettent à jour pour apporter de nouvelles options //(demandées ou non par les utilisateurs)//, réparer des bogues et renforcer la sécurité de l'outil qu’ils ont codé.
 +
 +Mettre à jour ses extensions WordPress est également important pour des raisons de compatibilité. Avez-vous déjà remarqué que certaines extensions entraient en conflit avec d’autres extensions, voir même avec votre thème? Les mises à jour servent aussi à pallier ces erreurs.
 +
 +Faut-il toujours activer immédiatement une mise à jour?
 +
 +Si votre développeur a procédé à des modifications ou personnalisations particulières de votre thème ou de vos extensions, renseignez-vous avant d'autoriser une mise à jour. Vous éviterez ainsi de perdre le travail réalisé sur votre site.
 +
 +Dans l'ensemble, veillez tout de même à suivre les évolutions du CMS, de votre thème et de vos extensions. Vous serez moins vulnérable aux attaques et bénéficierez de toutes les évolutions des outils.
 +
 +==== Avis #3 ==== 
 +
 +//Référence:// //(Ce lien n'est plus disponible.)// [[http://www.deepintheweb.com/wordpress-et-les-mises-a-jour-est-ce-indispensable/|http://www.deepintheweb.com/wordpress-et-les-mises-a-jour-est-ce-indispensable/]].
 +
 +Doit-on le faire ou pas?
 +
 +Comme chaque "action", celle-ci doit être réfléchie et fondée. Les développeurs WordPress prennent le temps de détailler leurs travaux et les nouveautés mises en place dans les mises à jour. Par conséquent, vous pouvez //(et devez)// prendre le temps de lire et de vous mettre au courant de ce qui a été fait. De cette façon, vous pourrez juger de la nécessité ou non de mettre votre WordPress à jour.
 +
 +Si vous voulez mettre à jour et être certain que tout se passera bien, il existe plusieurs solutions:
 +
 +  - Se renseigner: Il existe des forums spécialisés où les utilisateurs WP viennent s'exprimer. Comme beaucoup de gens qui mettent à jour directement sans se poser de questions et sans prendre de précautions, on arrive très rapidement //(après la sortie de la mise à jour)// de voir les premiers problèmes que cela peut générer: compatibilité des extensions, réglages, etc. Vous pouvez donc en profitez pour détecter les éventuels problèmes que cela pourrait entraîner sur votre site.
 +  - Vérifier! Il n'y a pas de meilleure solution que la vérification. __On vous recommande d’avoir toujours une plateforme de test //(en ligne ou en local)//__, sur laquelle vous installez tous les thèmes et extensions que vous utilisez sur vos sites. Utilisez cette plateforme pour tester les mises à jour et vérifier que tout se passe pour le mieux. De cette façon vous pourrez identifier les éventuels problèmes et en discuter sur les forums pour trouver des solutions.
 +
 +==== Notre avis personnel ==== 
 +
 +Vous devez vérifier si les nouvelles extensions et thèmes que vous employez ont été approuvés et vérifiés pour la nouvelle version et enfin, les essayer sur une machine de test.
 +
 +{{Images_Cahier-101-03-004.png?25}} La meilleure façon de vérifier une extension ou un thème, est d'utiliser une machine virtuelle qui est un clone exact de votre site original, voir le [[nethserver_101_cahier_09_duplicator_migration|Cahier-09:]] //Duplicator & migration// du **Cours NethServer-101**.
 +
 +  - Installez toutes les mises à jour sur le WordPress virtuel et vérifiez tout au complet.
 +  - Sur votre site réel, installez seulement les mises à jours qui fonctionnent sans problèmes sur votre site virtuel.
 +\\ 
 +\\ 
 +
 +===== Sauvegarde avec Duplicator =====
 +
 +Avant une mise à jour de WordPress //(surtout pour un saut de plusieurs version: WordPress-4.9.9 vers WordPress-5.0.3)//, on sauvegarde notre site, voir le [[nethserver_101_cahier_09_duplicator_migration|Cahier-09:]] //Duplicator & migration// du **Cours NethServer-101**.
 +\\ 
 +\\ 
 +
 +===== Mise à jour de WordPress =====
 +
 +<WRAP column 20%>
 +**Tableau de bord -> Mises à jour -> Mettre à jour maintenant**.
 +
 +En cliquant **Mise à jour**, WordPress s'informe auprès du référentiel //wordpress// de toutes les mises à jours disponibles.
 +
 +Ici, on voit que les mises à jours disponibles sont passées de //3// à //5//.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-101-06-022.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +Peut prendre un certain temps, être patient!
 +|{{ Images_Cahier-101-06-023.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +**Mettre à jour la base de données de WordPress**.
 +|{{ Images_Cahier-101-06-024.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +**Continuer**.
 +|{{ Images_Cahier-101-06-025.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 20%>
 +Tout s'est bien passé, une page de bienvenue à la nouvelle version s'affiche.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-101-06-026.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Mise à jour des extensions =====
 +
 +<WRAP center>
 +<WRAP column 45%>
 +<nowiki>-</nowiki> **Tableau de bord -> Mise à jour -> Extensions**.\\
 +<nowiki>-</nowiki> **Tout sélectionner -> Mettre à jour les extensions**.
 +|{{ Images_Cahier-101-06-027.png?400 }}|
 +</WRAP>
 +<WRAP column 45%>
 +<nowiki>-</nowiki> On vérifie toujours les résultats des mises jour.\\ 
 +<nowiki>-</nowiki> **Retourner aux mises à jour de WordPress**.
 +|{{ Images_Cahier-101-06-028.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Mise à jour des thèmes =====
 +
 +<WRAP column 20%>
 +**Tableau de bord -> Mise à jour -> Thèmes  →  tout sélectionner -> Mettre à jour les thèmes**.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-101-06-029.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP center>
 +<WRAP column 45%>
 +<nowiki>-</nowiki> Les téléchargements et les décompressions peu­vent prendre un certain temps, il faut être patient!\\
 +<nowiki>-</nowiki> **Retourner aux mises à jour de WordPress**.
 +|{{ Images_Cahier-101-06-030.png?400 }}|
 +</WRAP>
 +<WRAP column 45%>
 +\\ 
 +\\ 
 +Tout est à date.
 +|{{ Images_Cahier-101-06-031.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +WordPress est à date.
 +\\ 
 +\\ 
 +
 +====== Principaux réglages recommandés ======
 +
 +===== Réglages généraux =====
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> **Tableau de bord -> Réglages -> Général**.\\ 
 +<nowiki>-</nowiki> On peut changer le //Slogan de notre site// et ajuster l'//Adresse de messagerie// qui recevra les messages de WordPress.
 +|{{ Images_Cahier-101-06-032.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +\\
 +//**Inscription**//, //**Rôle**//, //**Langue**// et //**Fuseau horaire**//.
 +|{{ Images_Cahier-101-06-033.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +\\
 +\\ 
 +//**Date**//, //**Heure**// et //**Début de la semaine**// **-> Enregistrer les modifications**.
 +|{{ Images_Cahier-101-06-034.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +On s'assure du succès de l'enregistrement des réglages.
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-101-06-035.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Écriture =====
 +
 +==== Service de mise à jour ==== 
 +
 +<WRAP column 20%>
 +Par sécurité, on n'utilise pas le service de notification //(espionnage)//.
 +
 +On supprime tout du **Services de mise à jour -> Enregistrer les modifications**.
 +
 +On s'assure du succès de l'opération.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-101-06-036.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Discussions =====
 +
 +Si on ne publie pas d'articles.
 +
 +<WRAP column 20%>
 +\\ 
 +**Discussion**.
 +|{{ Images_Cahier-101-06-037.png?300 }}|
 +</WRAP>
 +<WRAP column 50%>
 +\\ 
 +On décoche tous les //**Réglages par défaut des articles**//.
 +|{{ Images_Cahier-101-06-038.png?500 }}|
 +</WRAP>
 +<WRAP column 20%>
 +**Enregistrer les modifications**.
 +|{{ Images_Cahier-101-06-039.png?300 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Choix de la structure des permaliens =====
 +
 +//Référence:// [[https://codex.wordpress.org/fr:Utilisation_des_permaliens|https://codex.wordpress.org/fr:Utilisation_des_permaliens]].
 +
 +<WRAP column 30%>
 +Sur la page de configuration **Tableau de bord -> Réglages -> Permaliens**, vous pouvez choisir l'un des //**Réglages les plus courants**// ou créer une //**Structure personnalisée**// en utilisant les marqueurs de structure.
 +
 +{{Images_Cahier-101-03-005.png?25}} Ne mettez jamais le nom du domaine de votre site dans le champ //**Structure personnalisée**//. N'utilisez que les marqueurs de structure.
 +
 +On choisit **Titre de la publication -> Enregistrer les modifications**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-040.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Si votre fichier ''.htaccess'' contient des erreurs qui rendent votre site inaccessible //("Internal Server Error (500)")//, vous devrez utiliser un accès PuTTY pour effacer le fichier ''.htaccess'' fautif et refaire la procédure du paragraphe [[nethserver_101_cahier_06_nethserver_wordPress#Fichier .htaccess]].
 +
 +<WRAP column 45%>
 +En choisissant //Titre de la publication// comme structure de permaliens, si on déplace la souris au-dessus d'un lien sur notre site, l'URL de la page s'affiche en bas de l'écran avec le nom de la page.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-041.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_Cahier-101-03-008.png?25}} Pour demeurer très sécuritaire, au paragraphe [[nethserver_101_cahier_06_nethserver_wordPress#Droits et permissions]], nous n'avons donné aucun droit d'écriture sur le fichier ''/var/www/html/.htaccess'' et WordPress ne peut donc écrire dans ce fichier.
 +
 +<WRAP column 45%>
 +En haut de la page, WordPress nous recommande de mettre à jour le fichier ''.htaccess'' maintenant.
 +
 +{{Images_Cahier-101-03-006.png?25}} Ce message signifie que la structure des permaliens a été enregistrée dans le fichier de configuration de WordPress mais non dans le fichier ''.htaccess'', car ce dernier n'a pas de droit d'écriture.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-042.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +Au bas de la page, WordPress nous affiche les règles qu'on devrait ajouter au fichier ''.htaccess'', car il s'est aperçut qu'il ne pouvait pas écrire dans celui-ci.
 +
 +Nous avons déjà ajouté ces directives à la section [[nethserver_101_cahier_06_nethserver_wordPress#Permaliens]].
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-043.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Vérification du fichier .htaccess ==== 
 +
 +<WRAP column 45%>
 +http://www.micronator-dev.org/wp-config.php.
 +
 +La directive pour protéger le fichier ''wp-config'' fonctionne correctement.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-044.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 45%>
 +http://www.micronator-dev.org/.htaccess.
 +
 +La directive pour protéger le fichier ''.htaccess'' fonctionne correctement.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-045.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 45%>
 +http://www.micronator-dev.org/wp-content/languages.
 +
 +Le répertoire ''wp-content/languages'' ne contient aucun fichier index de quelque sorte que ce soit et nous ne pouvons y accéder. La directive ''Options -Indexes'' qui empêche d'afficher le contenu des répertoires s'ils ne contiennent aucun //DirectoryIndex//, c'est-à-dire ''index.html'', ''index.php'', etc... fonctionne correctement.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-046.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +On lance une recherche de liens symboliques.
 +
 +<file>
 +[root@tchana html]# ls -lR /var/www/html | grep ^l
 +
 +[root@tchana html]#
 +</file>
 +
 +Présentement, la directive qui permet au serveur de suivre les liens symboliques dans les répertoires concernés ne peut être vérifiée, car il n'existe aucun lien symbolique dans toute la structure des répertoires de WordPress.
 +
 +{{Images_Cahier-101-03-005.png?25}} Nous pourrions essayer lorsque toutes les extensions et thèmes seront installés, mais rares sont ces derniers qui utilisent des liens symboliques.
 +\\ 
 +\\ 
 +
 +====== Activation d'Akismet ======
 +
 +===== Akismet =====
 +
 +<WRAP column 40%>
 +Utilisé par des millions de sites, //Akismet// est probablement la meilleure manière de protéger votre site des commentaires et pisteurs indésirables.
 +
 +{{Images_Cahier-101-03-006.png?25}} Cet exemple provient de la documentation originale et les pages de connexion d'Akismet peuvent être légèrement différentes mais le principe demeure.
 +</WRAP>
 +<WRAP column 25%>
 +|{{ Images_Cahier-101-06-047.png?400 }}|
 +</WRAP>
 +<WRAP column 25%>
 +|{{ Images_Cahier-101-06-048.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Activation =====
 +
 +<WRAP column 20%>
 +**Tableau de bord -> Extensions installées -> Akismet -> Activer**.
 +|{{ Images_Cahier-101-06-049.png?400 }}|
 +</WRAP>
 +<WRAP column 35%>
 +\\ 
 +\\ 
 +**Configurer votre compte Akismet**.
 +|{{ Images_Cahier-101-06-050.png?400 }}|
 +</WRAP>
 +<WRAP column 35%>
 +\\ 
 +\\ 
 +**Obtenir votre clé d'API**.
 +|{{ Images_Cahier-101-06-051.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 25%>
 +\\ 
 +\\ 
 +**Get started with Personal**.
 +|{{ Images_Cahier-101-06-052.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<wrap em>Lisez les conditions d'utilisation</wrap> et __si acceptées__, entrez les informations demandées **-> Continuer**.
 +|{{ Images_Cahier-101-06-053.png?400 }}|
 +</WRAP>
 +<WRAP column 35%>
 +\\ 
 +\\ 
 +Dans le courriel reçu, cliquer **Activer le Compte**.
 +|{{ Images_Cahier-101-06-054.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +\\ 
 +**Sign in to Akismet**.
 +|{{ Images_Cahier-101-06-055.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +**Add Personal Subscription**.
 +|{{ Images_Cahier-101-06-056.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Choisir un montant **-> Create Subscription**.
 +|{{ Images_Cahier-101-06-057.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +**Got It**.
 +|{{ Images_Cahier-101-06-058.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Cliquer l'icône pour afficher la //clé API//.
 +|{{ Images_Cahier-101-06-059.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Sélectionner la clé et la copier.
 +|{{ Images_Cahier-101-06-060.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP center>
 +<WRAP column 30%>
 +\\ 
 +<nowiki>-</nowiki> De retour au //Tableau de bord de WordPress//, coller la clé **-> Connectez-vous avec une clé API**.
 +
 +<nowiki>-</nowiki> **Éliminer directement les pires indésirables...**\\ 
 +<nowiki>-</nowiki> **Ne pas afficher le message d'information...**\\ 
 +<nowiki>-</nowiki> **Enregistrer les modifications**.
 +
 +L'extension //Akismet// est activée et paramétrée.
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-101-06-061.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-101-06-062.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +====== Installation d'une extension & d'un thème ======
 +
 +===== Introduction =====
 +
 +Pour s'assurer que tout fonctionne correctement, nous ajoutons l'extension **Duplicator** et le thème **Storefront**.
 +
 +===== Connexion =====
 +
 +Si nous ne sommes pas connectés à WordPress, on se rend à notre site: https://Domaine_ou_IP_du_site/.
 +
 +<WRAP center>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> En bas à droite, on clique **Connexion**.
 +
 +<nowiki>-</nowiki> On entre les informations demandées -> **Se connecter**.
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-101-06-063.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-101-06-064.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Extension Duplicator =====
 +
 +//Référence:// [[https://fr-ca.wordpress.org/plugins/duplicator/|https://fr-ca.wordpress.org/plugins/duplicator/]].
 +
 +<WRAP column 40%>
 +**Duplicator** permet aux administrateurs WordPress de migrer, copier ou cloner un site d’un emplacement à un autre. L’extension peut aussi servir d’outil de sauvegarde basique. //Duplicator// est compatible avec le remplacement des chaînes sérialisées //(base64 ou non)//. Si vous devez déplacer ou sauvegarder WordPress, cette extension vous aidera à le faire facilement.
 +</WRAP>
 +<WRAP column 25%>
 +|{{ Images_Cahier-101-06-065.png?400 }}|
 +</WRAP>
 +<WRAP column 25%>
 +|{{ Images_Cahier-101-06-066.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Duplicator vous permet de: ==== 
 +
 +  - Déplacer un site d’un domaine à un autre ou d’un hébergeur à un autre.
 +  - Récupérer un site en ligne et le restaurer localement sur une machine virtuelle pour la vérification de nouveaux thèmes/extensions et le développement de nouvelles directives CSS.
 +  - Sauvegarder manuellement un site.
 +  - Dupliquer un site en production vers un site de pré-production et vice-versa.
 +  - "Packager" un site WordPress entier pour le ré-utiliser ou le distribuer.
 +
 +=== Déplacement et sauvegarde ===
 +
 +Duplicator crée un "paquet" qui contient le contenu du site, sa base de données, les thèmes, extensions et fichiers de WordPress dans une archive zip. Ce paquet peut ensuite être utilisé pour restaurer un site à l’emplacement de votre choix. Déplacez-le sur le même serveur, sur un autre ou sur n’importe quel emplacement où l’on pourrait installer un site WordPress.
 +
 +=== Améliorez vos processus ===
 +
 +Duplicator peut également éliminer les tâches répétitives qui consistent à installer un thème, des extensions ou intégrer du contenu de base. Plutôt que de le faire manuellement, configurez un seul site que vous transformerez en paquet. Ensuite, vous n’aurez plus qu’à l’installer pour créer des sites pré-configurés! Les concepteurs Web et les développeurs peuvent réaliser un gain de temps important en créant plusieurs versions de paquets en fonction des "bases" de sites qu’ils utilisent régulièrement.
 +
 +=== Prenez note ===
 +
 +{{Images_Cahier-101-03-005.png?25}} Les logiques de sauvegardes, déplacements et migrations de WordPress sont très complexes. Il est impossible de connaître chaque configuration système; c’est pourquoi votre retour est très important.
 +
 +=== Avertissement ===
 +
 +{{Images_Cahier-101-03-006.png?25}} Cette extension demande un minimum de connaissances techniques. Si vous envisagez de déplacer ou sauvegarder WordPress, vous le faites à vos propres risques et nous vous conseillons alors de sauvegarder vos fichiers et votre base de données dans un premier temps. Si vous débutez avec WordPress ou que vous n’êtes pas à l’aise avec l’informatique, nous vous suggérons de demander l’aide d’un professionnel pour votre première utilisation de l’extension. Si vous devez déplacer ou sauvegarder votre site et avez besoin d’aide supplémentaire, visitez [[https://snapcreek.com/duplicator/docs/faqs-tech/|la page de ressources Duplicator]] //(en anglais seulement)//. Vous pouvez aussi nous contacter: [[https://www.micronator.org/affaires/nous-contacter/|https://www.micronator.org/affaires/nous-contacter/]].
 +
 +==== Installation ==== 
 +
 +<WRAP column 30%>
 +**Tableau de bord -> Extensions -> Ajouter ->** //**Mot clé**//  **→  Duplicator -> Installer**.
 +|{{ Images_Cahier-101-06-067.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +**Activer**.
 +|{{ Images_Cahier-101-06-068.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +L'extension //Duplicator// est installée et activée.
 +|{{ Images_Cahier-101-06-069.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +==== Répertoire de stockage ==== 
 +
 +Il nous faut créer le répertoire de stockage pour les paquets que //Duplicator// va créer.
 +
 +<file>
 +[root@tchana ~]# mkdir -p /var/www/html/wp-snapshots/tmp/
 +
 +[root@tchana ~]#
 +</file>
 +
 +Ajustement du propriétaire, du groupe et des droits.
 +
 +<file>
 +[root@tchana ~]# chown -R apache:apache /var/www/html/wp-snapshots/ ; chmod -R 2770 /var/www/html/wp-snapshots/
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -lsd /var/www/html/wp-snapshots/
 +
 +0 drwxrws--- 3 apache apache 34 28 févr. 12:39 /var/www/html/wp-snapshots/
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +==== Configuration ==== 
 +
 +<WRAP center>
 +<WRAP column 45%>
 +Un nouveau menu a été créé: **Tableau de bord -> Duplicator -> Outils**.
 +|{{ Images_Cahier-101-06-070.png?400 }}|
 +\\ 
 +
 +<nowiki>-</nowiki> WordPress est à la version //5.0.3//.
 +
 +<nowiki>-</nowiki> PHP est bien à la version //7.2.15//.
 +
 +<nowiki>-</nowiki> MySQL indique la version //10.2.8// de //MariaDB 10.2//.
 +
 +<nowiki>-</nowiki> Le Chemin de ''mysqldump'' sera vérifié ci-dessous.
 +
 +</WRAP>
 +<WRAP column 45%>
 +<nowiki>-</nowiki> Cliquer les titres pour les dérouler.\\ 
 +<nowiki>-</nowiki> Tous les composants et paramètres de notre site sont affichés.
 +|{{ Images_Cahier-101-06-071.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP center>
 +<WRAP column 45%>
 +On cherche le chemin de ''mysqldump102''.
 +
 +<file>
 +[root@tchana ~]# which mysqldump102
 +
 +/usr/bin/mysqldump102
 +[root@tchana ~]#
 +</file>
 +
 +**Tableau de bord -> Duplicator -> Réglages ->** onglet **Paquets -> Custom Path**.
 +
 +On entre **/usr/bin/mysqldump102**.
 +
 +**-> Enregistrer les réglages du paquet**.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-072.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Abonnement à l'infolettre ==== 
 +
 +<WRAP center>
 +<WRAP column 45%>
 +<nowiki>-</nowiki> **Tableau de bord -> Duplicator -> Réglages ->** onglet  **À propos -> Restez dans la boucle**.\\ 
 +<nowiki>-</nowiki> Entrer votre adresse courriel **->** cochez **Sign me up!**
 +|{{ Images_Cahier-101-06-073.png?400 }}|
 +</WRAP>
 +<WRAP column 45%>
 +\\ 
 +Après avoir reçu le courriel d'abonnement, on con­firme notre adresse en y répondant.
 +|{{ Images_Cahier-101-06-074.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Thème Storefront =====
 +
 +<WRAP column 40%>
 +{{Images_Cahier-101-03-005.png?25}} Nous installons le thème **Storefront** qui est recommandé pour un site de commerce en ligne //WooCommerce//.
 +</WRAP>
 +<WRAP column 25%>
 +|{{ Images_Cahier-101-06-075.png?300 }}|
 +</WRAP>
 +<WRAP column 25%>
 +|{{ Images_Cahier-101-06-076.png?300 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +**Tableau de Bord -> Apparence -> Thèmes -> Ajouter ->** //**Recherche parmi les thèmes**//  **Ajouter -> Storefront**.
 +|{{ Images_Cahier-101-06-077.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +Avec la souris, on survole le thème pour faire apparaître les boutons **-> Installer**.
 +|{{ Images_Cahier-101-06-078.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +<nowiki>-</nowiki> On s'assure du succès de l'opération.\\ 
 +<nowiki>-</nowiki> **Activer**.
 +|{{ Images_Cahier-101-06-079.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP center>
 +<WRAP column 60%>
 +\\ 
 +On ferme ce message, car on installera //WooCommerce// dans le prochain Cahier.
 +|{{ Images_Cahier-101-06-080.png?600 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> En haut de la page, à gauche.\\ 
 +<nowiki>-</nowiki> **Aller sur le site**.
 +|{{ Images_Cahier-101-06-081.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP center>
 +<WRAP column 55%>
 +Le thème a été installé et est utilisé pour afficher les pages de notre site.
 +</WRAP>
 +<WRAP column 35%>
 +|{{ Images_Cahier-101-06-082.png?700 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +====== Extensions intéressantes ======
 +
 +===== Introduction =====
 +
 +Si les fonctionnalités de WordPress ne vous suffisent pas, il est possible d’en ajouter en installant des extensions.
 +
 +Il existe des milliers d'extensions et concernent les formulaires de contact, la navigation, la galerie d’images, les modules de partage… Ils peuvent s’appliquer à l’administration, au site, ou aux deux.
 +
 +Une extension, c’est quoi? Une extension est aussi un dossier, mais qu’on place dans ''wp-content/plugins''. Il contient principalement des fichiers PHP, mais peut aussi avoir des feuilles de style, des images, du JavaScript…
 +
 +===== Recommandations =====
 +
 +Toujours examiner la moyenne des étoiles, le nombre de traductions, l'historique des téléchargements et la date de la dernière mise à jour.
 +
 +<WRAP column 22%>
 +|{{ Images_Cahier-101-06-083.png?250 }}|
 +</WRAP>
 +<WRAP column 22%>
 +|{{ Images_Cahier-101-06-084.png?250 }}|
 +</WRAP>
 +<WRAP column 22%>
 +|{{ Images_Cahier-101-06-085.png?250 }}|
 +</WRAP>
 +<WRAP column 22%>
 +|{{ Images_Cahier-101-06-086.png?250 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP center>
 +<WRAP column 45%>
 +Une autre bonne indication est le temps entre les demandes d'aide dans le forum de l'extension et surtout, le nombre de réponses.
 +|{{ Images_Cahier-101-06-087.png?400 }}|
 +</WRAP>
 +<WRAP column 45%>
 +\\ 
 +\\ 
 +On peut aussi googler les "reviews" de l'extension.
 +|{{ Images_Cahier-101-06-088.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== TinyMCE Advanced =====
 +
 +Référence:  [[https://fr.wordpress.org/plugins/tinymce-advanced/|https://fr.wordpress.org/plugins/tinymce-advanced/]].
 +
 +<WRAP column 40%>
 +Cette extension permet d'ajouter, de supprimer et d'organiser les boutons affichés dans la barre d'outils de l'éditeur //Visual Editor//. Vous pouvez configurer jusqu'à quatre lignes de boutons y compris: tailles de police, famille de polices, couleurs de texte et d'arrière-plan, tableaux, etc.
 +
 +L'extension comprend 29 additions qui sont automatiquement activées ou désactivées selon les boutons que vous avez choisis. De plus, cette extension ajoute des options couramment utilisées en gardant les balises de paragraphe dans l'éditeur de texte.
 +</WRAP>
 +<WRAP column 25%>
 +|{{ Images_Cahier-101-06-089.png?400 }}|
 +</WRAP>
 +<WRAP column 25%>
 +|{{ Images_Cahier-101-06-090.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Installation ==== 
 +
 +<WRAP column 25%>
 +**Tableau de bord -> Extensions -> Ajouter ->** //**Mot-clé**//  **→  TinyMCE Advanced -> Installer**.
 +|{{ Images_Cahier-101-06-091.png?400 }}|
 +</WRAP>
 +<WRAP column 25%>
 +\\ 
 +\\ 
 +Activer.
 +|{{ Images_Cahier-101-06-092.png?400 }}|
 +</WRAP>
 +<WRAP column 40%>
 +\\ 
 +\\
 +L'extension est installée et activée.
 +|{{ Images_Cahier-101-06-093.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 50%>
 +==== Configuration ==== 
 +
 +**Tableau de bord -> Réglages -> TinyMCE Advanced**.
 +
 +Cliquer et glisser les boutons désirés sur les barres de menu.
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-101-06-094.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +Cliquer, glisser et organiser les menus selon l'ordre désiré.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-095.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +Cocher les options désirées.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-096.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +Cocher les options désirées.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-097.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +{{Images_Cahier-101-03-005.png?25}} Pour l'ajout de CSS et d'un Thème enfant, voir le chapitre [[nethserver_101_cahier_06_nethserver_wordPress#CSS et Thème enfant]].
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-098.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +{{Images_Cahier-101-03-004.png?25}} On peut //**importer/exporter**// les réglages.
 +
 +**Sauvegarder les changements**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-099.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP center>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> **Tableau de bord -> Pages -> Ajouter**.\\ 
 +<nowiki>-</nowiki> Cliquer l'icône **Ouvrir/fermer la barre d'outils**.
 +|{{ Images_Cahier-101-06-100.png?400 }}|
 +</WRAP>
 +<WRAP column 60%>
 +\\ 
 +<nowiki>-</nowiki> Les nouveaux boutons apparaissent.\\ 
 +<nowiki>-</nowiki> **Fermer** la page sans enregistrer en allant à un autre menu du tableau de bord.
 +|{{ Images_Cahier-101-06-101.png?700 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Exclude Pages From Menu =====
 +
 +//Référence:// [[https://fr.wordpress.org/plugins/exclude-pages-from-menu/|https://fr.wordpress.org/plugins/exclude-pages-from-menu/]].
 +
 +<WRAP column 50%>
 +Cette extension ajoute une case à cocher, //**Exclude this page from menu**//. Cette case n'est pas cochée par défaut. Si on coche la case, la page n'apparaîtra pas dans aucune des listes de pages __dans le menu de navigation du site__.
 +</WRAP>
 +<WRAP column 20%>
 +|{{ Images_Cahier-101-06-102.png?300 }}|
 +</WRAP>
 +<WRAP column 20%>
 +|{{ Images_Cahier-101-06-103.png?300 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 50%>
 +Lors de la création d’une page, celle-ci est automatiquement ajoutée au menu de navigation du site. Si vous ne souhaitez pas qu’elle y soit ajoutée, il est possible de le faire à l'aide de //**Exclude Pages From Menu**//. Dans la colonne de droite, lors de la création de la page ou lors de sa modification, il suffit de cocher la case dans le bloc //**Exclude Pages From Menu**//.
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-101-06-104.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Installation ==== 
 +
 +<WRAP column 25%>
 +**Tableau de bord -> Extensions -> Ajouter ->** //**Mot-clé**//  **→  Exclude Pages -> Installer**.
 +|{{ Images_Cahier-101-06-105.png?400 }}|
 +</WRAP>
 +<WRAP column 25%>
 +\\ 
 +\\ 
 +**Activer**.
 +|{{ Images_Cahier-101-06-106.png?400 }}|
 +</WRAP>
 +<WRAP column 40%>
 +\\ 
 +\\ L'extension est installée et activée.
 +|{{ Images_Cahier-101-06-107.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +Supprimer le message en cliquant le **X** à droite.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-108.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +<WRAP column 40%>
 +==== Usage ==== 
 +
 +"Page d'exemple" est visible sur le menu du site.
 +|{{ Images_Cahier-101-06-109.png?400 }}|
 +</WRAP>
 +<WRAP column 50%>
 +<nowiki>-</nowiki> **Tableau de bord -> Pages -> Toutes les pages**.\\ 
 +<nowiki>-</nowiki> On survole le titre de la page avec la souris.\\ 
 +<nowiki>-</nowiki> **Modifier**.
 +|{{ Images_Cahier-101-06-110.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +
 +<WRAP column 30%>
 +À droite, vers le bas de la page, on coche **Exclude this page from menu**.
 +|{{ Images_Cahier-101-06-111.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +En haut à droite, **Mettre à jour**.
 +|{{ Images_Cahier-101-06-112.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +Le titre de la page d'exemple n'apparaît plus sur le menu du site.
 +|{{ Images_Cahier-101-06-113.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Broken Link Checker =====
 +
 +//Référence://[[https://fr.wordpress.org/plugins/broken-link-checker/|https://fr.wordpress.org/plugins/broken-link-checker/]].
 +
 +<WRAP column 50%>
 +Cette extension va scruter vos articles, commentaires et autres contenus à la recherche de liens cassés et d'images manquantes; elle vous notifiera si elle en trouve.
 +</WRAP>
 +<WRAP column 20%>
 +|{{ Images_Cahier-101-06-114.png?400 }}|
 +</WRAP>
 +<WRAP column 20%>
 +|{{ Images_Cahier-101-06-115.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Installation ==== 
 +
 +<WRAP column 25%>
 +**Tableau de bord -> Extensions -> Ajouter ->** //**Mot-clé**//  **→  Broken Link Checker -> Installer**.
 +|{{ Images_Cahier-101-06-116.png?400 }}|
 +</WRAP>
 +<WRAP column 25%>
 +\\ 
 +\\ 
 +**Activer**.
 +|{{ Images_Cahier-101-06-117.png?400 }}|
 +</WRAP>
 +<WRAP column 40%>
 +\\ 
 +\\
 +L'extension est installée et activée.
 +|{{ Images_Cahier-101-06-118.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +Supprimer le message en cliquant l'icône.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-119.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Configuration ==== 
 +
 +<WRAP center>
 +<WRAP column 40%>
 +**Tableau de bord -> Extensions -> Extensions installées -> Broken Link Checker -> Réglages**.
 +|{{ Images_Cahier-101-06-120.png?400 }}|
 +</WRAP>
 +<WRAP column 50%>
 +<nowiki>-</nowiki> Onglet **Général ->** Ajuster selon ses choix.\\ 
 +<nowiki>-</nowiki> **Enregistrer les modifications**.
 +|{{ Images_Cahier-101-06-121.png?500 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Onglet **Rechercher des liens dans**.\\ 
 +<nowiki>-</nowiki> Ajuster selon ses choix.\\ 
 +<nowiki>-</nowiki> **Enregistrer les modifications**.
 +|{{ Images_Cahier-101-06-122.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Onglet **Quels liens vérifier**.\\ 
 +<nowiki>-</nowiki> Ajuster selon ses choix.\\ 
 +<nowiki>-</nowiki> **Enregistrer les modifications**.
 +|{{ Images_Cahier-101-06-123.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Onglet **Protocoles & APIs**.\\ 
 +<nowiki>-</nowiki> Ajuster selon ses choix.\\ 
 +<nowiki>-</nowiki> **Enregistrer les modifications**.
 +|{{ Images_Cahier-101-06-124.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> Onglet **Options avancées**.\\ 
 +<nowiki>-</nowiki>  Ajuster selon ses choix.
 +\\ 
 +
 +<nowiki>-</nowiki>  Ajuster selon ses choix.\\ 
 +<nowiki>-</nowiki> **Enregistrer les modifications**.
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-101-06-125.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-101-06-126.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Contact Form 7 =====
 +
 +//Référence:// [[https://fr-ca.wordpress.org/plugins/contact-form-7/|https://fr-ca.wordpress.org/plugins/contact-form-7/]].
 +
 +<WRAP column 50%>
 +//Contact Form 7// permet la création d’une page de contact qui affichera un formulaire permettant aux personnes désireuses de nous contacter de le faire le plus simplement possible.
 +</WRAP>
 +<WRAP column 20%>
 +|{{ Images_Cahier-101-06-127.png?400 }}|
 +</WRAP>
 +<WRAP column 20%>
 +|{{ Images_Cahier-101-06-128.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Installation ==== 
 +
 +<WRAP column 25%>
 +**Tableau de bord -> Extensions -> Ajouter ->** //**Mot-clé**//  **→  Contact Form 7 -> Installer**.
 +|{{ Images_Cahier-101-06-129.png?400 }}|
 +</WRAP>
 +<WRAP column 25%>
 +\\ 
 +\\ 
 +**Activer**.
 +|{{ Images_Cahier-101-06-130.png?400 }}|
 +</WRAP>
 +<WRAP column 40%>
 +\\ 
 +\\ 
 +L'extension est installée et activée
 +|{{ Images_Cahier-101-06-131.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Filtrage des pollupostage avec Akismet ==== 
 +
 +//Référence:// [[https://contactform7.com/spam-filtering-with-akismet/|https://contactform7.com/spam-filtering-with-akismet/]].\\ 
 +Aujourd'hui, les polluposteurs ciblent tout. Votre formulaire de contact ne fait pas exception. //Contact Form 7// fournit plusieurs moyens de prévenir le pollupostage. La coopération avec l'extension de filtrage de pollupostage //Akismet// est un élément important de la stratégie de prévention. Cette section décrit comment implémenter //Akismet// sur votre formulaire de contact.
 +
 +<WRAP column 30%>
 +**Tableau de bord -> Contact -> Formulaire de contact ->** cliquer **Akismet**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-132.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP center>
 +<WRAP column 45%>
 +\\ 
 +Directives d'installation.
 +|{{ Images_Cahier-101-06-133.png?400 }}|
 +</WRAP>
 +<WRAP column 45%>
 +Résultats possibles après avoir rempli et envoyé le formulaire de contact.
 +|{{ Images_Cahier-101-06-134.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +=== Akismet ===
 +
 +Tout d’abord, vous devez activer //Akismet//. L'extension //Akismet// est livrée automatiquement installée avec WordPress, il vous suffit donc de l'activer et d'ajouter la //clé d'API//. Voir la section [[nethserver_101_cahier_06_nethserver_wordPress#Activation d'Akismet]].
 +
 +Ensuite, ajoutez les options suivantes liées à //Akismet// dans les champs appropriés de votre formulaire.
 +
 +<WRAP indent>
 +<nowiki>-</nowiki> //**akismet:author**//\\ 
 +Ajoutez cette option au champ qui accepte le nom de l'expéditeur.\\ 
 +Exemple: <nowiki>[texte * your-name</nowiki> **akismet:author**<nowiki>]</nowiki>. \\
 +
 +<nowiki>-</nowiki> //**akismet:author**//<nowiki>_</nowiki>//**email**//\\ 
 +Ajoutez cette option au champ qui accepte l'adresse courriel de l'expéditeur.\\ 
 +Exemple: <nowiki>[email * your</nowiki><nowiki>-email</nowiki> **akismet:author**<nowiki>_</nowiki>**email**<nowiki>]</nowiki>.\\ 
 +
 +
 +<nowiki>-</nowiki> //**akismet:author**//<nowiki>_</nowiki>//**url**//\\ 
 +Ajoutez cette option au champ qui accepte l'URL de l'expéditeur.\\ 
 +Exemple: <nowiki>[text your-url</nowiki>  **akismet:author_url**<nowiki>]</nowiki>.
 +</WRAP>
 +
 +Quand au moins une de ces options est définie //(rappelez-vous, il est recommandé de définir toutes les options pour un jugement précis)//, le formulaire de //Contact Form 7// enverra à //Akismet// toutes les informations de l'expéditeur et les informations relatives à l'activité de l'envoi. //Akismet// jugera ensuite si cette soumission est susceptible d'être un pollupostage.
 +
 +Si //Akismet// considère cette soumission comme un pollupostage, //Contact Form 7// annule l'envoi du courriel et affichera un message approprié à l'internaute.
 +
 +<WRAP column 30%>
 +On supprime le message de //Contact Form 7// en cliquant **Ignorer**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-135.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Formulaire de contact ==== 
 +
 +<WRAP column 45%>
 +<nowiki>-</nowiki> **Tableau de bord -> Contact -> Formulaire de contact**.
 +
 +<nowiki>-</nowiki> Avec la souris, on survole le titre du //**Formulaire de contact 1**// pour faire apparaître les menus.
 +
 +<nowiki>-</nowiki> **Modifier**.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-136.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +<WRAP column 35%>
 +Onglet **Formulaire**.
 +
 +<nowiki>-</nowiki> On change le nom du formulaire pour **Nous Contacter**.
 +
 +<nowiki>-</nowiki> On ajoute\\
 +**akismet:author** à la suite de //your-name//.
 +
 +<nowiki>-</nowiki> On ajoute **akismet:author<nowiki>_</nowiki>email** à la suite de //your-email//.
 +
 +<nowiki>-</nowiki> **Enregistrer**.
 +\\ 
 +\\ 
 +\\ 
 +{{Images_Cahier-101-03-005.png?25}} Ci-contre, les champs marqué d'un astérisque devront être obligatoirement rempli par l'internaute.
 +</WRAP>
 +<WRAP column 55%>
 +|{{ Images_Cahier-101-06-137.png?600 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 35%>
 +Onglet **E-mail.**
 +
 +<nowiki>-</nowiki> Dans le champ //**De**//, on peut changer l'adresse courriel.
 +
 +<nowiki>-</nowiki> On ajoute\\ 
 +**akismet:author**<nowiki>_</nowiki>**email** à la suite de //your-email//.
 +
 +<nowiki>-</nowiki> On change l'anglicisme //Cet e-mail// par **Ce courriel**.
 +\\ 
 +\\ 
 +<nowiki>-</nowiki> **Enregistrer**.
 +</WRAP>
 +<WRAP column 55%>
 +|{{ Images_Cahier-101-06-138.png?600 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 35%>
 +On clique à l'intérieur du cadre, tout le texte est automatiquement sélectionné et on copie cette sélection.
 +</WRAP>
 +<WRAP column 55%>
 +|{{ Images_Cahier-101-06-139.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +**Tableau de bord -> Contact -> Formulaire de contact** pour afficher les paramètres du formulaire.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-140.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +**Tableau de bord -> Pages -> Ajouter**.
 +
 +On entre le titre de la page. Ce titre n'est pas obligatoirement le même que celui du formulaire.
 +
 +Sous l'onglet **Visuel**, on colle la copie de la précédente sélection à l'intérieur du cadre.
 +
 +**Publier**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-141.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Au retour de //Publier//, on peut voir apparaître le //Permalien// https://www.micronator-dev.org/nous-contacter/. À cause de notre sélection pour les permaliens au paragraphe [[nethserver_101_cahier_06_nethserver_wordPress#Choix de la structure des permaliens]], le suffixe est bien le //Titre de la publication// et non pas son //numéro//.
 +
 +<WRAP center>
 +<WRAP column 45%>
 +Au-dessus du titre de la page, on clique **Voir la page** pour afficher celle-ci.
 +|{{ Images_Cahier-101-06-142.png?400 }}|
 +
 +{{Images_Cahier-101-03-005.png?25}} Les champs marqués d'un astérisque au paragraphe [[nethserver_101_cahier_06_nethserver_wordPress#Formulaire de contact]] on la note //**(obligatoire)**// au bout de leur titre.
 +
 +Sur la ligne de menu de toutes les pages de notre site, le bouton //**Nous contacter**// apparaîtra.
 +</WRAP>
 +<WRAP column 45%>
 +\\ 
 +Notre formulaire s'affiche.
 +|{{ Images_Cahier-101-06-143.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_Cahier-101-03-005.png?25}} Pour faire un test de pollupostage, on peut utiliser //viagra// comme nom de l'envoyeur, une adresse quelconque et encore //viagra// dans l'objet et le corps du message. Ce qui donnera le message ci-dessous après avoir cliquer **Envoyer**.
 +
 +{{ Images_Cahier-101-06-144.png?800 }}
 +\\ 
 +\\ 
 +
 +===== MaxButtons =====
 +//
 +Référence:// [[https://fr.wordpress.org/plugins/maxbuttons/|https://fr.wordpress.org/plugins/maxbuttons/]].
 +
 +<WRAP column 50%>
 +//MaxButtons// est l'une des extensions de WordPress les plus utilisés pour créer et gérer les boutons d'un site. Cette extension crée des boutons de liens sur n'importe quelle page de votre site et peut les faire pointer vers les sites de partage social tels Facebook, Twitter, etc.
 +</WRAP>
 +<WRAP column 20%>
 +|{{ Images_Cahier-101-06-145.png?400 }}|
 +</WRAP>
 +<WRAP column 20%>
 +|{{ Images_Cahier-101-06-146.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Installation ==== 
 +
 +<WRAP column 25%>
 +**Tableau de bord -> Extensions -> Ajouter ->** //**Mot-clé**//  **→  MaxButtons -> Installer**.
 +|{{ Images_Cahier-101-06-147.png?400 }}|
 +</WRAP>
 +<WRAP column 25%>
 +\\ 
 +\\ 
 +**Activer**.
 +|{{ Images_Cahier-101-06-148.png?400 }}|
 +</WRAP>
 +<WRAP column 40%>
 +\\ 
 +\\ 
 +L'extension est installée et activée.
 +|{{ Images_Cahier-101-06-149.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +====== Conditions d'utilisation ======
 +
 +===== Introduction =====
 +
 +{{Images_Cahier-101-03-003.png?22}} Il est fortement recommandé d'avoir une page énonçant les //conditions d'utilisation// de notre site.
 +
 +===== Création de la page =====
 +
 +<WRAP column 30%>
 +**Tableau de bord -> Pages -> Ajouter ->** on écrit notre page **-> Publier**.
 +
 +On vérifie notre page en cliquant **Prévisualiser les modifications**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-150.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 45%>
 +On peut aussi cliquer l'onglet **Conditions d'utilisation** sur le menu principal du site.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-151.png?600 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +====== CSS et Thème enfant ======
 +
 +===== Introduction =====
 +
 +Nous allons modifier l'apparence de notre site en utilisant un //Thème enfant// et les feuilles de //styles en cascade//.
 +
 +==== CSS ==== 
 +
 +//Référence:// [[https://fr.wikipedia.org/wiki/Feuilles_de_style_en_cascade|https://fr.wikipedia.org/wiki/Feuilles_de_style_en_cascade]].\\ 
 +Les feuilles de style en cascade, généralement appelées CSS de l'anglais //Cascading Style Sheets//, forment un langage informatique qui décrit la présentation des documents HTML et XML. Les standards définissant CSS sont publiés par le //World Wide Web Consortium (W3C)//. Introduit au milieu des années 1990, CSS devient couramment utilisé dans la conception de sites Web et est bien pris en charge par les navigateurs Web dans les années 2000.
 +
 +==== Thème enfant ==== 
 +//
 +Référence:// [[https://codex.wordpress.org/fr:Thèmes_Enfant|https://codex.wordpress.org/fr:Th%C3%A8mes_Enfant]].\\ 
 +Un //Thème enfant// WordPress est un thème qui hérite des fonctionnalités d'un autre thème appelé //Thème parent//. Le Thème enfant est la méthode recommandée pour modifier un thème existant.
 +
 +=== Pourquoi utiliser un Thème enfant? ===
 +
 +Il existe quelques raisons qui pourraient vous motiver à utiliser un Thème enfant:
 +
 +  - Si vous modifiez un thème existant et qu'il est mis à jour, vos modifications seront perdues.
 +  - Vous assure que vos modifications seront préservées.
 +  - Accélère le temps de développement.
 +  - Excellente façon d'apprendre à développer un thème WordPress.
 +
 +===== Création d'un Thème enfant pour Storefront =====
 +
 +//Référence:// [[https://codex.wordpress.org/fr:Thèmes_Enfant|https://codex.wordpress.org/fr:Th%C3%A8mes_Enfant]].\\ 
 +Un Thème enfant est composé d'au moins un répertoire //(le répertoire du Thème enfant)// et de deux fichiers obligatoires: ''style.css'' et ''functions.php''.
 +
 +==== Répertoire du Thème enfant ==== 
 +
 +La première étape dans la création d'un Thème enfant est de créer le répertoire du Thème enfant dans ''wp-content/themes''. Il est recommandé //(mais non nécessaire, surtout si vous créez un thème pour un usage public)// d'accoler "-enfant" à la fin du nom du répertoire du Thème enfant en s'assurant qu'il n'y a pas d'espaces dans le nom qui pourrait entraîner des erreurs. Nous allons appeler notre Thème enfant "storefront-enfant" qui indique que le Thème parent est le thème //Storefront//.
 +
 +On se rend dans le répertoire des thèmes.
 +
 +<file>
 +[root@tchana ~]# cd /var/www/html/wp-content/themes/
 +
 +[root@tchana themes]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana themes]# pwd
 +
 +/var/www/html/wp-content/themes
 +[root@tchana themes]#
 +</file>
 +
 +On crée le répertoire pour le Thème enfant.
 +
 +<file>
 +[root@tchana themes]# mkdir storefront-enfant
 +
 +[root@tchana themes]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana themes]# ls -alsd storefront-enfant/
 +
 +0 drwxr-xr-x 2 root root 6 10 févr. 23:08 storefront-enfant/
 +[root@tchana themes]#
 +</file>
 +
 +{{Images_Cahier-101-03-004.png?25}} Nous ajusterons les droits une fois le Thème enfant terminé.
 +
 +==== Fichier style.css ==== 
 +
 +L'étape suivante consiste à créer la feuille de styles ''style.css'' pour le Thème enfant. La feuille de styles doit absolument commencer par les lignes suivantes:
 +
 +<WRAP box round>
 +<file>
 +/*
 + Theme Name:   Storefront Enfant
 + Theme URI:    http://www.micronator-dev.org/
 + Description:  Storefront Enfant
 + Author:       Michel-André // 2018-03-28_11h45
 + Author URI:   http://www.micronator.org/affaires/
 + Template:     storefront
 + Version:      0.0.1
 + License:      Licence publique generale GNU, Version 3, 29 June 2007
 + License URI:  http://www.gnu.org/licenses/gpl-3.0.fr.html
 + Tags:         Pied de page différent
 + Text Domain:  storefront-enfant
 +*/
 +</file>
 +</WRAP>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il ne faut pas mettre d'espace avant le signe ":" pour les noms des champs dans l'en-tête sans quoi, cela risque de poser problème.
 +
 +{{Images_Cahier-101-03-005.png?25}} La ligne //Template// correspond au nom du répertoire du Thème parent. Le Thème parent dans notre exemple est le thème //Storefront//, de sorte que le //Template// est //storefront//. On peut travailler avec un thème différent, donc adapter en conséquence.
 +
 +On crée le fichier ''style.css'' dans le répertoire du Thème enfant.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > storefront-enfant/style.css <<'EOT'
 +/*
 + Theme Name:   Storefront Enfant
 + Theme URI:    http://www.micronator-dev.org/
 + Description:  Storefront Enfant
 + Author:       Michel-André // 2019-02-13_12h00
 + Author URI:   http://www.micronator.org/affaires/
 + Template:     storefront
 + Version:      0.0.1
 + License:      Licence publique generale GNU, Version 3, 29 June 2007
 + License URI:  http://www.gnu.org/licenses/gpl-3.0.fr.html
 + Tags:         Pied de page différent
 + Text Domain:  storefront-enfant
 +*/
 +
 +EOT
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana themes]# cat storefront-enfant/style.css
 +
 +/*
 + Theme Name:   Storefront Enfant
 + Theme URI:    http://www.micronator-dev.org/
 + Description:  Storefront Enfant
 + Author:       Michel-André // 2019-02-13_12h00
 + Author URI:   http://www.micronator.org/affaires/
 + Template:     storefront
 + Version:      0.0.1
 + License:      Licence publique generale GNU, Version 3, 29 June 2007
 + License URI:  http://www.gnu.org/licenses/gpl-3.0.fr.html
 + Tags:         Pied de page différent
 + Text Domain:  storefront-enfant
 +*/
 +
 +[root@tchana themes]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide au dessus de __/*__. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
 +
 +==== Fichier functions.php ==== 
 +
 +Le seul fichier requis pour un Thème enfant est ''style.css'', mais le fichier ''functions.php'' est nécessaire pour mettre correctement les styles en file d'attente.
 +
 +La dernière étape consiste à mettre en file d'attente les feuilles de style parents et enfant. La méthode anciennement utilisée était d'importer la feuille de style du Thème parent utilisant "@import:". Ceci n'est plus la meilleure pratique.
 +
 +La méthode "moderne" est d'utiliser ''wp_enqueue_script()'' dans le fichier ''functions.php'' du Thème enfant.
 +
 +La première ligne du fichier ''functions.php'' du Thème enfant sera la balise d'ouverture de PHP ''<?php''. Après quoi, on pourra mettre en file d'attente les feuilles de style du Thème parent et du Thème enfant.
 +
 +{{Images_Cahier-101-03-006.png?25}} Si votre thème avait plus d'un fichier ''.css'' //(c'est à dire: ''style.css'', ''toto.css'' et ''titi.css'')//, on devrait s'assurer de maintenir toutes les dépendances du Thème parent. Configurer le 'style-parent' comme une dépendance veillera à ce que les chargements des feuilles de styles du Thème enfant se fassent après ceux du Thème parent.
 +
 +Si le Thème parent ne contenait qu'un seul fichier de style, on utiliserait le fichier ''functions.php'' suivant.
 +
 +<WRAP box round>
 +<file>
 +<?php
 +
 +    function theme_enqueue_styles() {
 +        wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
 +    }
 +
 +    add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
 +?>
 +</file>
 +</WRAP>
 +
 +Vérification du nombre de fichiers de styles dans le Thème parent.
 +
 +<file>
 +[root@tchana themes]# ls -als storefront/*.css
 +
 +40 -rw-r--r-- 1 apache apache 39447 10 févr. 19:13 storefront/style.css
 +40 -rw-r--r-- 1 apache apache 39440 10 févr. 19:13 storefront/style-rtl.css
 +[root@tchana themes]#
 +</file>
 +
 +Il existe deux fichiers de styles dans le Thème parent Storefront.
 +
 +Il faut donc deux fonctions dans le fichier ''functions.php'': une pour ''style.css'' et une autre pour ''style-rtl.css''.
 +
 +<WRAP box round>
 +<file>
 +<?php
 +    function theme_name_parent_styles() {
 +        wp_enqueue_style( 'theme-name-parent-style', get_template_directory_uri() . '/style.css', array(), '0.1', 'all' );
 +
 +        if ( is_rtl() ) {
 +            wp_enqueue_style( 'theme-name-parent-style-style-rtl.css', get_template_directory_uri() . '/style-rtl.css', array(), '0.1', 'all' );
 +            }
 +        }
 +
 +    add_action( 'wp_enqueue_scripts', 'theme_name_parent_styles' );
 +
 +?>
 +</file>
 +</WRAP>
 +
 +On crée le fichier ''functions.php''.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > storefront-enfant/functions.php <<'EOT'
 +<?php
 +// Etiquette d'ouverture de PHP
 +// Ce script va charger les feuilles de styles du Theme parent (Storefront).
 +
 +function theme_name_parent_styles() {
 +    // Mettre en file d'attente le fichier style.css
 +    wp_enqueue_style( 'theme-name-parent-style', get_template_directory_uri() . '/style.css', array(), '0.1', 'all' );
 +
 +    // Mettre en file d'attente le fichier style-rtl.css
 +    if ( is_rtl() ) {
 +        wp_enqueue_style( 'theme-name-parent-style-style-rtl.css', get_template_directory_uri() . '/style-rtl.css', array(), '0.1', 'all' );
 +    }
 +}
 +add_action( 'wp_enqueue_scripts', 'theme_name_parent_styles' );
 +
 +?>
 +
 +EOT
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana themes]# cat storefront-enfant/functions.php
 +
 +<?php
 +// Etiquette d'ouverture de PHP
 +// Ce script va charger les feuilles de styles du Theme parent (Storefront).
 +
 +function theme_name_parent_styles() {
 +    // Mettre en file d'attente le fichier style.css
 +    wp_enqueue_style( 'theme-name-parent-style', get_template_directory_uri() . '/style.css', array(), '0.1', 'all' );
 +
 +    // Mettre en file d'attente le fichier style-rtl.css
 +    if ( is_rtl() ) {
 +        wp_enqueue_style( 'theme-name-parent-style-style-rtl.css', get_template_directory_uri() . '/style-rtl.css', array(), '0.1', 'all' );
 +    }
 +}
 +add_action( 'wp_enqueue_scripts', 'theme_name_parent_styles' );
 +
 +?>
 +
 +[root@tchana themes]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il n'y a pas de ligne vide avant __<?php__. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.
 +
 +==== Fichier screenshot.png ==== 
 +
 +//Référence:// [[https://codex.wordpress.org/Theme_Development|https://codex.wordpress.org/Theme_Development]].\\ 
 +On peut créer une image pour le Thème enfant. L'image doit être nommée ''screenshot.png'' et doit être placée dans le répertoire du Thème enfant. Elle doit afficher avec précision la conception du thème et être enregistrée au format ''png''. La taille d'image recommandée est //1200x900//. Elle ne sera affichée que sous //387x290//, mais l'image de plus de deux dimensions permet une visualisation haute résolution sur les affichages HiDPI.
 +
 +{{Images_Cahier-101-03-005.png?25}} Optionnellement, ''.jpg'', ''.jpeg'' et ''.gif'' sont également des extensions et des formats de fichier valides //(bien que non recommandés)//.
 +
 +{{Images_Cahier-101-03-006.png?25}} On copie le fichier ''screenshot.png'' de l'image dans le répertoire du Thème enfant et on active ce dernier.
 +
 +**Tableau de bord -> Apparence -> Thèmes ->** avec la souris, on survole l'image du thème **-> Détails du thème -> Activer**.
 +
 +<WRAP column 30%>
 +|{{ Images_Cahier-101-06-152.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-101-06-153.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-101-06-154.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +<WRAP centeralign>**On est maintenant prêt pour modifier certaines directives CSS de notre site.**</WRAP>
 +\\ 
 +
 +===== Pied de page =====
 +
 +Le fichier qui affiche le pied de page est ''footer.php''.
 +
 +<WRAP column 20%>
 +Pied de page original.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-101-06-155.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Nous allons copier le fichier ''footer.php'' du Thème parent dans le répertoire du Thème enfant pour pouvoir le modifier afin qu'il affiche les informations à propos de notre site tel que ci-dessous.
 +
 +<WRAP column 20%>
 +Pied de page après que nous aurons effectué les modifications.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-101-06-156.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Logo =====
 +
 +On s'assure que nous sommes toujours dans le répertoire des thèmes.
 +
 +<file>
 +[root@tchana themes]# pwd
 +
 +/var/www/html/wp-content/themes
 +[root@tchana themes]#
 +</file>
 +
 +On crée le répertoire ''[répertoire-racine-du-site-WordPress]/Ut/Images/Logo'' pour y stocker certaines images relatives à notre société.
 +
 +<file>
 +[root@tchana themes]# mkdir -p /var/www/html/Ut/Images/Logo/
 +
 +[root@tchana themes]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana themes]# ls -alsd /var/www/html/Ut/Images/Logo/
 +
 +0 drwxr-xr-x 2 root root 6 10 févr. 23:18 /var/www/html/Ut/Images/Logo/
 +[root@tchana themes]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} On téléverse notre logo: ''logo_RF-232_transparent_BT.png'', à l'aide de //WinSCP// ou de //FileZilla//, dans le répertoire: ''/var/www/html/Ut/Images/Logo/''.
 +
 +On vérifie le téléversement. 
 +
 +<file>
 +[root@tchana themes]# ls -als ../../Ut/Images/Logo/logo_RF-232_transparent_BT.png
 +
 +20 -rw-r--r-- 1 root root 16544 16 mars  2017 ../../Ut/Images/Logo/logo_RF-232_transparent_BT.png
 +[root@tchana themes]#
 +</file>
 +\\ 
 +
 +==== Fichier footer.php ==== 
 +
 +Copie du fichier ''footer.php'' original du Thème parent.
 +
 +<file>
 +[root@tchana themes]# cp storefront/footer.php  storefront-enfant/
 +
 +[root@tchana themes]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana themes]# ls -ls storefront-enfant/footer.php
 +
 +4 -rw-r--r-- 1 root root 737 10 févr. 23:22 storefront-enfant/footer.php
 +[root@tchana themes]#
 +</file>
 +
 +On affiche le fichier ''footer.php''.
 +
 +<file>
 +[root@tchana themes]# cat storefront-enfant/footer.php
 +
 +<?php
 +/**
 + * The template for displaying the footer.
 + *
 + * Contains the closing of the #content div and all content after
 + *
 + * @package storefront
 + */
 +
 +?>
 +
 +                </div><!-- .col-full -->
 +        </div><!-- #content -->
 +
 +        <?php do_action( 'storefront_before_footer' ); ?>
 +
 +        <footer id="colophon" class="site-footer" role="contentinfo">
 +                <div class="col-full">
 +
 +                        <?php
 +                        /**
 +                         * Functions hooked in to storefront_footer action
 +                         *
 +                         * @hooked storefront_footer_widgets - 10
 +                         * @hooked storefront_credit         - 20
 +                         */
 +                        do_action( 'storefront_footer' ); ?>
 +
 +                </div><!-- .col-full -->
 +        </footer><!-- #colophon -->
 +
 +        <?php do_action( 'storefront_after_footer' ); ?>
 +
 +</div><!-- #page -->
 +
 +<?php wp_footer(); ?>
 +
 +</body>
 +</html>
 +[root@tchana themes]#
 +</file>
 +
 +Le lignes originales que nous allons remplacer sont:
 +
 +<file>
 +...
 +        <footer id="colophon" class="site-footer" role="contentinfo">
 +                <div class="col-full">
 +
 +                        <?php
 +                        /**
 +                         * Functions hooked in to storefront_footer action
 +                         *
 +                         * @hooked storefront_footer_widgets - 10
 +                         * @hooked storefront_credit         - 20
 +                         */
 +                        do_action( 'storefront_footer' ); ?>
 +
 +                </div><!-- .col-full -->
 +        </footer><!-- #colophon -->
 +...
 +</file>
 +
 +
 +{{Images_Cahier-101-03-006.png?25}} On édite le fichier ''storefront-enfant/footer.php'' et nous remplaçons le texte ci-dessus par celui ci-dessous.
 +
 +<file>
 +...
 +        <?php //Displaying footer logo ?>
 +          <!-- #DEBUT - MODIFICATION DU PIED DE PAGE -->
 +          <!-- Trait horizontal de séparation -->
 +          <hr style="width:75%; margin: 0 auto;">
 +
 +          <br />
 +
 +          <!-- Première ligne -->
 +          <div align="center">
 +            <?php _e( 'Copyright'); ?> &copy;
 +            <?php echo date("Y"); ?> &nbsp;&nbsp;&nbsp;&nbsp;
 +            <?php _e( 'Tous droits r&#xE9;serv&#xE9;s'); ?> &nbsp;&nbsp;&nbsp;&nbsp;
 +            <span><?php bloginfo('name')?></span> &nbsp;&nbsp;&nbsp;&nbsp;
 +            <em>
 +              <a href="/conditions-dutilisation"
 +                style="text-decoration: underline; color: #0000ff;"
 +                target="_blank"
 +                title="Conditions d'Utilisation">Conditions d'utilisation</a>
 +              &nbsp;&nbsp;&nbsp;&nbsp;
 +            </em>
 +          </div> <br />
 +
 +          <!-- Deuxième ligne -->
 +          <div align="center">
 +
 +            <a  href="http://www.micronator.org/affaires/"
 +                target="_blank"
 +                title="Votre design alternatif GPL">
 +                <img style="vertical-align:middle"
 +                     src="/Ut/Images/Logo/logo_RF-232_transparent_BT.png"
 +                     alt="Documentation GFDL & design GPL"
 +                     width="67" height="25"
 +                     align="middle">
 +            </a>
 +          </div></br>
 +          <!-- #FIN - MODIFICATION DU PIED DE PAGE -->
 +...
 +</file>
 +
 +<WRAP centeralign>
 +On vérifie. //(Surveillez les caractères accentués, il vaut mieux utiliser leur code hexadécimal.)//\\ 
 +Pour les codes hexadécimaux, voir [[https://www.w3schools.com/charsets/ref_html_8859.asp|https://www.w3schools.com/charsets/ref_html_8859.asp]]
 +</WRAP>
 +
 +<file>
 +[root@tchana themes]# cat storefront-enfant/footer.php
 +
 +<?php
 +/**
 + * The template for displaying the footer.
 + *
 + * Contains the closing of the #content div and all content after
 + *
 + * @package storefront
 + */
 +
 +?>
 +
 +                </div><!-- .col-full -->
 +        </div><!-- #content -->
 +
 +        <?php do_action( 'storefront_before_footer' ); ?>
 +
 +        <?php //Displaying footer logo ?>
 +          <!-- #DEBUT - MODIFICATION DU PIED DE PAGE -->
 +          <!-- Trait horizontal de séparation -->
 +          <hr style="width:75%; margin: 0 auto;">
 +
 +          <br />
 +
 +          <!-- Première ligne -->
 +          <div align="center">
 +            <?php _e( 'Copyright'); ?> &copy;
 +            <?php echo date("Y"); ?> &nbsp;&nbsp;&nbsp;&nbsp;
 +            <?php _e( 'Tous droits r&#xE9;serv&#xE9;s'); ?> &nbsp;&nbsp;&nbsp;&nbsp;
 +            <span><?php bloginfo('name')?></span> &nbsp;&nbsp;&nbsp;&nbsp;
 +            <em>
 +              <a href="/conditions-dutilisation"
 +                style="text-decoration: underline; color: #0000ff;"
 +                target="_blank"
 +                title="Conditions d'Utilisation">Conditions d'utilisation</a>
 +              &nbsp;&nbsp;&nbsp;&nbsp;
 +            </em>
 +          </div> <br />
 +
 +          <!-- Deuxième ligne -->
 +          <div align="center">
 +
 +            <a  href="http://www.micronator.org/affaires/"
 +                target="_blank"
 +                title="Votre design alternatif GPL">
 +                <img style="vertical-align:middle"
 +                     src="/Ut/Images/Logo/logo_RF-232_transparent_BT.png"
 +                     alt="Documentation GFDL & design GPL"
 +                     width="67" height="25"
 +                     align="middle">
 +            </a>
 +          </div></br>
 +          <!-- #FIN - MODIFICATION DU PIED DE PAGE -->
 +
 +        <?php do_action( 'storefront_after_footer' ); ?>
 +
 +</div><!-- #page -->
 +
 +<?php wp_footer(); ?>
 +
 +</body>
 +</html>
 +[root@tchana themes]#
 +</file>
 +\\ 
 +
 +<WRAP column 20%>
 +Voilà, notre nouveau pied de page s'affiche tel que voulu.
 +</WRAP>
 +<WRAP column 70%>
 +|{{ Images_Cahier-101-06-157.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Titre de page =====
 +
 +<WRAP column 30%>
 +Voici l'affichage original du titre d'une page.
 +
 +On veut le titre de la page centré, une police de 1.75em //( ± 21pt )// et en gras.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-158.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +On s'assure que nous sommes toujours dans le répertoire des thèmes.
 +<file>
 +
 +[root@tchana themes]# pwd
 +
 +/var/www/html/wp-content/themes
 +[root@tchana themes]#
 +</file>
 +
 +On ajoute la nouvelle directive ci-dessous au fichier ''style.css'' du Thème enfant.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat >> storefront-enfant/style.css <<'EOT'
 +/* TITRE DE LA PAGE - police 21pt, centré et gras */
 +.entry-title {
 +  font-size: 1.75em;
 +  text-align: center;
 +  font-weight: bold !important;
 +}
 +
 +EOT
 +
 +</file>
 +
 +On vérifie les //7// dernières lignes du fichier.
 +
 +<file>
 +[root@tchana themes]# tail -7 storefront-enfant/style.css
 +
 +/* TITRE DE LA PAGE - police 21pt, centré et gras */
 +.entry-title {
 +  font-size: 1.75em;
 +  text-align: center;
 +  font-weight: bold !important;
 +}
 +
 +[root@tchana themes]#
 +</file>
 +
 +
 +
 +<WRAP column 30%>
 +On affiche la page des //Conditions d'Utilisation//.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-159.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Logo et slogan =====
 +
 +On veut mettre notre logo et une image à la place du logo et du slogan standard.
 +
 +{{ Images_Cahier-101-06-162.png?800 }}
 +\\ 
 +
 +==== Fichier style.css ==== 
 +
 +<WRAP box>
 +<file>
 +...
 +/* LOGO ET SLOGAN DU SITE - ne pas l'afficher */
 +.site-header .site-branding { display: none;}
 +
 +/* ARRIÈRE-PLAN DE L'EN-TÊTE - la couleur est blanche */
 +.site-header { background-color: white; }
 +
 +/* COULEUR DE LA POLICE DU MENU - la couleur est mauve et en gras */
 +.main-navigation ul.menu > li > a, .main-navigation ul.nav-menu > li > a {
 +    color: #96588a;
 +}
 +
 +/* Pour insérer 20px au-dessus du diagramme réseau et (0px en-dessous du menu principal) */
 +/* Fonctionne avec la directive de l'espace au-dessus et en-dessous du menu Panier */ 
 +.site-header {
 +    padding-top: 20px;
 +    padding-bottom: 0;
 +}
 +</file>
 +</WRAP>
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat >> storefront-enfant/style.css <<'EOT'
 +
 +/* LOGO ET SLOGAN DU SITE - ne pas l'afficher */
 +.site-header .site-branding { display: none;}
 +
 +/* ARRIÈRE-PLAN DE L'EN-TÊTE - la couleur est blanche */
 +.site-header { background-color: white; }
 +
 +/* COULEUR DE LA POLICE DU MENU - la couleur est mauve et en gras*/
 +.main-navigation ul.menu > li > a, .main-navigation ul.nav-menu > li > a {
 +    color: #96588a;
 +    font-weight: bold !important;
 +}
 +
 +/* Pour insérer 20px au-dessus du diagramme réseau et (0px en-dessous du menu principal) */
 +/* Fonctionne avec la directive de l'espace au-dessus et en-dessous du menu Panier */ 
 +.site-header {
 +    padding-top: 20px;
 +    padding-bottom: 0;
 +}
 +
 +EOT
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana themes]# tail -n19 storefront-enfant/style.css
 +
 +/* LOGO ET SLOGAN DU SITE - ne pas l'afficher */
 +.site-header .site-branding { display: none;}
 +
 +/* ARRIÈRE-PLAN DE L'EN-TÊTE - la couleur est blanche */
 +.site-header { background-color: white; }
 +
 +/* COULEUR DE LA POLICE DU MENU - la couleur est mauve et en gras*/
 +.main-navigation ul.menu > li > a, .main-navigation ul.nav-menu > li > a {
 +    color: #96588a;
 +    font-weight: bold !important;
 +}
 +
 +/* Pour insérer 20px au-dessus du diagramme réseau et (0px en-dessous du menu principal) */
 +/* Fonctionne avec la directive de l'espace au-dessus et en-dessous du menu Panier */
 +.site-header {
 +    padding-top: 20px;
 +    padding-bottom: 0;
 +}
 +
 +[root@tchana themes]#
 +</file>
 +
 +==== Fichier functions.php ==== 
 +
 +{{Images_Cahier-101-03-006.png?25}} On ajoute le contenu de l'encadré ci-dessous dans le fichier ''functions.php'' <wrap em>juste avant la dernière ligne</wrap>, celle qui contient la dernière fermeture <wrap em>PHP ?></wrap>.
 +
 +<file>
 +/* ############################################ */
 +/* 2018-03-29_12h43                             */
 +/* APPARENCE  |  EN-TÊTE                        */
 +/* Pas de jeu d’images                          */
 +/* Couleurs - En-tête actuel                    */
 +/* Couleur d’arrière-plan: #ffffff  (blanc)     */
 +/* Couleur du texte: #9aa0a7                    */
 +/* Couleur des liens: #96588a       (magenta)   */
 +/* IMAGE D'EN-TÊTE                                                        */
 +/* LOGO: /Ut/Images/EN-TETE/logo_Micronator_250x65_res_1200x1200_PPT.png  */
 +/*       LIEN: /                                                          */
 +/* IMAGE RESEAU: /Ut/Images/EN-TETE/Reseau_complet_avec_clone_PPT_800.png */
 +/*       LIEN: aucun                                                      */
 +
 +add_action( 'storefront_header', 'jk_storefront_header_content', 40 );
 +function jk_storefront_header_content() {
 +  ?>
 +    <div>
 +      <table style="text-align: center; width: 100%; ">
 +        <tbody>
 +          <tr>
 +            <td style="width: 13%; text-align: left; vertical-align: top; padding: 0px; "><a title="Page principale" href="/"><img class="alignleft" src="/Ut/Images/EN-TETE/Logo_Micronator_Vers-Gauche_222x210_APT.png" alt="Page principale" /></a></td>
 +            <td style="text-align: right; vertical-align: top; width: 67%; padding: 0px; "><img class="alignright" src="/Ut/Images/EN-TETE/Ente-tete_927x176_APT.png" alt="Réseau Micronator" /></td>
 +          </tr>
 +        </tbody>
 +       </table>
 +    </div>
 +  <?php
 +}
 +</file>
 +
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana themes]# tail -33 storefront-enfant/functions.php
 +
 +/* ############################################ */
 +/* 2018-03-29_12h43                             */
 +/* APPARENCE  |  EN-TÊTE                        */
 +/* Pas de jeu d’images                          */
 +/* Couleurs - En-tête actuel                    */
 +/* Couleur d’arrière-plan: #ffffff  (blanc)     */
 +/* Couleur du texte: #9aa0a7                    */
 +/* Couleur des liens: #96588a       (magenta)   */
 +/* IMAGE D'EN-TÊTE                                                        */
 +/* LOGO: /Ut/Images/EN-TETE/logo_Micronator_250x65_res_1200x1200_PPT.png  */
 +/*       LIEN: /                                                          */
 +/* IMAGE RESEAU: /Ut/Images/EN-TETE/Reseau_complet_avec_clone_PPT_800.png */
 +/*       LIEN: aucun                                                      */
 +
 +add_action( 'storefront_header', 'jk_storefront_header_content', 40 );
 +function jk_storefront_header_content() {
 +  ?>
 +    <div>
 +      <table style="text-align: center; width: 100%; ">
 +        <tbody>
 +          <tr>
 +            <td style="width: 13%; text-align: left; vertical-align: top; padding: 0px; "><a title="Page principale" href="/"><img class="alignleft" src="/Ut/Images/EN-TETE/Logo_Micronator_Vers-Gauche_222x210_APT.png" alt="Page principale" /></a></td>
 +            <td style="text-align: right; vertical-align: top; width: 67%; padding: 0px; "><img class="alignright" src="/Ut/Images/EN-TETE/Ente-tete_927x176_APT.png" alt="Réseau Micronator" /></td>
 +          </tr>
 +        </tbody>
 +       </table>
 +    </div>
 +  <?php
 +}
 +
 +?>
 +
 +[root@tchana themes]#
 +</file>
 +
 +==== Répertoire des images d'en-tête ==== 
 +
 +On crée le répertoire ''Ut/Images/EN-TETE''.
 +
 +<file>
 +[root@tchana themes]# mkdir -p /var/www/html/Ut/Images/EN-TETE/
 +
 +[root@tchana themes]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana themes]# ls -alsd /var/www/html/Ut/Images/EN-TETE/
 +
 +0 drwxr-xr-x 2 root root 219 10 févr. 23:21 /var/www/html/Ut/Images/EN-TETE/
 +[root@tchana themes]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} On copie les images nécessaires dans le répertoire:  ''/var/www/html/Ut/Images/EN-TETE/''.
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana themes]# ls -ls /var/www/html/Ut/Images/EN-TETE/
 +
 +total 144
 + 80 -rw-r--r-- 1 root   apache  79472  3 mars  11:49 Ente-tete_927x176_APT.png
 + 44 -rw-r--r-- 1 root   apache  41088  3 mars  11:51 Logo_Micronator_Vers-Gauche_222x210_APT.png
 +[root@tchana themes]#
 +</file>
 +
 +<WRAP column 30%>
 +On se rend sur notre site et notre nouvel en-tête s'affiche tel que voulu.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-163.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Conclusion du Thème enfant====
 +
 +Utilisant un Thème enfant, on peut modifier le code CSS de notre site sans craindre qu'une mise à jour écrase nos modifications.
 +
 +{{Images_Cahier-101-03-006.png?25}} Un Thème enfant s'applique seulement lorsque le Thème parent est actif. Si on change de thème, il faudra refaire un nouveau Thème enfant pour le nouveau thème activé.
 +\\ 
 +
 +===== Droits et permissions =====
 +
 +On peut ajuster le propriétaire et le groupe pour tout le répertoire racine de notre site Web principal.
 +
 +<file>
 +[root@tchana themes]# chown -R apache:apache /var/www/html/*
 +
 +[root@tchana themes]#
 +</file>
 +
 +On enlève tous les droits à l'utilisateur "other".
 +
 +<file>
 +[root@tchana themes]# chmod -R o-rwx /var/www/html/*
 +
 +[root@tchana themes]#
 +</file>
 +
 +{{Images_Cahier-101-03-003.png?22}} Il est fortement recommandé de vérifier le propriétaire, le groupe et les droits pour tout le site Web avec WinSCP ou FileZilla.
 +\\ 
 +\\ 
 +
 +====== Mise à jour des Collections ======
 +
 +===== Introduction =====
 +
 +Présentement, nous avons deux Collections d'installées: //PHP// et //MariaDB 10.2//. Elles peuvent être mises à jour à la console du serveur. __La mise à jour du Serveur NethServer les mettra aussi automatiquement à jour__.
 +
 +===== Mises à jour =====
 +
 +On lance les mises à jour des deux //Collections//.
 +
 +<file>
 +[root@tchana ~]# yum update -y --enablerepo=stephdl nethserver-php-scl nethserver-rh-mariadb102
 +
 +Loaded plugins: changelog, fastestmirror, nethserver_events
 +Determining fastest mirrors
 +epel/x86_64/metalink                                                  15 kB  00:00:00
 + * ce-base: ewr.edge.kernel.org
 +...
 +Dependencies Resolved
 +...
 +Transaction Summary
 +============================================================================================
 +Install              4 Dependent packages)
 +Upgrade  1 Package  (+52 Dependent packages)
 +...
 +Dependency Installed:
 +  oniguruma5.x86_64 0:6.9.2-1.el7.remi         php71-php-opcache.x86_64 0:7.1.30-1.el7.remi
 +  php72-php-opcache.x86_64 0:7.2.19-2.el7.remi php73-php-opcache.x86_64 0:7.3.6-1.el7.remi
 +
 +Updated:
 +  nethserver-php-scl.x86_64 0:1.2.6-1.ns7.sdl
 +
 +Dependency Updated:
 +  php71-php-bcmath.x86_64 0:7.1.30-1.el7.remi
 +...
 +  php73-php-xml.x86_64 0:7.3.6-1.el7.remi
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-005.png?25}} Les mises à jour ont été installées.\\ 
 +{{Images_Cahier-101-03-003.png?22}} Dans la commande ci-dessus, on peut omettre l'option ''-y'' et ''yum'' demandera si on veut mette a jour. Il suffit de répondre ''y'' ou ''n'' pour //oui// ou //non//.
 +\\ 
 +\\ 
 +
 +====== Hôte virtuel ======
 +
 +===== Description =====
 +
 +//Référence:// [[http://docs.nethserver.org/en/v7/virtual_hosts.html|http://docs.nethserver.org/en/v7/virtual_hosts.html]].\\ 
 +L'hébergement virtuel permet d'offrir plusieurs noms de domaine sur un seul serveur. Dans l'interface Web de NethServer, depuis la page **Gestion -> Hôtes virtuels**, il est possible de configurer des sites Web en tant qu'hôtes virtuels d'Apache.
 +
 +==== Noms d'hôte virtuel (FQDN) ==== 
 +
 +Les //Noms d'hôtes virtuel (FQDN)// sont la liste des noms de domaines pleinement qualifiés associés à l'hôte virtuel.
 +
 +==== Configuration d'une application Web ==== 
 +
 +Lorsqu'un nouvel hôte virtuel est créé, le répertoire ''/var/lib/nethserver/vhost/Nom-d-hote-virtuel'' est également créé.
 +
 +  - {{Images_Cahier-101-03-003.png?22}} Pour un hôte virtuel, l'accès FTP est désactivé par défaut, vous ne devez pas l'activer, car son activation change le propriétaire du répertoire ''Nom-d-hote-virtuel'' de l'hôte virtuel; de propriétaire //**apache**// à celui de propriétaire //**ftp**//. Ce changement occasionne des difficultés pour WordPress lors de sa mise à jour vers une version plus récente.
 +  - {{Images_Cahier-101-03-005.png?25}} Le tableau de bord de WordPress se charge du téléchargement des fichiers.
 +
 +==== Autorisations Apache ==== 
 +
 +Les fichiers téléchargés par FTP appartiennent au groupe apache. Si vous devez autoriser l'accès en écriture ou en exécution pour Apache, vous pouvez modifier les autorisations du groupe à l'aide du client FTP.
 +
 +{{Images_Cahier-101-03-008.png?25}} Si un hôte virtuel contient du code exécutable, tel que des scripts PHP, les autorisations des utilisateurs et leurs implications en matière de sécurité doivent être soigneusement évaluées.
 +
 +===== Création d'un deuxième domaine pour un second WordPress =====
 +
 +À la section //DNS dynamique// du [[nethserver_101_cahier_05_vdsl_fqdn_internet_et_nethserver|Cahier-05]]: //VDSL, FQDN, Internet et NethServer//, lors de l'installation de NethServer sur un serveur physique, nous avons créé un domaine chez //NoIP// pour démontrer qu'on pouvait utiliser un nom de domaine d'un fournisseur de services dynamiques.
 +
 +{{ Images_Cahier-101-06-164.png?800 }}
 +
 +Lorsque nous voudrons installer un autre WordPress pour le domaine //micronator-101.ddns.net// sur le serveur physique, nous devrons créer un hôte virtuel pour son installation. Nous allons donc approfondir ce concept et en faire l'expérimentation sur notre serveur de test et ainsi, nous maîtriserons la création d'hôtes virtuels pour l'installation d'un second WordPress avant de procéder sur le serveur physique.\\ 
 +<wrap em>*</wrap> Pour cette démonstration, nous utiliserons le FQDN //(micronator-__dev.net__)//.
 +
 +===== Création d'une entrée DNS pour un 2e domaine =====
 +
 +Il nous faut créer une entrée DNS pour un nom FQDN d'hôte //(micronator-dev.net)// avant de créer un hôte virtuel sinon, nous ne pourrons pas accéder à certains services de ce nouvel hôte.
 +
 +<WRAP column 30%>
 +**Configuration -> DNS ->** onglet  **Hôtes -> CRÉER NOUVEAU**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-165.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +Lorsque coché, le paramètre //**wildcard dns record**// ci-dessous permettra l'accès à tous les CNAME du domaine tels que //mail//, //proxy//, //pda//, //wpad// etc...
 +
 +<WRAP center>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-166.png?400 }}|
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-167.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_Cahier-101-03-004.png?25}} Pour le nom de l'hôte, on utilise micronator-dev.net sans le préfixe www, car nous voulons avoir tous les CNAME en préfixe et c'est pourquoi on coche //wildcard dns record//. Cette subtilité est très importante surtout pour un serveur physique accessible depuis l'Internet ou si on utilise le module //Proxy inverse// sur le serveur principal pour accéder à un serveur LOCAL.
 +
 +==== Alias ==== 
 +
 +Non nécessaire, mais __par précaution__ si ce n'est déjà fait, on crée un alias pour //mail.micronator-dev.net//.\\ 
 +{{Images_Cahier-101-03-004.png?25}} Au lieu de cet alias, nous pourrions simplement ajouter ce FQDN à la liste des noms de domaines, //**Noms d'hôte virtuel (FQDN)**//, lors de la création de l'hôte virtuel.
 +
 +<WRAP column 25%>
 +|{{ Images_Cahier-101-06-168.png?400 }}|
 +</WRAP>
 +<WRAP column 25%>
 +|{{ Images_Cahier-101-06-169.png?400 }}|
 +</WRAP>
 +<WRAP column 40%>
 +|{{ Images_Cahier-101-06-170.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Création d'un hôte de messagerie pour un 2e domaine =====
 +
 +Pour pouvoir accéder à //Webmail// en utilisant le FQDN de notre 2e domaine, il faut indiquer au Serveur NethServer que ce domaine est aussi un serveur de messagerie électronique en créant un nouveau domaine de messagerie.
 +
 +**Configuration -> Courrier (Email)** //(après mai 2019, **Messagerie électronique**)// **->** onglet **Domaines -> CRÉER NOUVEAU ->** on entre les information demandées.
 +
 +<WRAP center>
 +<WRAP column 25%>
 +**-> micronator-dev.net**
 +
 +**-> Pour Webmail du 2e domaine**
 +
 +⦿ //**Distribution locale**//
 + 
 +☑ **Accepter des destinataires inconnus**\\ 
 +Ce paramètre et //**Remettre à**// sont optionnels et sont laissés à votre discrétion.
 +
 +☐ //**Signer les messages sortant avec DomainKeys Identified Mail (DKIM)**//\\ 
 +On ne coche pas ce paramètre, car nous sommes sur un serveur LOCAL. Voir le paragraphe [[nethserver_101_cahier_06_nethserver_wordPress#DKIM]].
 +
 +**SOUMETTRE**.
 +</WRAP>
 +<WRAP column 65%>
 +|{{ Images_Cahier-101-06-171.png?600 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_Cahier-101-03-006.png?25}} Si ce serveur est directement branché à l'Internet, il est alors fortement recommandé d'activer ce paramètre. Pour plus d'information, voir la section //DKIM// du [[nethserver_101_cahier_05_vdsl_fqdn_internet_et_nethserver|Cahier-05]]: //VDSL, FQDN, Internet et NethServer//.
 +
 +<WRAP column 25%>
 +Le 2e domaine est maintenant un serveur de messagerie.
 +</WRAP>
 +<WRAP column 65%>
 +|{{ Images_Cahier-101-06-172.png?600 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Création d'un hôte virtuel pour un 2e domaine =====
 +
 +Nous allons créer un hôte virtuel pour le 2e domaine afin de créer un répertoire pour pouvoir y installer un second WordPress qui sera entièrement dédié à ce 2e domaine. Nous utiliserons deux noms FQDN afin de pouvoir accéder à ce second WordPress en se rendant aux URL suivants: http://micronator-dev.net et http://www.micronator-dev.net.
 +
 +<WRAP column 25%>
 +**Gestion -> Hôtes virtuels -> CRÉER NOUVEAU**.
 +</WRAP>
 +<WRAP column 65%>
 +|{{ Images_Cahier-101-06-173.png?600 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Onglet Général ==== 
 +
 +{{Images_Cahier-101-03-005.png?25}} L'action **CRÉER NOUVEAU** est similaire à **Éditer**. La seule différence est le paramètre //**Actions supplémentaires**// au bas du formulaire.
 +
 +<WRAP column 45%>
 +//**Nom**//\\ 
 +<nowiki>-</nowiki> Un nom simple qui identifie la configuration de l'hôte virtuel.\\ 
 +<nowiki>-</nowiki> Ce sera aussi le nom du répertoire racine du site Web pour cet hôte virtuel et il sera créé dans: ''/var/lib/nethserver/vhost/''
 +
 +//**Description**//\\ 
 +Champ facultatif pour une brève description.
 +
 +//**Noms d'hôte virtuel (FQDN)**//\\ 
 +La liste des noms de domaine pleinement qualifiés //(FQDN)// associés à l'hôte virtuel. Les valeurs doivent être séparées par une "," [virgule]. Les noms de notre hôte virtuel sont: //micronator-dev.net// et //www.micronator-dev.net//.
 +
 +{{Images_Cahier-101-03-006.png?25}} Avec certains services de DNS dynamique, on ne peut employer le CNAME www.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-174.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 45%>
 +☐ //**Autoriser l'accès uniquement pour les réseaux de confiance**//\\ 
 +Si coché, seuls les clients des réseaux de confiance (vert) peuvent accéder au site Web de cet hôte virtuel.
 +
 +☐ //**Requiert une authentification HTTP**//\\ 
 +{{Images_Cahier-101-03-005.png?25}} Il faut cocher la case pour faire apparaître les champs: //**Nom d'utilisateur**// et //**Mot de Passe**//.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-175.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Si vous cochez cette option, le site Web n'est visible qu'à ceux qui fourniront le nom d'usager //__devnet__// //(le nom du répertoire racine qui sera créé pour le nouvel hôte virtuel)// et le //__Mot de passe__//.
 +
 +<WRAP column 45%>
 +☐ //**Nécessite une connexion SSL cryptée** //(sic chiffrée)// //\\ 
 +Si coché, le site Web est accessible uniquement via le protocole http__s__.\\ 
 +{{Images_Cahier-101-03-008.png?25}} Pour un serveur de production il est préférable de cocher ce paramètre afin de toujours avoir une connexion sécuritaire chiffrée.\\ 
 +{{Images_Cahier-101-03-006.png?25}} Si notre serveur de test n'a pas de certificat d'une //CA// reconnue, les connexions ne seront jamais chiffrées.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-176.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +
 +
 +☐ //**Root directory file listings**//\\ 
 +Si coché, permet au serveur de générer et d'afficher une liste de fichiers/répertoires pour un site Web si aucun fichier ''index.xxx'' n'est présent dans le répertoire de la page demandée.
 +
 +//**SSL/TLS certificate**//\\ 
 +Sélectionnez un certificat compatible avec les noms d'hôte de la liste //Noms d'hôte virtuel (FQDN)//.
 +
 +<WRAP column 45%>
 +☐ //**Enable FTP access**//\\ 
 +Pour un hôte virtuel qui hébergera un site WordPress, il n'est pas recommandé d'activer l'accès FTP, voir [[nethserver_101_cahier_06_nethserver_wordPress#Configuration d'une application Web]].
 +
 +=== Actions supplémentaires ===
 +☐ //**Créer une entrée sous la page "DNS > Alias du serveur" pour chaque nom d'hôte virtuel**//
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-177.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Si cette option est activée, un alias pour chacun des //Noms d'hôte virtuel (FQDN)// entrés est automatiquement créé sur la page **Configuration -> DNS -> Alias du serveur**, mais ils ne sont utiles que pour les clients qui utilisent le serveur comme DNS.\\ 
 +{{Images_Cahier-101-03-005.png?25}} Il n'est pas nécessaire d'activer cette options, car //micronator-dev.net// possède déjà une entrée sous **Configuration -> DNS -> Hôtes** et nous avons inséré //www.micronator-dev.net// ci-dessus sous //**Noms d'hôte virtuel (FQDN)**//.
 +
 +==== Onglet Bibliothèque d'applications PHP ==== 
 +
 +<WRAP column 45%>
 +☑ //**Activer l'accès web**//\\ 
 +{{Images_Cahier-101-03-006.png?25}} Lorsqu'un hôte virtuel est désactivé, il est impossible d'y accéder de quelque manière que ce soit. Par défaut, un hôte virtuel nouvellement créé est activé.
 +
 +▼  //**Select the php Version for this Ibay**//\\ 
 +Cette option permet de sélectionner la version PHP qu'on désire utiliser pour cet hôte virtuel.
 +
 +⦿ On choisit la version **PHP 72**.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-178.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Onglet Paramètres php ==== 
 +
 +<WRAP column 45%>
 +Si vous avez besoin d'ajuster les paramètres de PHP, vous devez les ajuster dans cet onglet; les modifications ne sont valables que pour cet hôte virtuel seulement.
 +
 +☑ //**Activer l'accès web**// \\ 
 +{{Images_Cahier-101-03-006.png?25}} Lorsqu'un hôte virtuel est désactivé, il est impossible d'y accéder de quelque manière que ce soit. Par défaut, un hôte virtuel nouvellement créé est activé.
 +
 +☐ //**Autoriser l'accès PHP aux fichiers distants**//\\ 
 +{{Images_Cahier-101-03-008.png?25}} Lorsque la directive //allow//<nowiki>_</nowiki>//url//<nowiki>_</nowiki>//fopen// est activée, vous pouvez écrire des scripts PHP qui ouvrent des fichiers distants comme s'il s'agissait de fichiers locaux.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-179.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +//**Mémoire disponible maximum (250 Mégaoctets)**//\\ 
 +Cette variable définit la quantité maximale de mémoire en octets qu'un script est autorisé à allouer. //memory//<nowiki>_</nowiki>//limit// affecte également le téléchargement de fichier. D'une manière générale, //memory//<nowiki>_</nowiki>//limit// devrait être plus grand que //post//<nowiki>_</nowiki>//max//<nowiki>_</nowiki>//size//.
 +
 +//**Taille maximum autorisée des données envoyées (100 Mégaoctets)**//\\ 
 +Cette variable définit la taille maximale autorisée pour les publications //(post)//. Ce paramètre affecte également le téléchargement de fichiers. Pour télécharger des fichiers volumineux, cette valeur doit être supérieure à //<nowiki>upload_max_filesize</nowiki>//. Si la limite de mémoire est activée par votre script de configuration, //<nowiki>memory_limit</nowiki>// affecte également le téléchargement de fichiers. D'une manière générale, //<nowiki>memory_limit</nowiki>// devrait être plus grand que //<nowiki>post_max_size</nowiki>//.
 +
 +//**Taille maximum du fichier télécharger (75 Mégaoctets)**//\\ 
 +Cette variable définit la taille maximale de téléchargement d'un fichier sur votre serveur.
 +
 +{{Images_Cahier-101-03-006.png?25}} //<nowiki>memory_limit (250M)</nowiki>// **>** //<nowiki>post_max_size (100M)</nowiki>// **>** //<nowiki>upload_max_filesize (75M)</nowiki>//
 +
 +//**Temps maximum d’exécution des scripts (défaut)**//\\ 
 +Cette variable définit la durée maximale, en secondes, pendant laquelle un script est autorisé à rouler avant d'être terminé par l'analyseur syntaxique. Ceci empêche les scripts mal écrits d'accaparer le serveur.
 +
 +//**Nombre maximum de fichier téléversé (défaut)**//\\ 
 +Cette variable définit le nombre maximum de fichiers pouvant être téléchargés simultanément.
 +
 +<wrap em>SOUMETTRE</wrap> pour enregistrer toutes les modifications. //(Peut prendre un certain temps.)//
 +
 +<WRAP column 30%>
 +Notre hôte virtuel a été créé avec ses noms FQDN d'hôte virtuel.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-180.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_Cahier-101-03-006.png?25}} Si vous éditez cet hôte virtuel, vous noterez que le système ajoute un espace après les virgules qui séparent les noms FQDN.\\ 
 +Nous avons entré:\\ 
 +● //micronator-dev.net<wrap em>,</wrap>www.micronator-dev.net//\\ 
 +mais lors de l'édition, ces noms d'hôtes apparaîtront avec un espace après la virgule de séparation:\\ 
 +● //micronator-dev.net//<wrap em>,</wrap> //www.micronator-dev.net//
 +
 +===== Vérification =====
 +
 +<WRAP column 30%>
 +==== Hôtes DNS ==== 
 +
 +**Configuration -> DNS -> onglet Hôtes**.
 +
 +Les hôtes originaux DNS n'ont pas été affectés par la création d'un nouvel hôte virtuel.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-181.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +=== Alias du serveur ===
 +
 +__Si vous avez coché__ //Créer une entrée sous la page "DNS  >  Alias du serveur" pour chaque nom d'hôte virtuel// au paragraphe [[nethserver_101_cahier_06_nethserver_wordPress#Actions supplémentaires]], un nouvel alias sera créé avec le préfixe //www// si vous n'avez pas utilisé //www.micronator-dev.net// dans le cadre du paramètre //Noms d'hôte virtuel (FQDN)//.
 +
 +{{Images_Cahier-101-03-006.png?25}} S'il n'y avait pas eu d'entrée DNS //micronator-dev.net// à la page **Configuration -> DNS ->**  onglet **Hôtes**, un nouvel alias avec ce nom, sans le préfixe www, aurait aussi été créé.
 +
 +==== Hôte de messagerie ==== 
 +
 +<WRAP column 30%>
 +<nowiki>-</nowiki> **Configuration -> Courrier (Email)**  //(après mai 2019, Messagerie électronique)// **->** onglet **Domaines**.
 +
 +<nowiki>-</nowiki> Les hôtes originaux de messagerie n'ont pas été affectés.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-182.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Répertoire racine du site Web du 2e domaine ==== 
 +
 +On vérifie la création du répertoire de l'hôte virtuel.
 +
 +<file>
 +[root@tchana ~]# ls -als /var/lib/nethserver/vhost/devnet
 +
 +total 0
 +0 drwxr-sr-x 2 ftp  apache  6 13 févr. 13:16 .
 +0 drwxr-xr-x 3 root root   20 13 févr. 13:16 ..
 +[root@tchana ~]#
 +</file>
 +Le répertoire existe, mais il est complètement vide.
 +\\ 
 +\\
 +
 +===== Propriétaire:groupe du répertoire /var/lib/nethserver/vhost/devnet =====
 +
 +On change le //propriétaire:groupe// du répertoire ''/var/lib/nethserver/vhost/devne''t pour ''apache:apache'', sinon nous aurons des difficultés pour mettre à jour WordPress.
 +
 +<file>
 +[root@tchana ~]# chown apache:apache /var/lib/nethserver/vhost/devnet
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie
 +
 +<file>
 +[root@tchana ~]# ls -alsd /var/lib/nethserver/vhost/devnet
 +
 +4 drwxr-sr-x 9 apache apache 4096 22 avril 14:35 /var/lib/nethserver/vhost/devnet
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +===== index.html =====
 +
 +On écrit un texte qui s'affichera lors de l'accès à l'URL: <nowiki>http[s]//[www.]micronator-dev.net</nowiki>.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /var/lib/nethserver/vhost/devnet/index.html <<'EOT'
 +<html>
 +<head>
 +<meta content="text/html; charset=ISO-8859-1"
 +http-equiv="content-type">
 +<title></title>
 +</head>
 +<body>
 +<center>Allo le monde!</center><br>
 +</body>
 +</html>
 +EOT
 +
 +</file>
 +
 +On ajuste le propriétaire et le groupe.
 +
 +<file>
 +[root@tchana ~]# chown apache:apache /var/lib/nethserver/vhost/devnet/index.html
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -ls /var/lib/nethserver/vhost/devnet/index.html
 +
 +4 -rw-r--r-- 1 apache apache 170 13 févr. 18:46 /var/lib/nethserver/vhost/noip/index.html
 +[root@tchana ~]#
 +</file>
 +
 +On affiche le contenu.
 +
 +<file>
 +[root@tchana ~]# cat /var/lib/nethserver/vhost/devnet/index.html
 +
 +<html>
 +<head>
 +<meta content="text/html; charset=ISO-8859-1"
 +http-equiv="content-type">
 +<title></title>
 +</head>
 +<body>
 +<center>Allo le monde!</center><br>
 +</body>
 +</html>
 +[root@tchana ~]#
 +</file>
 +
 +==== Accès Web ==== 
 +
 +On vérifie l'accès à l'hôte virtuel de différentes manières.
 +
 +<WRAP center>
 +<WRAP column 45%>
 +<nowiki>-</nowiki> Sans préfixe //www//.\\ 
 +<nowiki>-</nowiki> //micronator-dev.net///
 +|{{ Images_Cahier-101-06-184.png?400 }}|
 +</WRAP>
 +<WRAP column 45%>
 +<nowiki>-</nowiki> Avec préfixe //www//.\\ 
 +<nowiki>-</nowiki> //www.micronator-dev.net///.
 +|{{ Images_Cahier-101-06-185.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP center>
 +<WRAP column 45%>
 +<nowiki>-</nowiki> Sans préfixe //www//, mais sécurisé.\\ 
 +<nowiki>-</nowiki> //<nowiki>https://micronator-dev.net/</nowiki>//
 +|{{ Images_Cahier-101-06-186.png?400 }}|
 +</WRAP>
 +<WRAP column 45%>
 +<nowiki>-</nowiki> Avec préfixe //www//, mais sécurisé.\\ 
 +<nowiki>-</nowiki> //<nowiki>https://www.micronator-dev.net/</nowiki>//.
 +|{{ Images_Cahier-101-06-187.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Suppression du fichier index.html ==== 
 +
 +On supprime le fichier ''index.html'' car il va nuire au fichier ''index.php'' du second WordPress.
 +
 +<file>
 +[root@tchana ~]# rm /var/lib/nethserver/vhost/devnet/index.html
 +
 +rm : supprimer fichier « /var/lib/nethserver/vhost/devnet/index.html » ? o
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +===== Second WordPress =====
 +
 +On peut installer un nouveau WordPress dans le répertoire ''/var/lib/nethserver/vhost/devnet'' en suivant les mêmes procédures que celles utilisées précédemment pour //micronator-dev.org//, mais en utilisant //micronator-dev.net// et une nouvelle base de données //MariaDB 10.2//.
 +
 +{{Images_Cahier-101-03-006.png?25}} Il est absolument nécessaire d'ajouter les lignes ci-dessous à la fin du fichier ''wp-config.php'' du 2e WordPress.
 +
 +<file>
 +###############################################
 +
 +# Michel-André, 8 février 2019 @ 13h34 HNE
 +#
 +# Référence: https://juliencrego.com/wordpress-impossible-de-localiser-le-repertoire-de-contenu/
 +# Ajout de code afin de pouvoir localiser le répertoire de contenu
 +#
 +if(is_admin()){
 + add_filter('filesystem_method', create_function('$a', 'return "direct";' ));  
 + define( 'FS_CHMOD_DIR', 0751 );
 +}
 +###############################################
 +</file>
 +
 +<WRAP column 45%>
 +Après l'installation, vous devriez recevoir un courriel pour confirmer la création du 2e WordPress.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-188.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== Connexion ==== 
 +
 +On se rend à //<nowiki>https://www.micronator-dev.net</nowiki>// **-> Connexion ->** on se logue avec le justificatif d'identité entré lors de l'installation.\\ 
 +{{Images_Cahier-101-03-005.png?25}} L'image du thème de la page d'accueil peut varier selon la version choisie de WordPress. Ci-dessous, ce sont les pages de la version //4.9.9// de WordPress.
 +
 +<WRAP center>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-189.png?400 }}|
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-190.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +On peut accéder au //Tableau de bord//.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-191.png?600 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Victoire, notre deuxième site WordPress est accessible.
 +
 +<WRAP centeralign>**Notre deuxième domaine WordPress est fonctionnel.**</WRAP>
 +\\ 
 +
 +===== Webmail =====
 +
 +==== Courriel de test ==== 
 +
 +{{Images_Cahier-101-03-006.png?25}} Remarque: si le Serveur NethServer est lié à un fournisseur distant de comptes Active Directory, un compte utilisateur dédié dans AD est requis par le module pour être pleinement opérationnel! Voir //Join an existing Active Directory domain// à l'URL [[http://docs.nethserver.org/en/v7/accounts.html#join-existing-ad-section|http://docs.nethserver.org/en/v7/accounts.html#join-existing-ad-section]].
 +
 +==== Suppression de l'affichage du nom du domaine ==== 
 +
 +<WRAP center>
 +<WRAP column 45%>
 +Si on se connecte à Webmail sur notre second domaine, le nom FQDN de celui-ci n'est pas affiché dans le champ Serveur car c'est le domaine primaire qui est toujours affiché, peu importe à quel domaine ou sous-domaine on se connecte à //Webmail//.
 +
 +Même si on déroule ce champ, le FQDN du second domaine n'est pas présent.
 +{{ Images_Cahier-101-06-192.png?250 }}
 +
 +Il est donc préférable de ne pas afficher ce champ lors d'une connexion à Webmail.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-193.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_Cahier-101-03-003.png?22}} Nous avons supprimé l'affichage de ce champ dans le [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]: //Installations d'un serveur NethServer virtuel// à la section //Nom du serveur dans l'écran de connexion à Webmail//.
 +
 +==== Connexion ==== 
 +
 +<WRAP column 45%>
 +{{Images_Cahier-101-03-004.png?25}} On accède à la messagerie électronique de notre Serveur NethServer avec une connexion sécuritaire //(https)//, car nous n'avons pas activé le paramètre //**Nécessite une connexion SSL cryptée**// lors de la création de l'hôte virtuel.
 +
 +● On utilise l'URL suivante pour accéder à Webmail:
 +
 +**<WRAP centeralign> 
 +http__s__:<nowiki>//</nowiki>www.__mail__.micronator-dev.net/__webmail__
 +</WRAP>**
 +
 +mais, vu que notre certificat TLS de //Let's Encrypt// ne contient pas ce FQDN, il n'est pas reconnu et le navigateur ne chiffrera pas la connexion même si nous utilisons le protocole //https//.
 +
 +● L'utilisateur //admin// se logue.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-194.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 45%>
 +{{Images_Cahier-101-03-005.png?25}} Si vous recevez le message d'erreur ci-contre, une erreur s'est glissée lors de la création de l'hôte virtuel ou vous n'avez pas utilisé <nowiki>http</nowiki>**__s__**<nowiki>://www.</nowiki>**__mail__**...
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-195.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +S'il n'y a eu aucune erreur lors de création des entités de l'hôte virtuel, la page de la //Boîte de réception// d'//admin// s'affiche.
 +
 +<WRAP column 30%>
 +Même si //admin// s'est connecté à Webmail en utilisant **https:**<nowiki>//</nowiki>**www.mail.micronator**<wrap em>-dev.net</wrap>**/webmail**, en haut à droite, son nom d'usager est **admin@micronator-**<wrap em>dev.org</wrap> comme s'il s'était connecté au site principal.
 +
 +Nous règlerons cet affichage pour l'utilisateur michelandre; voir [[nethserver_101_cahier_06_nethserver_wordPress#Alias de messagerie]].
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-196.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +**Rédiger** pour écrire un nouveau message.
 +
 +On rédige un message pour l'utilisateur michelandre **-> Envoyer**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-197.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP center>
 +<WRAP column 45%>
 +Dans le répertoire **Envoyés**, le message est présent.
 +|{{ Images_Cahier-101-06-198.png?400 }}|
 +</WRAP>
 +<WRAP column 45%>
 +**Déconnexion**.
 +|{{ Images_Cahier-101-06-199.png?400 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 45%>
 +L'utilisateur //michelandre// se connecte afin qu'il puisse accéder à sa boîte aux lettres.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-200.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +Le courriel d'//admin// a bien été reçu par //michelandre//.
 +
 +On double-clique l'**Objet du courriel** pour l'afficher.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-201.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +Le message reçu de l'utilisateur //admin// s'affiche.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-202.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +On clique l'icône **Plus d'actions...** pour afficher les menus masqués **-> Afficher la source**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-203.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +==== DKIM ==== 
 +
 +La source du message s'affiche et on peut voir que la signature DKIM fait bien partie du message.
 +
 +<file>
 +Return-Path: <admin@micronator-dev.org>
 +Delivered-To: michelandre@micronator-dev.org
 +Received: from tchana.micronator-dev.org
 + by tchana.micronator-dev.org with LMTP id kHVaNhi2dlwHKQAAO2z7Cw
 + for <michelandre@micronator-dev.org>; Wed, 27 Feb 2019 11:08:56 -0500
 +Received: from mail.www.micronator-dev.net (localhost [127.0.0.1])
 + (Authenticated sender: admin)
 + by tchana.micronator-dev.org (Postfix) with ESMTPA id A92551107618
 + for <michelandre@micronator-dev.org>; Wed, 27 Feb 2019 11:08:56 -0500 (EST)
 +DKIM-Filter: OpenDKIM Filter v2.11.0 tchana.micronator-dev.org A92551107618
 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=micronator-dev.org;
 + s=default; t=1551283736;
 + bh=6F8BxMLsRJnyYGhcakC0EJCkqs1O1BbegyqIJAXX4QU=;
 + h=Date:From:To:Subject:From;
 + b=0FwtvsSCpObAZZ++/DY82bU2plXcU1N/LYW/+YUOF2gOokkY99FEhUmtYFyJ7miKK
 + Jay6FZisM16jhZNlCCLxVy9gTtmoIXMYheDXLCHjAKvKjtJVHXHB608Kbk7Oe+E4LN
 + PkvOmwKxi3gsgFW2qvkS2RKUUIit/dyJEZGP0H11ukIHBEJLucDr0J9Vi7r0HQnkjE
 + R6SWTBBMSKxGGhn0+F09ZEYQYpsAFFxTPrDCTx0Q/3o17p+2slXuAFal8inB8zl1PU
 + RJQmzTYFaF+uIKTmRH2V/3xysimplbbp1qzue+hqAtmAzb2LAVCmFnrgWbledJ4d9V
 + zd6vDfhFhXn8Q==
 +MIME-Version: 1.0
 +Content-Type: text/plain; charset=US-ASCII;
 + format=flowed
 +Content-Transfer-Encoding: 7bit
 +Date: Wed, 27 Feb 2019 11:08:56 -0500
 +From: admin <admin@micronator-dev.org>
 +To: =?UTF-8?Q?Michel-Andr=C3=A9_dev=2Eorg?= <michelandre@micronator-dev.org>
 +Subject: Test de courriel de micronator-dev.net
 +Message-ID: <b8c14923e5b689f90ad2cdcdb381f84a@micronator-dev.org>
 +X-Sender: admin@micronator-dev.org
 +User-Agent: Roundcube Webmail/1.1.12
 +
 +Allo le monde de micronator-dev.net!
 +
 +admin
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Il faut avoir coché //**Signer les messages sortant avec DomainKeys Identified Mail (DKIM)**// pour avoir la signature DKIM, car c'est //tchana.micronator-<wrap em>dev.org</wrap>// qui a envoyé le message même si nous étions connecté à mail de //micronator-<wrap em>dev.net</wrap>//.
 +
 +{{Images_Cahier-101-03-006.png?25}} Ce serveur est LOCAL et normalement, il n'est pas recommandé d'activer DKIM pour un tel serveur surtout s'il n'a pas de certificat Let's Encrypt.
 +
 +==== Alias de messagerie ==== 
 +
 +<WRAP column 45%>
 +Tout comme l'utilisateur //admin//, //michelandre// a le même problème d'affichage avec son adresse courriel.
 +
 +Nous allons remédié à la situation en créant un alias de messagerie pour l'utilisateur //michelandre//.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-204.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +**Gestion -> Adresse mail ->** onglet  **Alias de messagerie -> CRÉER NOUVEAU**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-205.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 45%>
 +Un alias est utilisé pour créer une association entre: une nouvelle adresse courriel et des utilisateurs, des boîtes aux lettres partagées et des adresses électroniques externes.
 +
 +//**Adresse email**//\\ 
 +Spécifiez dans le champ de texte uniquement la partie précédant le caractère **@**.\\ 
 +Choisissez ensuite dans le menu déroulant si l'adresse correspond à un domaine spécifique ou à tous les domaines du système.
 +
 +//**Description**//\\ 
 +Une note pour décrire l'alias.
 +
 +//**Destinations**//\\ 
 +Sélectionnez les utilisateurs et les boîtes aux lettres partagées à associer à l'alias de messagerie.\\ 
 +Un grou­pe est automatiquement étendu à la liste des membres actuels.
 +</WRAP>
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-06-206.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +//**External email destinations**//\\ 
 +Liste d'adresses courriel séparées par des virgules //(ou des points-virgules)//. Ceci est un champ d’entrée seulement; après que l’entrée aura été soumise, les valeurs analysées seront ajoutées à //Destinations//.
 +
 +//**Réseau local seulement**//\\ 
 +L'activation de cette option bloquera la réception des messages provenant d'expéditeurs externes.
 +
 +On entre les informations demandées puis, **SOUMETTRE**.
 +
 +<WRAP column 30%>
 +Le nouvel alias a été créé pour l'utilisateur //michelandre//.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-207.png?800 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +=== Suppression ===
 +
 +{{Images_Cahier-101-03-006.png?25}} On peut supprimer un alias de messagerie. La suppression n'affecte pas les messages déjà remis à l'utilisateur ou dans la boîte aux lettres partagée associée à l'alias. Les futurs messages destinés à l'adresse supprimée seront rejetés.
 +
 +<WRAP column 30%>
 +==== Création d'une nouvelle identité ==== 
 +
 +Si l'utilisateur //michelandre// n'est pas déjà connecté à **https:**<nowiki>//</nowiki>**www.**__**mail**__**.micronator-**<wrap em>dev.net</wrap>**/webmail**, il se connecte.
 +
 +**Paramètres -> Identités -> + ->** on entre les informations demandées; surtout //**Courriel**// et //**Répondre à**//.
 +
 +{{Images_Cahier-101-03-006.png?25}} On coche **Définir par défaut**.
 +
 +**Enregistrer**.
 +
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-208.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +==== Création d'un nouveau courriel ==== 
 +
 +Au retour à la //Boîte de réception//, on voit que le nom affiché est maintenant <nowiki>michelandre@micronator-</nowiki><wrap em>dev.net</wrap>.
 +
 +L'utilisateur //michelandre// crée un nouveau courriel pour //admin//. Dans le champ //**DE**//, la nouvelle adresse courriel est affichée de même que dans le champ //**Répondre à**//.
 +
 +**Envoyer**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-209.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +==== Vérification ==== 
 +
 +L'utilisateur //admin// se connecte à __Webmail du serveur principal__ ou de l'hôte virtuel.
 +
 +On voit que l'alias de messagerie est affichée dans le champ //**Répondre à**//.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-210.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP center>
 +<WRAP column 45%>
 +\\ 
 +Si on survole le champ //**De**// avec la souris, l'alias de messagerie est affichée.
 +|{{ Images_Cahier-101-06-211.png?700 }}|
 +</WRAP>
 +<WRAP column 45%>
 +Si on survole l'icône à la droite du champ //**De**// avec la souris, on voit qu'on peut ajouter ce contact au carnet d'adresse. On clique donc cette **icône**.
 +|{{ Images_Cahier-101-06-212.png?700 }}|
 +</WRAP>
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +**Carnet d'adresses -> Adresses personnelles ->** on clique **Michelandre**.
 +
 +C'est bien l'alias de messagerie qui est associé à l'utilisateur //michelandre//.
 +
 +{{Images_Cahier-101-03-004.png?25}} On clique l'alias //michelandre@micronator-dev.net// pour lui envoyer un nouveau courriel et vérifier si c'est bien l'alias de messagerie qui sera utilisé.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-213.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +C'est bien l'alias de messagerie qui est utilisé pour le destinataire.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-101-06-214.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +===== Propriétaire, groupe et droits =====
 +
 +Pour plus de sécurité, il est préférable d'ajuster le propriétaire, le groupe et les droits de tous les répertoires et fichiers d'une installation WordPress.
 +
 +==== Site principal ==== 
 +
 +<file>
 +[root@tchana ~]# cd /var/www/html
 +
 +[root@tchana html]#
 +</file>
 +
 +=== Ajustement du propriétaire et du groupe ===
 +
 +<file>
 +[root@tchana html]# chown -R apache:apache *  ; chown -R apache:apache .*
 +
 +[root@tchana html]#
 +</file>
 +
 +=== Ajustement des droits ===
 +
 +On renforce la sécurité de l’accès aux fichiers //( <wrap em>f</wrap> )// en supprimant les droits à "other".
 +
 +<file>
 +[root@tchana html]# find . -type f -exec chmod 2640 {} \;
 +
 +[root@tchana html]#
 +</file>
 +
 +On répète l'opération pour les répertoires //( <wrap em>d</wrap> )//.
 +
 +<file>
 +[root@tchana html]# find . -type d -exec chmod 2750 {} \;
 +
 +[root@tchana html]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana html]# ls -als
 +
 +total 212
 + 4 drwxr-s---.  8 apache apache  4096 Apr 20 20:06 .
 + 0 drwxr-xr-x.  4 apache apache   109 Apr 20 15:06 ..
 + 4 -rw-r-S---   1 apache apache   892 Apr 20 11:58 .htaccess
 + 4 -rw-r-S---   1 apache apache   420 Apr 20 15:08 index.php
 +20 -rw-r-S---   1 apache apache 19935 Apr 20 15:08 license.txt
 +12 -rw-r-S---   1 apache apache  9101 Apr 20 15:08 readme.html
 + 0 drwxr-s---   3 apache apache    20 Apr 20 20:06 Ut
 +...
 +[root@tchana html]#
 +</file>
 +
 +==== Hôte virtuel devnet ==== 
 +
 +<file>
 +[root@tchana html]# cd /var/lib/nethserver/vhost/devnet/
 +
 +[root@tchana devnet]#
 +</file>
 +
 +=== Ajustement du propriétaire et du groupe ===
 +
 +<file>
 +[root@tchana devnet]# chown -R apache:apache *  ; chown -R apache:apache .*
 +
 +[root@tchana devnet]#
 +</file>
 +
 +=== Ajustement des droits ===
 +
 +On renforce la sécurité de l’accès aux fichiers ( f ) en supprimant les droits à "other" et en installant le "sticky bit".
 +
 +<file>
 +[root@tchana devnet]# find . -type f -exec chmod 2640 {} \;
 +
 +[root@tchana devnet]#
 +</file>
 +
 +On répète l'opération pour les répertoires ( d ).
 +
 +<file>
 +[root@tchana devnet]# find . -type d -exec chmod 2750 {} \;
 +
 +[root@tchana devnet]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana devnet]# ls -als
 +
 +total 212
 + 4 drwxr-s---  5 apache apache  4096 Jun 23 09:43 .
 + 0 drwxr-xr-x  3 apache apache    96 Apr 20 20:37 ..
 + 4 -rw-r--r--  1 root   apache   892 Apr 20 11:58 .htaccess
 + 4 -rw-r-S---  1 apache apache   420 Apr 20 20:51 index.php
 +20 -rw-r-S---  1 apache apache 19935 Apr 20 20:51 license.txt
 +12 -rw-r-S---  1 apache apache  9101 Apr 20 20:51 readme.html
 + 8 -rw-r-S---  1 apache apache  6919 Apr 20 20:51 wp-activate.php
 + 4 drwxr-s---  9 apache apache  4096 Apr 20 20:51 wp-admin
 +...
 +[root@tchana devnet]#
 +</file>
 +
 +<WRAP centeralign>**Nos sites WordPress fonctionnent parfaitement et sont très sécuritaires.**</WRAP>
 +
 +===== Serveur de production =====
 +
 +Maintenant que nous maîtrisons WordPress et les hôtes virtuels, on peut refaire les mêmes procédures sur le serveur physique de Production.\\ 
 +{{Images_Cahier-101-03-005.png?25}} Nous pourrons aussi installer //AWStats// sur le serveur physique de Production en se référant à la section //AWStats// du  [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]: //Création d'un Serveur NethServer virtuel//.
 +\\ 
 +\\ 
 +{{NS-101_002_Banniere_Victoire.png?50}}  Victoire totale, hissons la bannière de la victoire.
 +\\ 
 +
 +----
 +
 +===== Crédits =====
 +
 +© 2015-2016-2017-2018-2019  RF-232\\ 
 +Auteur: Michel-André CLP.\\ 
 +Remerciement: Tous les contributeurs GNU/GPL.\\ 
 +Intégré par: Michel-André Robillard CLP.\\ 
 +Contact: michelandre at micronator.org
 +
 +Répertoire de ce document: <nowiki>E:\000_DocPourRF232_general\RF-232_NethServer\RF-232_Cours_NethServer-101_Cahier-06_NethServer-WordPress_2019-08-06_10h19.odt</nowiki>.
 +
 +===== Historique des modifications =====
 +
 +^Version^Date^Commentaire^Auteur|
 +|0.0.2|2016-01-07|Ajouté bit GID, élaboration de la mise à jour et nouvelle mise en page.|Michel-André|
 +|0.0.3|2016-01-08|Chapitre pour l'éditeur vi.|Michel-André|
 +|0.0.4|2016-01-09|- Dans Sécurité, ajustement pour "fichiers, répertoires et sous répertoires, cachés (.*) ou pas (*)".\\ - Manipulations supplémentaires si le serveur est un PDC.|Michel-André|
 +|0.0.5|2016-03-23|Correction de index.htm pour index.html dans le répertoire ...Primary/html.|Michel-André|
 +|0.0.6|2016-03-26|Mise à jour.|Michel-André|
 +|0.0.7|2016-03-27|- Changement de l'accès FTP à tout l'Internet pour les mises à jour et l'installation d'extensions.\\ - Ajout des instructions pour le fichier temporaire de téléchargement, le fichier php.ini et pour innodb de l'installation d'un Server SME-9.1.\\ - Ajout pour la modification du préfixe de la table MySQL.\\ - Ajout pour les permaliens.|Michel-André|
 +|0.0.8|2016-04-04|Droit d'écriture du fichier wp-config-sample.php pour la mise à jour de WordPress. Corrections orthographiques.|Michel-André|
 +|0.0.9|2016-04-21|Droit d'écriture à certains fichiers pour la mise à jour de WordPress.|Michel-André|
 +|0.1.0|2016-05-20|- Correction des paramètres de l'accès FTP dans Server Manager.\\ - Déplacement du fichier readme.html.\\ - Onglet de discussions.\\ - Ajustement des droits avant/après l'installation d'extensions.\\ - Ajouts au fichier .htaccess.\\ - Scripts pour droits dans les i-bays et pour la mise à jour de WordPress.|Michel-André|
 +|0.2.0|2016-08-18|- Ajustement de scripts pour WordPress version-4.6\\ - Ajustement pour XCloner.|Michel-André|
 +|0.2.1|2016-08-20|- Inverser l'ordre des lignes:\\ cd /home/e-smith/files/ibays/$1/html/  2>&1\\ /bin/cp -rf ../readme.html \\ dans le fichier des droits droits_debut_MAJ-WP.sh.\\ - Enlever le deuxième "/bin/mv -f ../.htaccess . 2>&1" dans autre i-bay.\\ - Ajustement divers pour les modifications des scripts et de .htaccess.|Michel-André|
 +|1.0.0|2016-12-13|- Mise à jour pour WordPress 4.6.1 vers 4.7.\\ - Mise à jour pour les paramètres de php.ini avec des gabarits personnalisés.\\ - Ajout de la page man de l'utilitaire sed.\\ - Ajout du chapitre des logiciels recommandés.\\ - Ajout du paragraphe VirtualBox.\\ - Modification pour l'installation de XCloner.\\ - Ajout de la directive pour TAR.php dans .htaccess.\\ - Réorganisation des chapitres.|Michel-André|
 +|2.0.0|2017-02-22|- Mise à jour pour WordPress 4.6.1 vers 4.7.3.\\ - Mise à jour pour cours Micronator-101.|Michel-André|
 +|2.0.1|2017-04-09|- Modifications majeures pour les ajustements des paramètres PHP.|Michel-André|
 +|2.0.2|2017-04-10|- Corrections orthographiques.|Michel-André|
 +|2.1.0|2017-05-27|- Modifications pour l'installation et la mise à jour de la Collection PHP.|Michel-André|
 +|2.1.1|2017-07-12|Ajustement de la commande de SCL-PHP si aucune MAJ n'est disponible.|Michel-André|
 +|3.0.0|2018-10-06|- Utilisation des Collections PHP70 et MySQL57.\\ - Mise à jour pour la version WordPress-4.9.8.\\ -  Bogue dans le pied de page, il manquait les balises PHP sur la première ligne de l'insertion: <nowiki><?php</nowiki> <nowiki>//</nowiki>Displaying footer logo <nowiki>?></nowiki>|Michel-André|
 +|4.0.0|2019-01-23|Adaptation pour NethServer-7.6.1810.|Michel-André|
 +|4.0.1|2019-04-20|- Il faut activer le référentiel stephdl lors de l'installation de MariaDB 10.2.\\ - Ajout pour l'inclusion du fichier /etc/profile.d/activer-php72.sh dans la sauvegarde des données.\\ - Inclusion du répertoire /etc/httpd/conf/ dans la sauvegarde des don­nées.\\ - Ajout d'un fichier /etc/httpd/conf.d/z_well-known.conf pour con­fi­gu­rer l'accès au répertoire well-known par Let's Encrypt et inclusion de ce nouveau fichier de configuration dans la sauvegarde des données.\\ - Recommandation de ne pas activer FTP car non sécuritaire.\\ - Pour l'hôte virtuel, erreur dans: <nowiki>https://mail.www.micronator-dev.net/webmail</nowiki>,\\  il faut utiliser: <nowiki>https://www.mail.micronator-dev.net/webmail</nowiki>.\\ - Ajustement des captures d'écran de Webmail.\\ - Suppression du chapitre AWStats car déjà présent dans le Cahier-03.\\ - Changement du propriétaire/groupe pour apache:apache du répertoire /var/www/html.\\ - Changement du propriétaire/groupe pour apache:apache du répertoire /var/lib/nethserver/vhost/devnet/.|Michel-André|
 +|4.0.2 RC-001|2019-06-21|Corrections mineures.|Michel-André|
 +|4.1.0 RC-001|2019-07-20|Corrections mineures et ajustements pour DokuWiki.|Michel-André|
 +|4.1.1 RC-002|2019-08-19|Suppression du "sticky bit" pour les fichiers|Michel-André|
 +|12345678901| | |12345678901|
 +
 +
 +<html><hr style="width:50%; margin: 0 auto;"></html>
 +
 +===== AVIS DE NON-RESPONSABILITÉ =====
 +
 +Ce document est uniquement destiné à informer. Les informations, ainsi que les contenus et fonctionnalités de ce do­cument sont fournis sans engagement et peuvent être modifiés à tout moment. RF‑232 n'offre aucune garantie quant à l'actualité, la conformité, l'exhaustivité, la qualité et la durabilité des informations, contenus et fonctionnalités de ce document. L'accès et l'utilisation de ce document se font sous la seule responsabilité du lecteur ou de l'utilisateur.
 +
 +RF‑232 ne peut être tenu pour responsable de dommages de quelque nature que ce soit, y compris des dommages di­rects ou indirects, ainsi que des dommages consécutifs résultant de l'accès ou de l'utilisation de ce document ou de son contenu.
 +
 +Chaque internaute doit prendre toutes les mesures appropriées //(mettre à jour régulièrement son logiciel antivirus, ne pas ouvrir des documents suspects de source douteuse ou non connue)// de façon à protéger le contenu de son ordina­teur de la contamination d'éventuels virus circulant sur la Toile.
 +
 +Toute reproduction interdite
 +Vous reconnaissez et acceptez que tout le contenu de ce document, incluant mais sans s’y limiter, le texte et les images, sont protégés par le droit d’auteur, les marques de commerce, les marques de service, les brevets, les secrets industriels et les autres droits de propriété intellectuelle. Sauf autorisation expresse de RF-232, vous acceptez de ne pas vendre, délivrer une licence, louer, modifier, distribuer, copier, reproduire, transmettre, afficher publiquement, exécuter en public, publier, adapter, éditer ou créer d’oeuvres dérivées de ce document et de son contenu.
 +
 +==== Avertissement====
 +
 +Bien que nous utilisions ici un vocabulaire issu des techniques informatiques, nous ne prétendons nullement à la précision technique de tous nos propos dans ce domaine.
 +\\
 +\\