Outils pour utilisateurs

Outils du site


nethserver_101_cahier_06_nethserver_wordpress

Table des matières



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.

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.
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 Cahier-03: Création d'un Serveur NethServer virtuel.


But de ce cahier


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:

  1. Cahier-01: → Les bases de Linux.
  2. Cahier-02: → Installation et configuration des logiciels prérequis sur le poste de travail.
  3. Cahier-03: → Création d'un Serveur NethServer virtuel.
  4. Cahier-04: → Serveur NethServer LOCAL & Let's Encrypt.
  5. Cahier-05: → FAI, modem VDSL, domaine FQDN1) et Serveur NethServer physique.
  6. Cahier-06: → Installation de WordPress.
  7. Cahier-07: → Installation de l'extension de sécurité Wordfence.
  8. Cahier-08: → WooCommerce, comptes chez Stripe et PayPal pour les paiements en ligne.
  9. Cahier-09: → Sauvegarde/restauration ou migration d'un site avec l'extension Duplicator.
  10. Cahier-10: → Serveur mandataire inversé.
  11. 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.

  1. Cahier-201-01: → Dolibarr.
  2. Cahier-201-02: → Odoo-12.
  3. Cahier-201-03: → MediaWiki.
  4. Cahier-201-04: → DokuWiki.
  5. Cahier-201-05: → Moodle.
  6. Cahier-201-06: → Proxmox.
  7. 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.

Particularités de ce document

Notes au lecteur

* Les captures d'écrans ne sont que des références.
** 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.
*** 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

Manipulation, truc ou ruse pour se tirer d'embarras.
Une recommandation ou astuce.
Une note.
Une étape, note ou procédure à surveiller.
Paragraphe non complété ou non vérifié.
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.

[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 ~]#
Commande à exécuter si ce n'est déjà fait.
Commande indiquée à titre d'information seulement.


Prérequis

Installation d'un Serveur NethServer

Voir le 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 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.

[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 ~]#

Comme on le voit, notre version 5.4.16 de PHP est légèrement vieillotte.

Nous allons installer la Collection PHP qui fournit une version plus récente tout en gardant installée la version originale.

Collections de logiciels

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.
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.

[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 ~]#

Vérification.

[root@tchana ~]# rpm -qa | grep stephdl

nethserver-stephdl-1.0.7-1.ns7.sdl.noarch
[root@tchana ~]#


Référentiel remi

[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 ~]#

Vérification

[root@tchana ~]# rpm -qa | grep remi

remi-release-7.6-1.el7.remi.noarch
[root@tchana ~]#


Installation de la Collection PHP

[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 ~]#


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.

  1. À 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.

  1. À 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

Toutes les versions PHP de la Collection proviennent du référentiel remi-safe et sont installées dans le répertoire /opt/remi.

[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 ~]#

On vérifie le répertoire /opt.

[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 ~]#

On affiche le répertoire /opt/remi.

[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 ~]#


PHP72 par défaut après une connexion à la ligne de commande

Référence: 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.

Prendre tout le contenu de l'encadré pour la commande.

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

On rend le fichier exécutable.

[root@tchana ~]# chmod +x /etc/profile.d/activer-php72.sh

[root@tchana ~]#

On vérifie.

[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 ~]#


Vérification si PHP72 est le défaut

On ferme la connexion PuTTY et on en ouvre une nouvelle.

On vérifie l'installation de la Collection.

[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 ~]#

Collections installées.

[root@tchana ~]# scl -l

php56
php70
php71
php72
php73
[root@tchana ~]#

Quel est le PHP par défaut?

[root@tchana ~]# which php

/opt/remi/php72/root/usr/bin/php
[root@tchana ~]#

Quelle est sa version?

[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 ~]#


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.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /etc/profile.d/activer-php72.sh

/etc/profile.d/activer-php72.sh
[root@tchana ~]#

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:

[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 ~]#

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.

[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 ~]#

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.

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.

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.


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.


Ajustements des paramètres de la version PHP-7.2

Configuration → Paramètres PHP → onglet Php V7.2 SCL → SOUMETTRE.

Allow PHP access to remote files est un bris de sécurité.

Vérifications à la ligne de commande

MemoryLimit

[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i Memory_Limit

memory_limit                           = 250M
[root@tchana ~]#

PostMaxSize

[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i post_max_size

post_max_size                          = 100M
[root@tchana ~]#

UploadMaxFilesize

[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i upload_max_filesize

upload_max_filesize                    = 75M

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.
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/.

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)2) 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.

[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 ~]#

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.

Prérequis

L'installation de MariaDB 10.2 requière le référentiel stephdl que nous avons déjà installé. Voir le paragraphe Référentiel stephdl.

Installation de la Collection MariaDB 10.2

[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 ~]#

Vérification

[root@tchana ~]# scl -l

php56
php70
php71
php72
php73
rh-mariadb102
[root@tchana ~]#

La collection a été installée dans le répertoire /opt/rh.

[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 ~]#

On affiche les propriétés de la collection.

[root@tchana ~]# config show rh-mariadb102-mariadb

rh-mariadb102-mariadb=configuration
    LocalNetworkingOnly=no
    MaxAllowedPacket=16M
    TCPPort=3312
    access=private
    status=enabled
[root@tchana ~]#

Le port 3312 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é.

[root@tchana ~]# systemctl list-unit-files | grep mariadb

mariadb.service                               disabled
rh-mariadb102-mariadb.service                 enabled
rh-mariadb102-mariadb@.service                disabled
[root@tchana ~]#

On vérifie que le démon soit en exécution.

[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 ~]#

Journal de la Collection

Le journal pour cette collection est situé dans le fichier /var/log/rh-mariadb102/mariadb.log.

[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 ~]#

Usage

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.

mysql102
mysqladmin102
mysqlbinlog102
mysqlcheck102
mysql_config_editor102
mysqld_multi102
mysqldump102
mysqlimport102
mysql_plugin102
mysqlshow102
mysqlslap102

Si vous voulez lancer MariaDb 10.2 depuis votre terminal, utilisez la commande suivante.

mysql102

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:

[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 ~]#

S'il y avait une mise à jour, elle serait installée avec cette commande.

Serveurs FTP - non recommandé

WordPress utilise son propre logiciel FTP, il n'est donc pas nécessaire d'activer le service FTP sur le serveur.
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.

Configuration → FTP onglet Configurer → on clique Activé → SOUMETTRE pour activer le service FTP.

Statut → Services pour vérifier si FTP (vsftpd) est en exécution.

Installation du client FTP - non recommandé

On peut aussi installer le logiciel client du service FTP.

[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 ~]#


Hôte virtuel

Référence: 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é3)” 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

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.

Gestion → Hôtes virtuels → vis-à-vis default → Éditer.


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.

Mot de passe
Le mot de passe de l'utilisateur pour la connexion FTP.

SOUMETTRE.

Vérification.

[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>

On affiche le contenu du répertoire.

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>

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.

ftp> pwd

257 "/"
ftp>

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.

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>

On quitte la session FTP.

ftp> exit

221 Goodbye.
[root@tchana ~]#


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.

[root@tchana ~]# chown -R apache:apache /var/www/html

[root@tchana ~]#

On vérifie

[root@tchana ~]# ls -alsd /var/www/html/

4 drwxr-xr-x. 8 apache apache 4096 20 avril 20:06 /var/www/html/
[root@tchana ~]#


Tous les prérequis pour l'installation de WordPress sont remplis.


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.

[root@tchana html]# pwd

/var/www/html
[root@tchana html]#

On affiche le contenu du répertoire.

[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]#


Pour les versions de WordPress, voir: https://fr.wordpress.org/releases/.

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.


On claque (clic droit) sur le tar.gz de la version 4.9.9 et on copie l'adresse du lien.

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.


À la ligne de commande, on entre wget suivi d'un [Espace] et on y colle le lien.

[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/s   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]#

On vérifie le téléchargement.

[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]#

On répète l'opération pour télécharger la somme de contrôle MD5.

[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/s   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]#

On affiche la somme de contrôle téléchargée.

root@tchana html]# cat wordpress-4.9.9-fr_FR.tar.gz.md5

14411f5949c885926747c351e9316eab
[root@tchana html]#

On calcule la somme de contrôle du fichier wordpress-4.9.9-fr_FR.tar.gz.

[root@tchana html]# md5sum wordpress-4.9.9-fr_FR.tar.gz

14411f5949c885926747c351e9316eab  wordpress-4.9.9-fr_FR.tar.gz
[root@tchana html]#

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.

[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]#

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.

[root@tchana html]# mv wordpress-4.9.9* ../

[root@tchana html]#

Vérification.

[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]#

On affiche le contenu du répertoire.

[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]#

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.

[root@tchana html]# mv /var/www/html/wordpress/*  /var/www/html

[root@tchana html]#

On ajuste Récursivement le propriétaire et le groupe pour les fichiers et répertoires de notre site.

[root@tchana html]# chown -R apache:apache *

[root@tchana html]#


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.

[root@tchana html]# chmod -R o-rwx *

[root@tchana html]#

Vérification.

[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     6  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]#

On supprime le répertoire wordpress qui est maintenant vide.

[root@tchana html]# rmdir wordpress/

[root@tchana html]#

Vérification.

[root@tchana html]# ls -lsd wordpress

ls: impossible d'accéder à wordpress: Aucun fichier ou dossier de ce type
[root@tchana html]#


Base de données pour WordPress

On crée la base de données (dans notre exemple, on la nomme WPBD).

[root@tchana html]# mysqladmin102 CREATE WPBD

[root@tchana html]#

On entre dans la console mysql102.

[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)]>

On vérifie que la base de données a bien été créée.

MariaDB [(none)]> show databases;

+--------------------+
| Database           |
+--------------------+
| WPBD               |
| information_schema |
| mysql              |
| performance_schema |
| phpmyadmin         |
+--------------------+
5 rows in set (0.02 sec)

MariaDB [(none)]>

Grant

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.

MariaDB [(none)]> grant all on WPBD.* to usager_WPBD@localhost identified by 'mdp_WPBD';

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>

Noter le nom de la base de données: “WPBD”, le nom de l'usager: “usager_WPBD” et son mot de passe: “mdp_WPBD”; ils serviront plus tard dans le fichier de configuration de WordPress.

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.

MariaDB [(none)]> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>

On vérifie les droits de l'usager .

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)]>

On quitte la console de MariaDB 10.2.

MariaDB [(none)]> exit;

Bye
[root@tchana html]#


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.

[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]#

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.

[root@tchana html]# cp /var/www/html/wp-config-sample.php  /var/www/html/wp-config.php

[root@tchana html]#

On vérifie.

[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]#

On ajuste le propriétaire et le groupe pour le fichier wp-config.php.

[root@tchana html]# chown apache:apache /var/www/html/wp-config.php

[root@tchana html]#

On vérifie.

[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]#


É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 Grant (octroi de droits et permissions) et surtout le port utilisé par MariaDB 10.2.

Il faut changer:
votre_nom_de_bdd → WPBD
votre_utilisateur_de_bdd → usager_WPBD
votre_mdp_de_bdd → mdp_WPBD
'localhost''127.0.0.1:3312'

Contenu actuel du fichier de configuration.

...
/** 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');

...

On procède aux modifications avec l'éditeur vi.

 vi wp-config.php

Ce que le contenu du fichier doit être dans notre cas.

...
/** 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');
...

On vérifie.

[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]#


Chemin de WordPress

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/. Cette URL n'est plus disponible.

if(is_admin()){
    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));    
    define( 'FS_CHMOD_DIR', 0751 );
}

On ajoute les lignes ci-dessous au fichier /var/www/html/wp-config.php.
Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[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]#


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.

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:

  1. Ajouter du contenu sur le site (exemple: liens vers des sites illégaux).
  2. Ajouter des commentaires pourriels.
  3. Faire planter le site ou détruire son contenu.
  4. 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 "monsite_" 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_”.

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.

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_'.

[root@tchana html]# sed -i 's/'wp_'/'Toto0327_'/' /var/www/html/wp-config.php

[root@tchana html]#

On vérifie.

[root@tchana html]# cat /var/www/html/wp-config.php | grep table_prefix

$table_prefix  = 'Toto0327_';
[root@tchana html]


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.

[root@tchana html]# cp /etc/httpd/conf/httpd.conf  /root/httpd.conf_original

[root@tchana html]#

On vérifie.

[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]#

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 AllowOverride None par les 5 lignes dont la première débute par ##### AllowOverride None.

...
<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>
...

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/
Référence: 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.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[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]#

On affiche le contenu du fichier.

[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]#

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.

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.

[root@tchana html]# systemctl restart httpd

[root@tchana html]#

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.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /etc/httpd/conf/

/etc/httpd/conf/
[root@tchana ~]#

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.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep z_well-known.conf

/etc/httpd/conf.d/z_well-known.conf
[root@tchana ~]#

Ci-dessus, il n'y a pas de ligne vide avant /etc/httpd/conf.d/z_well-known.conf. 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.
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.
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.

Prendre tout le contenu de l'encadré pour la commande.

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

On ajuste les droits et permissions.

[root@tchana html]# chmod 444 /var/www/html/.htaccess

[root@tchana html]#

On ajuste le propriétaire et le groupe.

[root@tchana html]# chown apache:apache /var/www/html/.htaccess

[root@tchana html]#

On vérifie.

[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]#

On vérifie le contenu.

[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]#

Il n'y a pas de ligne vide avant la ligne # ******... Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.

Protection du fichier wp-config

Dans la commande ci-dessous, les deux caractères > > après cat, signifie qu'on ajoute au fichier .htaccess.
Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie le contenu.

[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]#

Protection du fichier .htaccess lui-même

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie le contenu.

[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]#

Directives Apache

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie le contenu.

[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]#


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/.

Le script install.php est lancé automatiquement et la page ci-contre s'affiche.

On entre les informations demandées.

Pour des raisons de sécurité, il ne faut jamais utiliser le nom d'usager “admin” comme identifiant de l'administrateur du site.

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.


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é.



De retour à notre page d'installation, on clique Se connecter.

On entre notre Identifiant → Mot de passe → Se connecter.


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.


Page d'accueil

On se rend à notre page d'accueil http://www.micronator-dev.org/.

Notre site WordPress s'affiche.

Si le site ne s'affiche pas, simplement vidanger l'historique du navigateur Web.

Sécurité primaire

Fichier readme.html

On se rend à: 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.

Version récente avec sécurité améliorée.

Ancienne version.

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/.

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/.
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:

  1. Un éditeur plus intelligent dont la taille s’adapte à votre travail
  2. Des outils de mise en forme toujours accessibles
  3. Une intégration exceptionnelle des vidéos YouTube et des Tweets
  4. 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 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/.

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:

  1. 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.
  2. 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.

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 Cahier-09: Duplicator & migration du Cours NethServer-101.

  1. Installez toutes les mises à jour sur le WordPress virtuel et vérifiez tout au complet.
  2. 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 Cahier-09: Duplicator & migration du Cours NethServer-101.

Mise à jour de WordPress

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.


Peut prendre un certain temps, être patient!

Mettre à jour la base de données de WordPress.


Continuer.


Tout s'est bien passé, une page de bienvenue à la nouvelle version s'affiche.


Mise à jour des extensions

- Tableau de bord → Mise à jour → Extensions.
- Tout sélectionner → Mettre à jour les extensions.

- On vérifie toujours les résultats des mises jour.
- Retourner aux mises à jour de WordPress.


Mise à jour des thèmes

Tableau de bord → Mise à jour → Thèmes → tout sélectionner → Mettre à jour les thèmes.


- Les téléchargements et les décompressions peu­vent prendre un certain temps, il faut être patient!
- Retourner aux mises à jour de WordPress.



Tout est à date.

WordPress est à date.

Principaux réglages recommandés

Réglages généraux

- Tableau de bord → Réglages → Général.
- On peut changer le Slogan de notre site et ajuster l'Adresse de messagerie qui recevra les messages de WordPress.




Inscription, Rôle, Langue et Fuseau horaire.




Date, Heure et Début de la semaine → Enregistrer les modifications.


On s'assure du succès de l'enregistrement des réglages.


Écriture

Service de mise à jour

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.


Discussions

Si on ne publie pas d'articles.


Discussion.


On décoche tous les Réglages par défaut des articles.

Enregistrer les modifications.


Choix de la structure des permaliens

Référence: https://codex.wordpress.org/fr:Utilisation_des_permaliens.

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.

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.

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 Fichier .htaccess.

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.

Pour demeurer très sécuritaire, au paragraphe 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.

En haut de la page, WordPress nous recommande de mettre à jour le fichier .htaccess maintenant.

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.

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 Permaliens.

Vérification du fichier .htaccess

http://www.micronator-dev.org/wp-config.php.

La directive pour protéger le fichier wp-config fonctionne correctement.

http://www.micronator-dev.org/.htaccess.

La directive pour protéger le fichier .htaccess fonctionne correctement.

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.

On lance une recherche de liens symboliques.

[root@tchana html]# ls -lR /var/www/html | grep ^l

[root@tchana html]#

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.

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

Utilisé par des millions de sites, Akismet est probablement la meilleure manière de protéger votre site des commentaires et pisteurs indésirables.

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.

Activation

Tableau de bord → Extensions installées → Akismet → Activer.



Configurer votre compte Akismet.



Obtenir votre clé d'API.




Get started with Personal.

Lisez les conditions d'utilisation et si acceptées, entrez les informations demandées → Continuer.



Dans le courriel reçu, cliquer Activer le Compte.



Sign in to Akismet.


Add Personal Subscription.

Choisir un montant → Create Subscription.


Got It.

Cliquer l'icône pour afficher la clé API.

Sélectionner la clé et la copier.


- De retour au Tableau de bord de WordPress, coller la clé → Connectez-vous avec une clé API.

- Éliminer directement les pires indésirables…
- Ne pas afficher le message d'information…
- Enregistrer les modifications.

L'extension Akismet est activée et paramétrée.


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/.

- En bas à droite, on clique Connexion.

- On entre les informations demandées → Se connecter.

Extension Duplicator

Référence: https://fr-ca.wordpress.org/plugins/duplicator/.

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.

Duplicator vous permet de:

  1. Déplacer un site d’un domaine à un autre ou d’un hébergeur à un autre.
  2. 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.
  3. Sauvegarder manuellement un site.
  4. Dupliquer un site en production vers un site de pré-production et vice-versa.
  5. “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

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

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 la page de ressources Duplicator (en anglais seulement). Vous pouvez aussi nous contacter: https://www.micronator.org/affaires/nous-contacter/.

Installation

Tableau de bord → Extensions → Ajouter → Mot clé → Duplicator → Installer.



Activer.


L'extension Duplicator est installée et activée.


Répertoire de stockage

Il nous faut créer le répertoire de stockage pour les paquets que Duplicator va créer.

[root@tchana ~]# mkdir -p /var/www/html/wp-snapshots/tmp/

[root@tchana ~]#

Ajustement du propriétaire, du groupe et des droits.

[root@tchana ~]# chown -R apache:apache /var/www/html/wp-snapshots/ ; chmod -R 2770 /var/www/html/wp-snapshots/

[root@tchana ~]#

On vérifie.

[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 ~]#


Configuration

Un nouveau menu a été créé: Tableau de bord → Duplicator → Outils.


- WordPress est à la version 5.0.3.

- PHP est bien à la version 7.2.15.

- MySQL indique la version 10.2.8 de MariaDB 10.2.

- Le Chemin de mysqldump sera vérifié ci-dessous.

- Cliquer les titres pour les dérouler.
- Tous les composants et paramètres de notre site sont affichés.


On cherche le chemin de mysqldump102.

[root@tchana ~]# which mysqldump102

/usr/bin/mysqldump102
[root@tchana ~]#

Tableau de bord → Duplicator → Réglages → onglet Paquets → Custom Path.

On entre /usr/bin/mysqldump102.

→ Enregistrer les réglages du paquet.

Abonnement à l'infolettre

- Tableau de bord → Duplicator → Réglages → onglet À propos → Restez dans la boucle.
- Entrer votre adresse courriel cochez Sign me up!


Après avoir reçu le courriel d'abonnement, on con­firme notre adresse en y répondant.


Thème Storefront

Nous installons le thème Storefront qui est recommandé pour un site de commerce en ligne WooCommerce.


Tableau de Bord → Apparence → Thèmes → Ajouter → Recherche parmi les thèmes Ajouter → Storefront.


Avec la souris, on survole le thème pour faire apparaître les boutons → Installer.


- On s'assure du succès de l'opération.
- Activer.



On ferme ce message, car on installera WooCommerce dans le prochain Cahier.

- En haut de la page, à gauche.
- Aller sur le site.


Le thème a été installé et est utilisé pour afficher les pages de notre site.


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.

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.



On peut aussi googler les “reviews” de l'extension.


TinyMCE Advanced

Référence: https://fr.wordpress.org/plugins/tinymce-advanced/.

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.

Installation

Tableau de bord → Extensions → Ajouter → Mot-clé → TinyMCE Advanced → Installer.



Activer.



L'extension est installée et activée.

Configuration

Tableau de bord → Réglages → TinyMCE Advanced.

Cliquer et glisser les boutons désirés sur les barres de menu.

Cliquer, glisser et organiser les menus selon l'ordre désiré.

Cocher les options désirées.

Cocher les options désirées.

Pour l'ajout de CSS et d'un Thème enfant, voir le chapitre CSS et Thème enfant.

On peut importer/exporter les réglages.

Sauvegarder les changements.

- Tableau de bord → Pages → Ajouter.
- Cliquer l'icône Ouvrir/fermer la barre d'outils.


- Les nouveaux boutons apparaissent.
- Fermer la page sans enregistrer en allant à un autre menu du tableau de bord.


Exclude Pages From Menu

Référence: https://fr.wordpress.org/plugins/exclude-pages-from-menu/.

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.

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.

Installation

Tableau de bord → Extensions → Ajouter → Mot-clé → Exclude Pages → Installer.



Activer.



L'extension est installée et activée.

Supprimer le message en cliquant le X à droite.


Usage

“Page d'exemple” est visible sur le menu du site.

- Tableau de bord → Pages → Toutes les pages.
- On survole le titre de la page avec la souris.
- Modifier.

À droite, vers le bas de la page, on coche Exclude this page from menu.


En haut à droite, Mettre à jour.

Le titre de la page d'exemple n'apparaît plus sur le menu du site.


Référence:https://fr.wordpress.org/plugins/broken-link-checker/.

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.

Installation

Tableau de bord → Extensions → Ajouter → Mot-clé → Broken Link Checker → Installer.



Activer.



L'extension est installée et activée.

Supprimer le message en cliquant l'icône.

Configuration

Tableau de bord → Extensions → Extensions installées → Broken Link Checker → Réglages.

- Onglet Général → Ajuster selon ses choix.
- Enregistrer les modifications.

- Onglet Rechercher des liens dans.
- Ajuster selon ses choix.
- Enregistrer les modifications.

- Onglet Quels liens vérifier.
- Ajuster selon ses choix.
- Enregistrer les modifications.

- Onglet Protocoles & APIs.
- Ajuster selon ses choix.
- Enregistrer les modifications.

- Onglet Options avancées.
- Ajuster selon ses choix.

- Ajuster selon ses choix.
- Enregistrer les modifications.


Contact Form 7

Référence: https://fr-ca.wordpress.org/plugins/contact-form-7/.

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.

Installation

Tableau de bord → Extensions → Ajouter → Mot-clé → Contact Form 7 → Installer.



Activer.



L'extension est installée et activée

Filtrage des pollupostage avec Akismet

Référence: 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.

Tableau de bord → Contact → Formulaire de contact → cliquer Akismet.


Directives d'installation.

Résultats possibles après avoir rempli et envoyé le formulaire de contact.

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 Activation d'Akismet.

Ensuite, ajoutez les options suivantes liées à Akismet dans les champs appropriés de votre formulaire.

- akismet:author
Ajoutez cette option au champ qui accepte le nom de l'expéditeur.
Exemple: [texte * your-name akismet:author].

- akismet:author_email
Ajoutez cette option au champ qui accepte l'adresse courriel de l'expéditeur.
Exemple: [email * your-email akismet:author_email].

- akismet:author_url
Ajoutez cette option au champ qui accepte l'URL de l'expéditeur.
Exemple: [text your-url akismet:author_url].

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.

On supprime le message de Contact Form 7 en cliquant Ignorer.

Formulaire de contact

- Tableau de bord → Contact → Formulaire de contact.

- Avec la souris, on survole le titre du Formulaire de contact 1 pour faire apparaître les menus.

- Modifier.


Onglet Formulaire.

- On change le nom du formulaire pour Nous Contacter.

- On ajoute
akismet:author à la suite de your-name.

- On ajoute akismet:author_email à la suite de your-email.

- Enregistrer.


Ci-contre, les champs marqué d'un astérisque devront être obligatoirement rempli par l'internaute.


Onglet E-mail.

- Dans le champ De, on peut changer l'adresse courriel.

- On ajoute
akismet:author_email à la suite de your-email.

- On change l'anglicisme Cet e-mail par Ce courriel.

- Enregistrer.


On clique à l'intérieur du cadre, tout le texte est automatiquement sélectionné et on copie cette sélection.


Tableau de bord → Contact → Formulaire de contact pour afficher les paramètres du formulaire.


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.

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 Choix de la structure des permaliens, le suffixe est bien le Titre de la publication et non pas son numéro.

Au-dessus du titre de la page, on clique Voir la page pour afficher celle-ci.

Les champs marqués d'un astérisque au paragraphe 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.


Notre formulaire s'affiche.

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.



MaxButtons

Référence: https://fr.wordpress.org/plugins/maxbuttons/.

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.

Installation

Tableau de bord → Extensions → Ajouter → Mot-clé → MaxButtons → Installer.



Activer.



L'extension est installée et activée.


Conditions d'utilisation

Introduction

Il est fortement recommandé d'avoir une page énonçant les conditions d'utilisation de notre site.

Création de la page

Tableau de bord → Pages → Ajouter → on écrit notre page → Publier.

On vérifie notre page en cliquant Prévisualiser les modifications.


On peut aussi cliquer l'onglet Conditions d'utilisation sur le menu principal du site.

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.
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%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:

  1. Si vous modifiez un thème existant et qu'il est mis à jour, vos modifications seront perdues.
  2. Vous assure que vos modifications seront préservées.
  3. Accélère le temps de développement.
  4. 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%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.

[root@tchana ~]# cd /var/www/html/wp-content/themes/

[root@tchana themes]#

On vérifie.

[root@tchana themes]# pwd

/var/www/html/wp-content/themes
[root@tchana themes]#

On crée le répertoire pour le Thème enfant.

[root@tchana themes]# mkdir storefront-enfant

[root@tchana themes]#

On vérifie.

[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]#

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:

/*
 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
*/

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.

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.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[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]#

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.

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.

<?php

    function theme_enqueue_styles() {
        wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    }

    add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
?>

Vérification du nombre de fichiers de styles dans le Thème parent.

[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]#

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.

<?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' );

?>

On crée le fichier functions.php.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[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]#

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.
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 1200×900. Elle ne sera affichée que sous 387×290, mais l'image de plus de deux dimensions permet une visualisation haute résolution sur les affichages HiDPI.

Optionnellement, .jpg, .jpeg et .gif sont également des extensions et des formats de fichier valides (bien que non recommandés).

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.

On est maintenant prêt pour modifier certaines directives CSS de notre site.


Pied de page

Le fichier qui affiche le pied de page est footer.php.

Pied de page original.

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.

Pied de page après que nous aurons effectué les modifications.


On s'assure que nous sommes toujours dans le répertoire des thèmes.

[root@tchana themes]# pwd

/var/www/html/wp-content/themes
[root@tchana themes]#

On crée le répertoire [répertoire-racine-du-site-WordPress]/Ut/Images/Logo pour y stocker certaines images relatives à notre société.

[root@tchana themes]# mkdir -p /var/www/html/Ut/Images/Logo/

[root@tchana themes]#

On vérifie.

[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]#

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.

[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]#


Fichier footer.php

Copie du fichier footer.php original du Thème parent.

[root@tchana themes]# cp storefront/footer.php  storefront-enfant/

[root@tchana themes]#

On vérifie.

[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]#

On affiche le fichier footer.php.

[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]#

Le lignes originales que nous allons remplacer sont:

...
        <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 -->
...

On édite le fichier storefront-enfant/footer.php et nous remplaçons le texte ci-dessus par celui ci-dessous.

...
        <?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 -->
...

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

[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]#


Voilà, notre nouveau pied de page s'affiche tel que voulu.


Titre de page

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.

On s'assure que nous sommes toujours dans le répertoire des thèmes.

[root@tchana themes]# pwd

/var/www/html/wp-content/themes
[root@tchana themes]#

On ajoute la nouvelle directive ci-dessous au fichier style.css du Thème enfant.

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie les 7 dernières lignes du fichier.

[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]#

On affiche la page des Conditions d'Utilisation.


Logo et slogan

On veut mettre notre logo et une image à la place du logo et du slogan standard.


Fichier 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;
}

/* 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;
}

Prendre tout le contenu de l'encadré pour la commande.

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

On vérifie.

[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]#

Fichier functions.php

On ajoute le contenu de l'encadré ci-dessous dans le fichier functions.php juste avant la dernière ligne, celle qui contient la dernière fermeture 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
}

On vérifie.

[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]#

Répertoire des images d'en-tête

On crée le répertoire Ut/Images/EN-TETE.

[root@tchana themes]# mkdir -p /var/www/html/Ut/Images/EN-TETE/

[root@tchana themes]#

On vérifie.

[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]#

On copie les images nécessaires dans le répertoire: /var/www/html/Ut/Images/EN-TETE/.

On vérifie.

[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]#

On se rend sur notre site et notre nouvel en-tête s'affiche tel que voulu.


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.

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.

[root@tchana themes]# chown -R apache:apache /var/www/html/*

[root@tchana themes]#

On enlève tous les droits à l'utilisateur “other”.

[root@tchana themes]# chmod -R o-rwx /var/www/html/*

[root@tchana themes]#

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.

[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 ~]#

Les mises à jour ont été installées.
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.
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éé.

  1. 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.
  2. 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.

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 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.

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.
* 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.

Configuration → DNS onglet Hôtes → CRÉER NOUVEAU.


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…

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.
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.


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.

→ 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 DKIM.

SOUMETTRE.

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 Cahier-05: VDSL, FQDN, Internet et NethServer.

Le 2e domaine est maintenant un serveur de messagerie.


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.

Gestion → Hôtes virtuels → CRÉER NOUVEAU.

Onglet Général

L'action CRÉER NOUVEAU est similaire à Éditer. La seule différence est le paramètre Actions supplémentaires au bas du formulaire.

Nom
- Un nom simple qui identifie la configuration de l'hôte virtuel.
- 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//. Avec certains services de DNS dynamique, on ne peut employer le CNAME www. </WRAP>

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
Il faut cocher la case pour faire apparaître les champs: Nom d'utilisateur et Mot de Passe.

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.

Nécessite une connexion SSL cryptée (sic chiffrée)
Si coché, le site Web est accessible uniquement via le protocole https.
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.
Si notre serveur de test n'a pas de certificat d'une CA reconnue, les connexions ne seront jamais chiffrées.

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).

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 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

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.
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

Activer l'accès web
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.

Onglet Paramètres php

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
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
Lorsque la directive allow_url_fopen est activée, vous pouvez écrire des scripts PHP qui ouvrent des fichiers distants comme s'il s'agissait de fichiers locaux.

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_limit affecte également le téléchargement de fichier. D'une manière générale, memory_limit devrait être plus grand que post_max_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 à upload_max_filesize. Si la limite de mémoire est activée par votre script de configuration, memory_limit affecte également le téléchargement de fichiers. D'une manière générale, memory_limit devrait être plus grand que post_max_size.

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.

memory_limit (250M) > post_max_size (100M) > upload_max_filesize (75M).

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.

SOUMETTRE pour enregistrer toutes les modifications. (Peut prendre un certain temps.)

Notre hôte virtuel a été créé avec ses noms FQDN d'hôte virtuel.

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,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, www.micronator-dev.net//

Vérification

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.

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 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). 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 ====

- Configuration → Courrier (Email) (après mai 2019, Messagerie électronique) onglet Domaines.

- Les hôtes originaux de messagerie n'ont pas été affectés.

==== 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/devnet 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: http[s]//[www.]micronator-dev.net. 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.

- Sans préfixe www.
- micronator-dev.net/.

- Avec préfixe www.
- www.micronator-dev.net///. || </WRAP> </WRAP>

- Sans préfixe www, mais sécurisé.
- https://micronator-dev.net/.

- Avec préfixe www, mais sécurisé.
- https://www.micronator-dev.net/.

==== 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. 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>

Après l'installation, vous devriez recevoir un courriel pour confirmer la création du 2e WordPress.

==== Connexion ==== On se rend à https://www.micronator-dev.net → Connexion → on se logue avec le justificatif d'identité entré lors de l'installation.
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.


On peut accéder au Tableau de bord.

Victoire, notre deuxième site WordPress est accessible.

Notre deuxième domaine WordPress est fonctionnel.


===== Webmail ===== ==== Courriel de test ==== 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. ==== Suppression de l'affichage du nom du domaine ====

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.

Il est donc préférable de ne pas afficher ce champ lors d'une connexion à Webmail.

Nous avons supprimé l'affichage de ce champ dans le Cahier-03: Installations d'un serveur NethServer virtuel à la section Nom du serveur dans l'écran de connexion à Webmail. ==== Connexion ====

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:

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.

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é https://www.mail

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.

Même si admin s'est connecté à Webmail en utilisant https://www.mail.micronator-dev.net/webmail, en haut à droite, son nom d'usager est admin@micronator-dev.org comme s'il s'était connecté au site principal.

Nous règlerons cet affichage pour l'utilisateur michelandre; voir Alias de messagerie.

Rédiger pour écrire un nouveau message.

On rédige un message pour l'utilisateur michelandre → Envoyer.

Dans le répertoire Envoyés, le message est présent.

Déconnexion.

L'utilisateur michelandre se connecte afin qu'il puisse accéder à sa boîte aux lettres.

Le courriel d'admin a bien été reçu par michelandre.

On double-clique l'Objet du courriel pour l'afficher.

Le message reçu de l'utilisateur admin s'affiche.

On clique l'icône Plus d'actions… pour afficher les menus masqués → Afficher la source.

==== 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> Il faut avoir coché Signer les messages sortant avec DomainKeys Identified Mail (DKIM) pour avoir la signature DKIM, car c'est tchana.micronator-dev.org qui a envoyé le message même si nous étions connecté à mail de micronator-dev.net. 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 ====

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.

Gestion → Adresse mail → onglet Alias de messagerie → CRÉER NOUVEAU.

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.

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.

Le nouvel alias a été créé pour l'utilisateur michelandre.

=== Suppression === 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.

Création d'une nouvelle identité

Si l'utilisateur michelandre n'est pas déjà connecté à https://www.mail.micronator-dev.net/webmail, il se connecte.

Paramètres → Identités → + → on entre les informations demandées; surtout Courriel et Répondre à.

On coche Définir par défaut.

Enregistrer.

Création d'un nouveau courriel

Au retour à la Boîte de réception, on voit que le nom affiché est maintenant michelandre@micronator-dev.net.

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.

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 à.


Si on survole le champ De avec la souris, l'alias de messagerie est affichée.

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.

Carnet d'adresses → Adresses personnelles → on clique Michelandre.

C'est bien l'alias de messagerie qui est associé à l'utilisateur michelandre.

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é.

C'est bien l'alias de messagerie qui est utilisé pour le destinataire.


===== 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
( f ) 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 ( d ). <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>

Nos sites WordPress fonctionnent parfaitement et sont très sécuritaires.

===== 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.
Nous pourrons aussi installer
AWStats sur le serveur physique de Production en se référant à la section AWStats du Cahier-03: Création d'un Serveur NethServer virtuel.

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: E:\000_DocPourRF232_general\RF-232_NethServer\RF-232_Cours_NethServer-101_Cahier-06_NethServer-WordPress_2019-08-06_10h19.odt. ===== 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: <?php //Displaying footer logo ?>|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: https://mail.www.micronator-dev.net/webmail,
il faut utiliser: https://www.mail.micronator-dev.net/webmail.
- 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.

1)
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.

2)
Fin de vie(Eol - End of life): Sedit en informatique d'un logiciel ou d'un produit en fin de vie que l'éditeur ou le constructeur ne fait plus évoluer.
Référence: https://fr.wikipedia.org/wiki/Fin_de_vie_(produit).
3)
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.
nethserver_101_cahier_06_nethserver_wordpress.txt · Dernière modification : 2025-01-12 19:30 de 127.0.0.1