SME-101.05A WordPress

From SME Server
Revision as of 19:17, 14 October 2018 by Michelandre (talk | contribs) (RC-001)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


Description générale

Le Cahier-5A du cours Micronator-101 décrit l'installation de WordPress-4.6.1-fr_FR.zip et sa mise à jour vers la dernière version disponible, WordPress-4.9.8 du 2 octobre 2018.

   Ce cahier peut être utilisé pour l'installation de toutes les versions de WordPress-4.x.

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 genre de 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 SME utilisé pour ce cahier

Pour ce cahier, nous utilisons le Serveur SME virtuel de l'Étudiant-1.






But final du cours SME-101

Après avoir suivi le cours SME-101, l'Étudiant possédera un site de Commerce en ligne fiable et hautement sécuritaire. De plus, il pourra utiliser un clone de son site, sur un Serveur SME virtuel sur sa station de travail, pour tester de nouvelles extensions et applications sans compromettre la sécurité ou l'intégrité de son site en ligne.



Cours SME-101

Le cours SME-101, se voulant une base solide pour la création d'un site de Commerce en ligne, comprend plusieurs cahiers:

Tous les logiciels nécessaires sont du domaine public ou LIBRE sous licence GPL; ils ne coûtent pas un sous. Le seul achat nécessaire est l'obtention d'un nom de domaine FQDN au prix initial de $15 CAD et son renouvellement annuel d'environ $30 CAD.

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. Se référer aux différents tableaux lorsque ceux-ci sont présents.

Conventions

  • Toutes les commandes à entrer à la console du Serveur SME commencent habituellement avec l'invite # pour l'usager root ou $ pour un usager sans privilège particulier.
  • L'invite mysql> de la console MySQL est toujours présente.
  • La sortie de la commande est séparée de celle-ci par une ligne vide sans couleur de fond.
  • L'invite de retour n'est jamais présent pour la plupart des commandes.
  • Les affichages à surveiller sont en rouge, bleu, orange ou magenta.
# ping 192.168.1.149
192.168.1.149 is alive


Les liens de référence Internet sont en bleu de même que ceux intra document mais, ces derniers débute par un " # ".

   Manipulation, truc ou ruse pour se tirer d’embarras.

   Une recommandation ou astuce.

   Une note.

   Une étape, note ou procédure à surveiller.

   Danger pour la sécurité du système.

Une chaîne de caractères en magenta indique qu’il faut remplacer cette chaîne par vos propres paramètres.

Commande à exécuter si ce n'est déjà fait.
Commande indiquée à titre d'information seulement.

Prérequis

Installation d'un Serveur SME

Voir SME-101.02  https://wiki.contribs.org/SME-101.02_Serveur_SME.

Mise à jour du Serveur

Avant de commencer quoi que ce soit, il est toujours préférable de mettre à jour le Serveur SME.

Voir SME-101.02  https://wiki.contribs.org/SME-101.02_Serveur_SME#Mise_.C3.A0_jour.

Collection PHP70

Version PHP actuelle pour un Serveur SME-9.2.

# rpm -qa | grep php
...
php-gd-5.3.3-49.el6.x86_64
php-5.3.3-49.el6.x86_64
php-mysql-5.3.3-49.el6.x86_64
...

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

   Nous allons installer la Contrib PHP Software Collections qui fourni une version plus récente tout en gardant la version originalement installée.


PHP Software Collections

Référence: https://wiki.contribs.org/PHP_Software_Collections.

   Les développeurs de RedHat ont pensé qu'un inconvénient, avec la version 5 de PHP, allait survenir tôt ou tard et ont écrit les paquetages des Collections. Les développeurs de SME ont donc crée une Contrib qui règle le contre-temps des versions PHP. Cette Contrib est disponible depuis février 2015.


Description de la Contrib

   Disponible pour SME-9.x/64 seulement.

Le but de cette Contrib est d'installer PHP-5.4, PHP-5.5, PHP-5.6, PHP-7.0 et PHP-7.1, parallèlement à la version installée par défaut avec SME-9.x/64, sans devoir supprimer ou modifier cette dernière. Cette Contrib utilise les RPM du dépôt de logiciels remi-safe qui sont en fait les mêmes que ceux sur le site Web officiel mais, ils ont l'avantage de fournir plus de choix.

Tous les RPM PHP sont installés dans /opt, ce qui empêche toutes interférences ou conflits avec l'installation par défaut.


Prérequis pour l'installation de PHP Software Collections

Il faut inscrire les dépôts de logiciels remi-safe et epel dans la BD de yum pour pouvoir installer la Collection PHP.


Dépôt remi-safe

Référence: https://wiki.contribs.org/Remi-safe.

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

/sbin/e-smith/db yum_repositories set remi-safe repository \
Name 'Remi - safe' \
BaseURL 'http://rpms.famillecollet.com/enterprise/$releasever/safe/$basearch/' \
EnableGroups no \
GPGCheck yes \
GPGKey http://rpms.famillecollet.com/RPM-GPG-KEY-remi \
Visible yes \
status disabled

Vérification.

# db yum_repositories show remi-safe
remi-safe=repository
    BaseURL=http://rpms.famillecollet.com/enterprise/$releasever/safe/$basearch/
    EnableGroups=no
    GPGCheck=yes
    GPGKey=http://rpms.famillecollet.com/RPM-GPG-KEY-remi
    Name=Remi - safe
    Visible=yes
    status=disabled


†† Dépôt epel

Référence: https://wiki.contribs.org/Epel#tab=For_SME_9_x.

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

/sbin/e-smith/db yum_repositories set epel repository \
Name 'Epel' \
BaseURL 'http://download.fedoraproject.org/pub/epel/$releasever/$basearch'                    \
MirrorList 'http://mirrors.fedoraproject.org/mirrorlist?repo=epel-$releasever&arch=$basearch' \
EnableGroups no \
GPGCheck yes \
GPGKey http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL \
Exclude perl-Razor-Agent \
Visible no \
status disabled

Vérification.

# db yum_repositories show epel
epel=repository
    BaseURL=http://download.fedoraproject.org/pub/epel/$releasever/$basearch
    EnableGroups=no
    Exclude=perl-Razor-Agent
    GPGCheck=yes
    GPGKey=http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL
    MirrorList=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-$releasever&arch=$basearch
    Name=Epel
    Visible=no
    status=disabled


On signale les changements.

# signal-event yum-modify


Installation de la Contrib

   Nous installons de la manière avancée, c.-à-d. avec plus de RPM pour une utilisation ultérieure de ceux-ci si nécessaire.

   Peut prendre un certain temps...

# yum install -y --enablerepo=smecontribs,epel smeserver-php-scl php56-php-pecl-rar php56-php-libvirt php56-php-magickwand 
...
Installation de   125 paquet(s)

Taille totale des téléchargements : 45 M
Taille d'installation : 124 M
...
Installé:
  smeserver-php-scl.noarch 0:0.4-17.el6.sme

Dépendance(s) installée(s) :
  audit-libs-python.x86_64 0:2.4.5-6.el6
  enchant.x86_64 1:1.5.0-5.el6
...
  tcl.x86_64 1:8.5.7-6.el6

Terminé !

==============================================================
WARNING: You now need to run BOTH of the following commands
to ensure consistent system state:

signal-event post-upgrade; signal-event reboot

You should run these commands unless you are certain that
yum made no changes to your system.
==============================================================


PHP71 par défaut après une connexion

Référence: http://appdev.oit.umn.edu/2015/02/11/scl/

On crée le fichier d'activation qui sera lu lors d'un connexion au Serveur SME.

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

cat > /etc/profile.d/activer-php71.sh <<'EOT'
#!/bin/bash
source /opt/remi/php71/enable
if [[ "$X_SCLS" != *php71* ]]; then
src="`scl enable php71 'echo $X_SCLS'`"
pkgs=(${src// / })
uniq=($(printf "%s\n" "${pkgs[@]}" | sort -u));
export X_SCLS="${uniq[@]}"
fi
EOT

On rend le fichier exécutable.

# chmod +x /etc/profile.d/activer-php71.sh

On vérifie.

# ls -als /etc/profile.d/activer-php71.sh
4 -rwxr-xr-x 1  root root 215 11 oct.  12:04 /etc/profile.d/activer-php71.sh


Si vous ne souhaitez pas redémarrer votre serveur

# signal-event php-update; config set UnsavedChanges no

Sinon...

On signale l'installation et on réamorce.

# signal-event post-upgrade ; signal-event reboot
 

   Un réamorçage avec une mise à jour de la configuration peut prendre quelque temps. Soyons patients!

Vérification

On se connecte et on vérifie l'installation.

# rpm -qa | grep scl-
smeserver-php-scl-0.4-17.el6.sme.noarch
scl-utils-20120927-29.el6_9.x86_64

On vérifie les Collections installées.

# scl -l
php54
php55
php56
php70
php71


Quel est le PHP par défaut?

# which php
/opt/remi/php71/root/usr/bin/php


Quelle est sa version?

# php --version
PHP 7.1.16 (cli) (built: Mar 28 2018 12:03:37) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies


Mise à jour de la Contrib

   Pour la mise à jour de la Contrib PHP SCL, voir le chapitre #Mise à jour des Collections Red Hat.


 
 

Activation de la version PHP-7.1 pour les i-bays



 
 
  • On choisit la version la plus récente, c.-à-d. PHP71  >  Enregistrer.
  • On s'assure du succès de l'opération.



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.

# config show php71
php71=configuration
    AllowUrlFopen=Off
    MaxExecutionTime=30
    MaxFileUpload=20
    MaxInputTime=60
    MemoryLimit=128M
    PhpModule=enabled
    PostMaxSize=20M
    UploadMaxFilesize=10M


   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 (256M) > PostMaxSize (52M) > UploadMaxFilesize (50M).


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.

On ajuste le paramètre pour PHP-7.1.

# config setprop php71 MemoryLimit 256M


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.


On ajuste le paramètre pour PHP-7.1.

# config setprop php71 UploadMaxFilesize 50M


PostMaxSize

Référence: http://php.net/manual/en/ini.core.php#ini.post-max-size.

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.

On ajuste le paramètre pour PHP-7.1.

# config setprop php71 PostMaxSize 52M


On signale les changements pour qu'ils deviennent permanents.

# signal-event php-update


On vérifie le tout.

# config show php71
php71=configuration
    AllowUrlFopen=Off
    MaxExecutionTime=30
    MaxFileUpload=20
    MaxInputTime=60
    MemoryLimit=256M
    PhpModule=disabled
    PostMaxSize=52M
    UploadMaxFilesize=50M

   Comme on le voit ci-dessus, les grandeurs maximales sont maintenant de: MemoryLimit (256M) > PostMaxSize (52M) > UploadMaxFilesize (50M).


Paramètres de php.ini

Limite de mémoire pour PHP

Si on installe un site Web qui utilise PHP, il se peut que ce dernier manque de mémoire pour exécuter certains scripts. Par défaut la limite de mémoire allouée à PHP est de 32M.

Dans le fichier /etc/php.ini, il existe déjà une variable Memory_Limit.

# cat /etc/php.ini | grep -i  Memory_Limit
memory_limit                    = 32M

Cette limite est définie par un "fragment du gabarit standard" de php.ini.


Affichage des fragments du gabarit php.ini

Les fragments du gabarit standard de php.ini sont situés dans le répertoire /etc/e-smith/templates/etc/php.ini/.

# ls -als  /etc/e-smith/templates/etc/php.ini/
total 136
4 drwxr-xr-x  2 root root 4096 18 mars  12:48 .
4 drwxr-xr-x 81 root root 4096 20 mai    2017 ..
4 -rw-r--r--  1 root root    6 15 mars   2002 00PHP
4 -rw-r--r--  1 root root  986 13 févr.  2013 10LanguageOptions
4 -rw-r--r--  1 root root  152 13 févr.  2013 15ExposePHP
4 -rw-r--r--  1 root root  214  7 oct.   2008 20ResourceLimits
4 -rw-r--r--  1 root root  375  7 oct.   2008 30ErrorHandling
4 -rw-r--r--  1 root root  558 29 juin   2015 40DataHandling
4 -rw-r--r--  1 root root  626  7 oct.   2008 50PathsDirectories
4 -rw-r--r--  1 root root  155  7 oct.   2008 60FileUploads
4 -rw-r--r--  1 root root   58  7 oct.   2008 65FopenWrappers
4 -rw-r--r--  1 root root   30 13 févr.  2013 70TimeZone
4 -rw-r--r--  1 root root   55  7 oct.   2008 80ModuleSettings01Syslog
4 -rw-r--r--  1 root root  126  7 oct.   2008 80ModuleSettings02mailfunction
4 -rw-r--r--  1 root root  156  7 oct.   2008 80ModuleSettings03Debugger
4 -rw-r--r--  1 root root   11  7 oct.   2008 80ModuleSettings04Logging
4 -rw-r--r--  1 root root    8  7 oct.   2008 80ModuleSettings05Java
4 -rw-r--r--  1 root root   52  7 oct.   2008 80ModuleSettings06SQL
4 -rw-r--r--  1 root root  273  7 oct.   2008 80ModuleSettings07ODBC
4 -rw-r--r--  1 root root  346  7 oct.   2008 80ModuleSettings08MySQL
4 -rw-r--r--  1 root root  140  7 oct.   2008 80ModuleSettings09mSQL
4 -rw-r--r--  1 root root  147  7 oct.   2008 80ModuleSettings10PostgresSQL
4 -rw-r--r--  1 root root  275  7 oct.   2008 80ModuleSettings11Sybase
4 -rw-r--r--  1 root root  233  7 oct.   2008 80ModuleSettings12Sybase-CT
4 -rw-r--r--  1 root root   53  7 oct.   2008 80ModuleSettings13bcmath
4 -rw-r--r--  1 root root   12  7 oct.   2008 80ModuleSettings14browscap
4 -rw-r--r--  1 root root  482  7 oct.   2008 80ModuleSettings15Informix
4 -rw-r--r--  1 root root  861  7 oct.   2008 80ModuleSettings16Session
4 -rw-r--r--  1 root root  274  7 oct.   2008 80ModuleSettings17MSSQL
4 -rw-r--r--  1 root root   13  7 oct.   2008 80ModuleSettings18Assertion
4 -rw-r--r--  1 root root  268  7 oct.   2008 80ModuleSettings19IngresII
4 -rw-r--r--  1 root root  172  7 oct.   2008 80ModuleSettings20VerisignPayflowPro
4 -rw-r--r--  1 root root   55  7 oct.   2008 80ModuleSettings21Sockets
4 -rw-r--r--  1 root root  404 15 mars   2002 template-begin


   Lorsqu'un Serveur SME démarre, il passe dans ce répertoire en assemblant (expanding) tous ses fragments (fichiers) pour créer le fichier de configuration de PHP, c.-à-d. /etc/php.ini.

Cette méthode est particulière à SME. Ainsi, si on modifie un paramètre quelconque, lorsque le Serveur SME redémarre, il revient toujours aux paramètres standards.

Si on modifie un paramètre dans un de ces fichiers, il sera aussi perdu lors d'une mise à jour du Serveur SME.

   Pour modifier un paramètre de façon permanente, il faut utiliser un gabarit personnalisé.


Recherche du fragment

On recherche le fragment qui contient la variable Memory_Limit.

# grep -i "Memory_Limit"  /etc/e-smith/templates/etc/php.ini/*
/etc/e-smith/templates/etc/php.ini/20ResourceLimits:memory_limit                         = {

Le fragment en question est le fichier 20ResourceLimits.


On affiche ce fragment.

# cat /etc/e-smith/templates/etc/php.ini/20ResourceLimits
max_execution_time                     = {
    my $et = $php{MaxExecutionTime} || "30";
    $OUT .= "$et";
}
memory_limit                           = {
    my $ml = $php{MemoryLimit} || "32M";
    $OUT .= "$ml";
}

On voit que la limite est présentement de 32M. Nous allons la modifier pour l'augmenter à 256M.

   Nous allons ajouter un gabarit personnalisé pour ajuster la variable Memory_Limit. Avec un tel gabarit, la modification sera permanente même après une mise à jour du Serveur SME.


Création d'un gabarit personnalisé

On crée le répertoire d'un gabarit personnalisé pour php.ini.

# mkdir -p /etc/e-smith/templates-custom/etc/php.ini


On copie le fragment standard dans le répertoire du gabarit personnalisé.

# cp /etc/e-smith/templates/etc/php.ini/20ResourceLimits /etc/e-smith/templates-custom/etc/php.ini/20ResourceLimits


On vérifie.

# ls -ls /etc/e-smith/templates-custom/etc/php.ini/20ResourceLimits
4 -rw-r--r-- 1 root root 214  27 mars  04:42 /etc/e-smith/templates-custom/etc/php.ini/20ResourceLimits


Modification du fragment personnalisé

On modifie MemoryLimit à l'aide de l'utilitaire sed.

# sed -i 's/"32M";/"256M";/'  /etc/e-smith/templates-custom/etc/php.ini/20ResourceLimits

On vérifie.

# cat /etc/e-smith/templates-custom/etc/php.ini/20ResourceLimits
max_execution_time                     = {
    my $et = $php{MaxExecutionTime} || "30";
    $OUT .= "$et";
}
memory_limit                           = {
    my $ml = $php{MemoryLimit} || "256M";
    $OUT .= "$ml";
}


UploadMaxFilesize

WordPress, avec certaines extensions telles que WooCommerce, 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.


Recherche du fragment

On recherche le fragment qui contient la variable upload_max_filesize.

# grep  -i "upload_max_filesize"  /etc/e-smith/templates/etc/php.ini/*
/etc/e-smith/templates/etc/php.ini/60FileUploads:upload_max_filesize                    = {

Le fragment en question est le fichier 60FileUploads.


On affiche ce fragment.

# cat /etc/e-smith/templates/etc/php.ini/60FileUploads
file_uploads                           = On
upload_max_filesize                    = {
    my $mf = $php{UploadMaxFilesize} || "10M";
    $OUT .= "$mf";
}


On voit que la limite est présentement de 10M. Nous allons l'augmenter à 50M pour pouvoir téléverser des fichiers plus volumineux.

   Il faut obligatoirement que le paramètre memory_limit 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.

   memory_limit (256M) > upload_max_filesize (50M).


Création d'un gabarit personnalisé

Nous avons déjà créé le répertoire du gabarit personnalisé pour les fragments de php.ini lors de la modification du paramètre MemoryLimit ci-dessus.

# ls -lsd /etc/e-smith/templates-custom/etc/php.ini
total 4
4 drwxr-xr-x 2 root root 4096 27 mars  04:43 /etc/e-smith/templates-custom/etc/php.ini


On copie le fragment standard du paramètre UploadMaxFilesize dans le répertoire du gabarit personnalisé.

# cp /etc/e-smith/templates/etc/php.ini/60FileUploads /etc/e-smith/templates-custom/etc/php.ini/60FileUploads


On vérifie.

# ls -ls /etc/e-smith/templates-custom/etc/php.ini/60FileUploads
4 -rw-r--r-- 1 root root 155  27 mars  04:44 /etc/e-smith/templates-custom/etc/php.ini/60FileUploads


Modification du fragment personnalisé

On modifie le maximum à l'aide de l'utilitaire sed.

# sed -i 's/10M/50M/'  /etc/e-smith/templates-custom/etc/php.ini/60FileUploads


On vérifie.

# cat /etc/e-smith/templates-custom/etc/php.ini/60FileUploads
file_uploads                           = On
upload_max_filesize                    = {
    my $mf = $php{UploadMaxFilesize} || "50M";
    $OUT .= "$mf";
}


post_max_size

Référence: http://php.net/manual/en/ini.core.php#ini.post-max-size.

Le paramètre post_max_size définit la taille maximale des données des posts autorisées. 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.


Recherche du fragment

On recherche le fragment qui contient la variable.

# grep  -i "post_max_size"  /etc/e-smith/templates/etc/php.ini/*
/etc/e-smith/templates/etc/php.ini/40DataHandling:post_max_size                         = {


Le fragment en question est le fichier 40DataHandling.

On affiche ce fragment.

# cat /etc/e-smith/templates/etc/php.ini/40DataHandling
mysql.allow_persistent                 = On
variables_order                        = "EGPCS"
register_globals                       = Off
register_argc_argv                     = On
post_max_size                          = {
    my $ms = $php{PostMaxSize} || "20M";
    $OUT .= "$ms";
}
magic_quotes_gpc                       = Off
magic_quotes_runtime                   = Off
magic_quotes_sybase                    = Off
auto_prepend_file                      =
auto_append_file                       =
default_mimetype                       = "text/html"


On voit que la limite est présentement de 20M. Nous allons l'augmenter à 52M pour qu'elle soit plus grande que celle du paramètre UploadMaxFilesize.

   Il faut obligatoirement que le paramètre post_max_size 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.

   memory_limit (256M) > post_max_size (52M) > upload_max_filesize (50M).


Création d'un gabarit personnalisé

Nous avons déjà créé le répertoire du gabarit personnalisé pour les fragments de php.ini lors de la modification du paramètre MemoryLimit. Il contient déjà deux fragments.

# ls -ls /etc/e-smith/templates-custom/etc/php.ini
4 -rw-r--r-- 1 root root 215 27 mars  04:43 20ResourceLimits
4 -rw-r--r-- 1 root root 155 27 mars  04:45 60FileUploads


On copie le fragment standard du paramètre UploadMaxFilesize dans le répertoire du gabarit personnalisé.

# cp /etc/e-smith/templates/etc/php.ini/40DataHandling /etc/e-smith/templates-custom/etc/php.ini/40DataHandling

On vérifie.

# ls -ls /etc/e-smith/templates-custom/etc/php.ini/40DataHandling
4 -rw-r--r-- 1 root root 558  27 mars  04:46 /etc/e-smith/templates-custom/etc/php.ini/40DataHandling


Modification du fragment personnalisé

On modifie le maximum à l'aide de l'utilitaire sed.

# sed -i 's/20M/52M/'  /etc/e-smith/templates-custom/etc/php.ini/40DataHandling

On vérifie.

# grep -i PostMaxSize /etc/e-smith/templates-custom/etc/php.ini/40DataHandling
    my $ms = $php{PostMaxSize} || "52M";


Signalisation des modifications

On signale les modifications et on réamorce pour que les gabarits personnalisés soient incorporés au fichier php.ini de manière permanente.

# signal-event post-upgrade ; signal-event reboot


Le serveur réamorce et va assembler tous les fragments des gabarits en incluant les nôtres.

   Le choix des fragments des gabarits personnalisés ont préséance sur les fragments standards lors de l'assemblage des fichiers de configuration.

Vérification

Après le réamorçage, on se connecte et on vérifie le fichier de configuration /etc/php.ini afin de confirmer si les fragments personnalisés contenant nos changements y ont été incorporés.

   Si PuTTY ne peut se reloguer, on le ferme et on réamorce encore une fois le serveur virtuel. Ce refus de connexion est dû à la variable AutoBlock de sshd qui peut être désactivée si on installe la Contrib Fail2ban, voir: https://www.micronator.org/affaires/produit/sme-9-x8-x-fail2ban/.

# cat /etc/php.ini | grep -i  Memory_Limit
memory_limit                           = 256M


# php -r "phpinfo();" | grep post_max_size
post_max_size => 52M => 52M


# cat /etc/php.ini  |  grep -i upload_max_filesize
upload_max_filesize                    = 50M

   Comme on le voit ci-dessus, les grandeurs maximales sont maintenant: 256M, 52M et 50MB. Les relations ont été respectées: memory_limit 256M > post_max_size 52M > upload_max_filesize 50MB.


Collection MySQL57

Version MySQL actuelle pour un Serveur SME-9.2.

# rpm -qa | grep mysql-server
mysql-server-5.1.73-8.el6_8.x86_64

Comme on le voit, notre version 5.1.73-8 de MySQL est légèrement vieillotte elle aussi.


MySQL57 Software Collections

Référence: https://wiki.contribs.org/Software_Collections:MySQL57.

   Nous allons installer la Collection MySQL57 qui fourni une version plus récente tout en gardant la version originalement installée.


Dépôt centos-sclo-rh

Pour installer un logiciel, il faut indiquer à yum de quelle URL il doit le téléverser et pour ce faire, il faut configurer une description du dépôt de logiciels décrivant la source du téléchargement.

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

/sbin/e-smith/db yum_repositories set centos-sclo-rh repository \
Name 'Centos - RH Software Collections' \
BaseURL 'http://mirror.centos.org/centos/$releasever/sclo/$basearch/rh/' \
EnableGroups no \
Visible yes \
status disabled

On vérifie.

# db yum_repositories show centos-sclo-rh
centos-sclo-rh=repository
    BaseURL=http://mirror.centos.org/centos/$releasever/sclo/$basearch/rh/
    EnableGroups=no
    Name=Centos - RH Software Collections
    Visible=yes
    status=disabled


On signale la modification.

# signal-event yum-modify

   Attendre 20-30 secondes pour que yum ait terminé sa mise à jour.


Installation de la Collection RH-MySQL57

# yum install -y --enablerepo=smecontribs smeserver-mysql57
...
Installation de    10 paquet(s)

Taille totale des téléchargements : 32 M
Taille d'installation : 138 M
...
Installé:
  smeserver-mysql57.noarch 0:2.0.0-11.el6.sme

Dépendance(s) installée(s) :
  rh-mysql57.x86_64 0:2.3-3.el6
  rh-mysql57-lz4.x86_64 0:r131-5.el6
  rh-mysql57-mecab.x86_64 0:0.996-1.el6.8
  rh-mysql57-mysql.x86_64 0:5.7.16-1.el6
  rh-mysql57-mysql-common.x86_64 0:5.7.16-1.el6
  rh-mysql57-mysql-config.x86_64 0:5.7.16-1.el6
  rh-mysql57-mysql-errmsg.x86_64 0:5.7.16-1.el6
  rh-mysql57-mysql-server.x86_64 0:5.7.16-1.el6
  rh-mysql57-runtime.x86_64 0:2.3-3.el6

Terminé !

==============================================================
WARNING: You now need to run BOTH of the following commands
to ensure consistent system state:

signal-event post-upgrade; signal-event reboot

You should run these commands unless you are certain that
yum made no changes to your system.
==============================================================


Signalisation des modifications

# signal-event post-upgrade ; signal-event reboot


Vérification de la version MySQL de la Collection RH-MySQL57

Le chemin de la collection est: /opt/rh/rh-mysql57.

# ls -ls /opt/rh/rh-mysql57/root/usr/bin/mysql
3784 -rwxr-xr-x 1 root root 3872720 16 nov.   2016 /opt/rh/rh-mysql57/root/usr/bin/mysql


On affiche la version MySQL de la Collection RH-MySQL57.

# mysql57 --version
/opt/rh/rh-mysql57/root/usr/bin/mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper


On vérifie si le démon mysql57-mysqld est lancé.

# ps aux | grep mysql57
root       768  0.0  0.0    108    28 ?        Ss   12:45   0:00 runsv mysql57-mysqld
smelog     814  0.0  0.0   3940   396 ?        S    12:45   0:00 /usr/local/bin/multilog t s5000000 /var/log/mysql57-mysqld
mysql     1803  0.1  4.5 1262156 183152 ?      Sl   12:46   0:00 /opt/rh/rh-mysql57/root/usr/libexec/mysqld --defaults-file=/opt/rh/rh-mysql57/root/etc/my.cnf --basedir=/opt/rh/rh-mysql57/root/usr --datadir=/opt/rh/rh-mysql57/root/var/lib/mysql --user=mysql --pid-file=/var/run/rh-mysql57-mysqld/mysqld.pid --socket=/var/lib/mysql/mysql57.sock --lc-messages-dir=/opt/rh/rh-mysql57/root/usr/share/rh-mysql57-mysql/english/
root      2740  0.0  0.0 103340   928 pts/0    S+   12:51   0:00 grep mysql57


On vérifie la présence du connecteur (socket) mysql.sock.

# ls -als /var/lib/mysql/mysql57.sock
0 srwxrwxrwx 1 mysql mysql 0 11 oct.  12:47 /var/lib/mysql/mysql57.sock

   C'est ce connecteur qu'on spécifiera dans le fichier de configuration wp-config.php de WordPress.


Serveurs DNS du domaine

Pour trouver le nom de notre domaine:


 
 
  • - Serveur branché directement à l'Internet.
    - Serveurs DNS de l'Internet.
  • - Pour un Serveur SME sur un réseau LOCAL avec accès Internet via un autre serveur passerelle.
    - Résolu localement.


Site dans l'i-bay Primary

  • Si le serveur est directement branché à l'Internet, "Serveurs DNS du domaine": Serveurs DNS de l'Internet.
  • Si le serveur est sur un réseau local, "Serveurs DNS du domaine": Résolu localement.


Site dans une autre i-bay

  • Pour tous les sites hébergés dans une autre i-bay que Primary, "Serveurs DNS du domaine": Résolu localement qu'ils aient un domaine FQDN ou non.


Affichage du nom du domaine

 
 
  • Lors du lancement de l'installation de WordPress en allant à http://www.nom-de-domaine/, l'URL choisi deviendra le paramètre pour l'Adresse web de WordPress (URL) et pour l'Adresse web du site (URL).
  • Plus tard, lorsqu'on visitera le site, si on déplace la souris au-dessus d'un lien, le navigateur affichera l'Adresse web du site (URL) au début de l'adresse de la page.


Fichier hosts pour répondre aux requêtes DNS

 
 

Affichage du nom du domaine

  • Sans domaine FQDN ni service DNS dynamique, si on choisit l'adresse IP du site pour lancer l'installation, ces paramètres deviendront http://adresse-IP.
  • Plus tard, lorsqu'on visitera le site, si on déplace la souris au-dessus d'un lien, le navigateur affichera l'adresse IP du site au début de l'URL de la page. Cet affichage n'est pas très professionnel et encore moins esthétique.


Modification du fichier hosts de la station de travail

   Pour pouvoir accéder à notre site avec son FQDN même si nous n'avons pas encore de domaine réel.

Référence: https://fr.wikipedia.org/wiki/Hosts.

Le fichier hosts est un fichier utilisé par le système d'exploitation d'un ordinateur lors de l'accès à un réseau, comme Internet par exemple. Son rôle est d'associer des noms d'hôtes à des adresses IP. Lors de l'accès à une ressource réseau par nom de domaine, ce fichier est consulté avant l'accès au serveur DNS et permet au système de connaître l'adresse IP associée au nom de domaine sans avoir recours à une requête DNS.

   Si nous n'avons pas de serveur DNS sur le réseau LOCAL, on peut faire des entrées dans le fichier hosts de la station de travail et y indiquer les adresses IP de notre Serveur SME local.

 

Sur une station Windows, le fichier hosts se trouve dans le répertoire: C:\Windows\System32\drivers\etc\.

Clac (clic droit) sur le fichier  >  Propriétés.

Le fichier est en Lecture seule, on décoche ce paramètre  >  OK.

   Pour une station Linux, le fichier hosts réside dans le répertoire /etc.


   Pour simplifier l'édition et surtout la sauvegarde du fichier hosts on édite avec NotePad++.

On y ajoute l'adresse IP avec le nom du "domaine" de notre site virtuel (ajouts en rouge et en magenta).

...
# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

#  Modifications pour l'installation de WordPress
10.10.100.102  micronator-101.com
10.10.100.102  www.micronator-101.com

# Start of entries inserted by Spybot - Search & Destroy
127.0.0.1    www.007guard.com
127.0.0.1    007guard.com
...


 
 
  • Lors de la sauvegarde avec NotePad++, un message sera affiché disant que le fichier est protégé et demandera si on veut lancer NotePad++ en mode Administrateur.
    Répondre Oui et on sera retourné à NotePad++ mais, dans le mode Administrateur.
  • À l'écran suivant "Voulez-vous autoriser le programme suivant à apporter des modifications à cet ordinateur", cliquer Oui.
    Relancer la sauvegarde du fichier car, le fichier n'a pas été sauvegardé lors de la première tentative.

   Après avoir acquis un domaine FQDN ou un compte de service DNS dynamique, il faut supprimer ces modifications du fichier hosts de la station de travail.


 

   Après les modifications, ne pas oublier de remettre le fichier en "Lecture seule".

Vidange du cache DNS

Sur la station de travail, on ouvre un écran de commande et on vide le cache DNS de la station.

C:\Users\michelandre> ipconfig /flushdns
Configuration IP de Windows

Cache de résolution DNS vidé.

C:\Users\michelandre>


 
 

Vidange de l'historique

   On vidange l'historique de notre navigateur.

  • Supprimer l'historique récent...
  • Effacer maintenant.


Témoins et JavaScript

   On active les témoins (cookies) et JavaScript de notre navigateur Web.

Scripts d'ajustement des droits et permissions

Introduction

Les scripts de ce chapitre s'appliquent pour toutes les installations de WordPress qu'elles soient dans l'i-bay Primary ou dans toute autre i-bay.

  • Un script doit être lancé par l'usager root.
  • Pour connaître l'Usage, lancer le script avec le paramètre -h ou --help.
  • À la ligne de commande du script, il faut spécifier l'i-bay d'installation de WordPress.
  • Le script vérifie alors si le paramètre spécifié est bien une i-bay et si oui, il demande de confirmer.
  • droits_ibay.sh ajuste le propriétaire, le groupe et les droits/permissions de tous les fichiers et répertoires du site WordPress à l'exception des fichiers .htaccess et .well-known dans le répertoire racine.
  • droits_debut_MAJ-WP.sh sauvegarde le fichier .htaccess, récupère le fichier readme.html et ajoute le droit d'écriture aux fichiers du répertoire racine auxquels la mise à jour de WordPress doit avoir accès.
  • droits_fin_MAJ-WP.sh récupère le fichier .htaccess, sauvegarde le fichier readme.html et enlève le droit d'écriture donné précédemment avant la mise à jour de WordPress.


Usage des scripts

Après l'installation d'une extension ou d'un thème

Utilisez le script droits_ibay.sh en spécifiant l'i-bay d'installation de WordPress puis, confirmez.


Mise à jour de WordPress

AVANT la mise à jour, lancez le script droits_debut_MAJ-WP.sh en spécifiant l'i-bay d'installation de WordPress puis, confirmez.

†††  Faites la mise à jour de WordPress.

APRÈS la mise à jour, lancez le script droits_fin_MAJ-WP.sh en spécifiant l'i-bay d'installation de WordPress puis, confirmez.


Marche à suivre

  • Nous créons des scripts Bash pour ajuster: le propriétaire, le groupe, les droits et permissions des fichiers, répertoires et sous-répertoires de WordPress.
  • Nous créons ces scripts dans le répertoire de l'usager root et ainsi ils seront sauvegardés lors d'une sauvegarde standard du Serveur SME.
  • Pour que ces scripts soient accessibles par l'usager root depuis n'importe quel emplacement sur le serveur, nous créerons des liens dans le répertoire /bin qui pointeront vers ces scripts. Si on ne créait pas les liens dans le répertoire /bin, l'usager root pourrait toujours spécifier le chemin complet du script, c.-à-d. /root/script-à-lancer.


Répertoire des scripts

On se logue en usager root et on vérifie qu'on est bien dans le bon répertoire.

# pwd
/root


Création du script droits_ibay.sh

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

cat > /root/droits_ibay.sh <<'EOT'
#!/bin/bash 
# Nom du script: /bin/droits_ibay.sh
# Michel-André / michelandre@micronator.org / 2016-04-15_10h34 HAE
# Michel-André / michelandre@micronator.org / 2017-04-03_20h57 HAE
# Michel-André / michelandre@micronator.org / 2017-04-08_14h06 HAE

Usage() { 
  echo -e "\n"
  echo "Ce script doit être roulé par l'usager root." 
  echo -e "\nUsage:\n$0 [Nom_de_l'ibay]" 
  echo -e "\nExemple:\n$0 Primary \n$0 toto\n" 
} 

# Si le nombre d'arguments est différent de 1, affiche l'usage.
if [  $# != 1 ] 
    then
    echo -e "\nArgument invalide\n" 
    # Usage
    exit 1
fi 

# Si l'usager a entré -h ou --help, affiche l'usage
if [[ "$1" == "-h" || "$1" == "--help" ]] ; then
    ## echo "Demande d'aide." 
    Usage
    exit 0
fi

# Affiche un message si l'usager n'est pas root.
if [[ $USER != "root" ]]; then 
    echo "ce script doit être roulé par l'usager root"
    exit 1
fi 

# Est-ce que l'argument pointe vers une i-bay?
if [ ! -d /home/e-smith/files/ibays/$1 ];
  then  # L'argument ne pointe pas vers une i-bay.
    echo -e "\nL'i-bay \"$1\" n'existe pas\n"
    exit 1
  else  # C'est une i-bay,
    # Est-ce l'ibay Primary?
    if [ "$1" == "Primary" ] ; then    # Confirmation de l'i-bay Primary, ajuster droits
      echo -e ""
      defaut=o
      read -p "Vous avez bien spécifié l'i-bay:  \"/home/e-smith/files/ibays/$1\"?  o/n [$defaut]: " REPONSE
      REPONSE=${REPONSE:-$defaut}
      if [[ $REPONSE == "o" || $REPONSE == "oui" || $REPONSE == "O" || $REPONSE == "Oui" ]]
        then  # i-bay Primary confirmée
          ## echo "Les commandes de: Primary"
          ## echo "Toutes les commandes de Primary (suite)"
          cd /home/e-smith/files/ibays/Primary/html/  2>&1
          chown -R admin:shared *  2>&1
          chmod -R g+w wp-content  2>&1
          chmod -R o-rwx *  2>&1
          find wp-content/themes -type d -exec chmod g+s {} \;   2>&1
          echo -e "\n********** Répertoire des thèmes **********"
          ls -als wp-content/themes
          find wp-content/plugins -type d -exec chmod g+s {} \;  2>&1
          echo -e "\n********** Répertoire des extensions **********"
          ls -als wp-content/plugins
          ## Pour l'extension Duplicator
          chmod -R 2770 wp-snapshots  2>&1
          find wp-snapshots/* -type f -exec chmod 640 {} \;   2>&1
          chmod 640 wp-snapshots/.htaccess  2>&1
          echo -e "\n********** Répertoire racine **********"
          ls -als
          exit 0
        else  # i-bay Primary non confirmée
          echo -e "\n********** L'i-bay \"$1\" non confirmée\n"
          exit 0
      fi
    else # Confirmation que c'est une autre i-bay, ajuster les droits
      echo -e ""
      defaut=o
      read -p "Vous avez bien spécifié l'i-bay: \"/home/e-smith/files/ibays/$1\"?  o/n [$defaut]: " REPONSE
      REPONSE=${REPONSE:-$defaut}
      if [[ $REPONSE == "o" || $REPONSE == "oui" || $REPONSE == "O" || $REPONSE == "Oui" ]]
        then # autre i-bay confirmée
        ## echo -e "\nN'est pas Prinary\n"
        ## echo "Les commandes d'une aute i-bay (suite)"
        cd /home/e-smith/files/ibays/$1/html/
        chown -R admin:www *
        chmod -R g+w wp-content  2>&1
        chmod -R o-rwx *  2>&1
        find wp-content/themes -type d -exec chmod g+s {} \;   2>&1
        echo -e "\n********** Répertoire des thèmes **********"
        ls -als wp-content/themes
        find wp-content/plugins -type d -exec chmod g+s {} \;  2>&1
        echo -e "\n********** Répertoire des extensions **********"
        ls -als wp-content/plugins
        ## Pour l'extension Duplicator
        chmod -R 2770 wp-snapshots  2>&1
        find wp-snapshots/* -type f -exec chmod 640 {} \;   2>&1
        chmod 640 wp-snapshots/.htaccess  2>&1
        echo -e "\n********** Répertoire racine **********"
        ls -als
        exit 0
      else   # autre i-bay non confirmée
        echo -e "\n********** L'i-bay \"$1\" non confirmée\n"
        exit 0
      fi
    fi   # aucune i-bay confirmée
fi
echo "Il y a une erreur quelque part !!!"

EOT


On ajuste les droits du script.

# chmod 700 /root/droits_ibay.sh

On vérifie.

# ls -ls /root/droits_ibay.sh
4 -rwx------ 1 root root 4070 10 oct.  00:22 /root/droits_ibay.sh


On crée le lien dans le répertoire /bin.

# ln -s /root/droits_ibay.sh  /bin/droits_ibay.sh

On vérifie.

# ls -ls /bin/droits_ibay.sh
0 lrwxrwxrwx 1 root root 20 10 oct.  00:24 /bin/droits_ibay.sh -> /root/droits_ibay.sh


On vérifie que le lien est bien sur le chemin des commandes (path).

# which droits_ibay.sh
/bin/droits_ibay.sh


Usage

   Nous voulons demeurer très sécuritaire, il faut exécuter ce script après avoir installé un/plusieurs thèmes ou extensions dans WordPress.

   En lançant le script, il faut spécifier l'i-bay dans laquelle WordPress est installé; ici ce sera Primary.

Le script demande de confirmer l'i-bay.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...
chmod: impossible d'accéder à « wp-snapshots/.htaccess »: Aucun fichier ou dossier de ce type
...

   Si nous n'avions pas encore installé l'extension Duplicator et créé le répertoire wp-snapshots et le fichier .htaccess dans ce répertoire, le script afficherait la ligne ci-dessus spécifiant que le fichier wp-snapshots/.htaccess n'existe pas.


Si nous avions installé WordPress dans l'i-bay toto, on spécifierait toto.

# droits_ibay.sh toto
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/toto"?  o/n [o]: [Entrée]
...
chmod: impossible d'accéder à « wp-snapshots/.htaccess »: Aucun fichier ou dossier de ce type
...

   Si nous n'avions pas encore installé l'extension Duplicator et créé le répertoire wp-snapshots et le fichier .htaccess dans ce répertoire, le script afficherait la ligne ci-dessus spécifiant que le fichier wp-snapshots/.htaccess n'existe pas.


Scripts à exécuter lors d'une mise à jour de WordPress

Vu que notre installation de WordPress est très sécuritaire et que nous avons restreint les droits et permissions des fichiers, répertoires et sous-répertoires, il faut ajuster ces droits pour que WordPress puisse exécuter une mise à jour.

Nous créons deux scripts:

  • un script qu'on exécute avant la mise à jour qui ajuste les droits et permissions pour en permettre l'installation.
  • un script qu'on exécute après la mise à jour qui remet les droits pour redevenir très sécuritaire.

On crée ces scripts dans le répertoire /root. On crée aussi des liens dans le répertoire /bin pour permettre à l'usager root de lancer ces scripts depuis n'importe quel emplacement sur le serveur.


Création du script droits_debut_MAJ-WP.sh

   Après avoir lancé ce script, Wordfence affichera un message demandant de compléter sa configuration. NE PAS TENIR COMPTE DE CE MESSAGE, après la mise à jour de WordPress, le script droits_fin_MAJ-WP.sh le fera disparaître en remettant en place le fichier .htaccess.

   Le fichier readme.html est nécessaire pour une mise à jour de WordPress. Il a été sauvegardé dans le répertoire au dessus de la racine de notre site WordPress tel que décrit au paragraphe #Fichier readme.html. Ce script-ci récupère ce fichier.

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

cat > /root/droits_debut_MAJ-WP.sh <<'EOT'
#!/bin/bash 
# Nom du script: /bin/droits_debut_MAJ-WP.sh
# Michel-André / michelandre@micronator.org / 2016-08-17_10h38
# Michel-André / michelandre@micronator.org / 2017-04-03_20h57 HAE
# Michel-André / michelandre@micronator.org / 2017-04-08_14h06 HAE

Usage() { 
  echo -e "\n"
  echo "Ce script doit être roulé par l'usager root." 
  echo -e "\nUsage:\n$0 [Nom_de_l'ibay_de_WordPress_à_MAJ]" 
  echo -e "\nExemple:\n$0 Primary \n$0 toto\n" 
} 

# Si le nombre d'arguments est différent de 1, affiche l'usage.
if [  $# != 1 ] 
  then
    echo -e "\nArgument invalide\n" 
    # Usage
    exit 1
fi 

# Si l'usager a entré -h ou --help, affiche l'usage
if [[ "$1" == "-h" || "$1" == "--help" ]] ; then
  ## echo "Demande d'aide." 
  Usage
  exit 0
fi

# Affiche un message si l'usager n'est pas root.
if [[ $USER != "root" ]]; then 
  echo "ce script doit être roulé par l'usager root"
  exit 1
fi 

# Est-ce que l'argument pointe vers une i-bay?
if [ ! -d /home/e-smith/files/ibays/$1 ];
  then  # L'argument ne pointe pas vers une i-bay.
    echo -e "\nL'i-bay \"$1\" n'existe pas\n"
    exit 1
  else  # C'est une i-bay,
    if [ "$1" == "Primary" ]
      then    # Confirmation de l'i-bay Primary, ajuster les droits
        echo -e ""
        defaut=o
        read -p "Vous avez bien spécifié l'i-bay:  \"/home/e-smith/files/ibays/$1\"?  o/n [$defaut]: " REPONSE
        REPONSE=${REPONSE:-$defaut}
        if [[ $REPONSE == "o" || $REPONSE == "oui" || $REPONSE == "O" || $REPONSE == "Oui" ]]
          then  # i-bay Primary confirmée
            ## echo "Les commandes de: Primary"
            ## On se rend dans le répertoire racine de notre site.
            cd /home/e-smith/files/ibays/Primary/html/  2>&1
            ## On ramène le fichier readme.html du répertoire Primary.
            /bin/cp -rf ../readme.html .
            ## Répertoires wp-admin et wp-includes
            chmod -R g+w  wp-admin  wp-includes  2>&1
            ##  Sauvegarde du fichier .htaccess au-dessus du répertoire racine
            if [ -f .htaccess ]; then /bin/mv -f .htaccess ../ ; fi 2>&1
            ##
            ## Donner le droit d'écriture à tous les fichiers du répertoire racine
            /bin/find . -maxdepth 1 -type f  -exec /bin/chmod g+w {} \; 2>&1
            ## On affiche le répertoire racine
            echo -e "\n********** Répertoire racine **********"
            ls -als
            exit 0
          else  # i-bay Primary non confirmée
            echo -e "\n********** L'i-bay \"$1\" non confirmée\n"
            exit 0
        fi
      else # Est-ce une autre i-bay?
        echo -e ""
        defaut=o
        read -p "Vous avez bien spécifié l'i-bay:  \"/home/e-smith/files/ibays/$1\"?  o/n [$defaut]: " REPONSE
        REPONSE=${REPONSE:-$defaut}
        if [[ $REPONSE == "o" || $REPONSE == "oui" || $REPONSE == "O" || $REPONSE == "Oui" ]]
          then # autre i-bay confirmée
            ## echo -e "\nN'est pas Prinary\n"
            ## echo "Les commandes d'une aute i-bay (suite)"
            ## On se rend dans le répertoire racine de notre site.
            cd /home/e-smith/files/ibays/$1/html/  2>&1
            ## On ramène le fichier readme.html du répertoire Primary.
            /bin/cp -rf ../readme.html .
            ## Répertoires wp-admin et wp-includes
            chmod -R g+w  wp-admin  wp-includes  2>&1
            ##  Sauvegarde du fichier .htaccess au-dessus du répertoire racine
            if [ -f .htaccess ]; then /bin/mv -f .htaccess ../ ; fi 2>&1
            ##
            ## Donner le droit d'écriture à tous les fichiers du répertoire racine
            /bin/find . -maxdepth 1 -type f  -exec /bin/chmod g+w {} \; 2>&1
            ## On affiche le répertoire racine
            echo -e "\n********** Répertoire racine **********"               
            ls -als
            exit 0
          else   # autre i-bay non confirmée
            echo -e "\n********** L'i-bay \"$1\" non confirmée\n"
            exit 0
        fi
    fi
fi
echo "Il y a une erreur quelque part !!!"

EOT


On ajuste les droits du script droits_debut_MAJ-WP.sh.

# chmod 700 /root/droits_debut_MAJ-WP.sh

On vérifie.

# ls -ls /root/droits_debut_MAJ-WP.sh
4 -rwx------ 1 root root 4083 10 oct.  00:25 /root/droits_debut_MAJ-WP.sh


On crée le lien dans le répertoire /bin.

# ln -s /root/droits_debut_MAJ-WP.sh  /bin/droits_debut_MAJ-WP.sh

On vérifie.

# ls -als /bin/droits_debut_MAJ-WP.sh
0 lrwxrwxrwx 1 root root 28 10 oct.  00:26 /bin/droits_debut_MAJ-WP.sh -> /root/droits_debut_MAJ-WP.sh


On vérifie que le lien est bien sur le chemin des commandes (path).

# which droits_debut_MAJ-WP.sh
/bin/droits_debut_MAJ-WP.sh


Ajustement des droits et propriétés avant la mise à jour de WordPress

   En lançant le script, il faut spécifier l'i-bay dans laquelle WordPress est installé; ici ce sera Primary.

Le script demande de confirmer l'i-bay.

# droits_debut_MAJ-WP.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
/bin/cp: impossible d'évaluer « ../readme.html »: Aucun fichier ou dossier de ce type
...

Si au lieu de le déplacer, nous avions effacé le fichier readme.html au paragraphe #Fichier readme.html, le script afficherait la ligne ci-dessus et la mise à jour échouerait.


Si nous avions installé WordPress dans l'i-bay toto, on spécifierait toto.

# droits_debut_MAJ-WP.sh toto
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/toto"?  o/n [o]: [Entrée]
/bin/cp: impossible d'évaluer « ../readme.html »: Aucun fichier ou dossier de ce type
...

Si au lieu de le déplacer, nous avions effacé le fichier readme.html au paragraphe #Fichier readme.html, le script afficherait la ligne ci-dessus et la mise à jour échouerait.


Création du script droits_fin_MAJ-WP.sh

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

cat > /root/droits_fin_MAJ-WP.sh <<'EOT'
#!/bin/bash 
# Nom du script: /bin/droits_fin_MAJ-WP.sh
# Michel-André / michelandre@micronator.org / 2016-08-17_10h39
# Michel-André / michelandre@micronator.org / 2017-04-03_20h57 HAE
# Michel-André / michelandre@micronator.org / 2017-04-08_14h06 HAE

Usage() { 
  echo -e "\n"
  echo "Ce script doit être roulé par l'usager root." 
  echo -e "\nUsage:\n$0 [Nom_de_l'ibay_de_WordPress_à_MAJ]" 
  echo -e "\nExemple:\n$0 Primary \n$0 toto\n" 
} 

# Si le nombre d'arguments est différent de 1, affiche l'usage.
if [  $# != 1 ] 
  then
    echo -e "\nArgument invalide\n" 
    # Usage
    exit 1
fi 

# Si l'usager a entré -h ou --help, affiche l'usage
if [[ "$1" == "-h" || "$1" == "--help" ]] ; then
    ## echo "Demande d'aide." 
    Usage
    exit 0
fi

# Affiche message si l'usager n'est pas root.
if [[ $USER != "root" ]]; then 
  echo "ce script doit être roulé par root"
  exit 1
fi 

# Est-ce que l'argument pointe vers une i-bay?
if [ ! -d /home/e-smith/files/ibays/$1 ];
  then  # L'argument ne pointe pas vers une i-bay valide.
    echo -e "\nL'i-bay \"$1\" n'existe pas\n"
    exit 1
  else  # C'est une i-bay.
    if [ "$1" == "Primary" ]   # Est-ce l'ibay Primary?
      then   # C'est l'i-bay Primary.
        echo -e ""
        defaut=o
        read -p "Vous avez bien spécifié l'i-bay:  \"/home/e-smith/files/ibays/$1\"?  o/n [$defaut]: " REPONSE
        REPONSE=${REPONSE:-$defaut}
        if [[ $REPONSE == "o" || $REPONSE == "oui" || $REPONSE == "O" || $REPONSE == "Oui" ]]
          then  # i-bay Primary confirmée, ajuster les droits
            ## echo "Les commandes de: Primary"
            ## On se rend dans le répertoire racine de notre site.
            cd /home/e-smith/files/ibays/Primary/html/  2>&1
            ## On déplace le fichier readme.html dans le répertoire
            ## au dessus de la racine de notre site.
            /bin/mv -f readme.html ../
            ## Répertoires wp-admin et wp-includes
            chmod -R g-w  wp-admin  wp-includes  2>&1
            ##  Ramener le fichier .htaccess dans le répertoire racine
            if [ -f ../.htaccess ]; then /bin/mv -f ../.htaccess . ; fi 2>&1
            ##
            ## Enlever le droit d'écriture à tous les fichiers du répertoire racine
            /bin/find . -maxdepth 1 -type f  -exec /bin/chmod g-w {} \; 2>&1
            ## On affiche le répertoire racine
            echo -e "\n********** Répertoire racine **********"
            ls -als
            exit 0
          else  # i-bay Primary non confirmée
            echo -e "\n********** L'i-bay \"$1\" non confirmée\n"
            exit 0
        fi
      else # Confirmation que c'est une autre i-bay, ajuster les droits      
        echo -e ""
        defaut=o
        read -p "Vous avez bien spécifié l'i-bay:  \"/home/e-smith/files/ibays/$1\"?  o/n [$defaut]: " REPONSE
        REPONSE=${REPONSE:-$defaut}
        if [[ $REPONSE == "o" || $REPONSE == "oui" || $REPONSE == "O" || $REPONSE == "Oui" ]]
          then # autre i-bay confirmée
            ## echo -e "\nN'est pas Prinary\n"
            ## echo "Les commandes d'une aute i-bay (suite)"
            ## On se rend dans le répertoire racine de notre site.
            cd /home/e-smith/files/ibays/$1/html/  2>&1
            ## On déplace le fichier readme.html dans le répertoire
            ## au dessus de la racine de notre site.
            /bin/mv -f readme.html ../
            ## Répertoires wp-admin et wp-includes
            chmod -R g-w  wp-admin  wp-includes  2>&1
            ##  Ramener le fichier .htaccess dans le répertoire racine
            if [ -f ../.htaccess ]; then /bin/mv -f ../.htaccess . ; fi 2>&1
            ##
            ## Enlever le droit d'écriture à tous les fichiers du répertoire racine
            /bin/find . -maxdepth 1 -type f  -exec /bin/chmod g-w {} \; 2>&1
            ## On affiche le répertoire racine
            echo -e "\n********** Répertoire racine **********"               
            ls -als
            exit 0
          else   # autre i-bay non confirmée
            echo -e "\n********** L'i-bay \"$1\" non confirmée\n"
            exit 0
        fi
    fi
fi
echo "Il y a une erreur quelque part !!!"

EOT


On ajuste les droits du script droits_fin_MAJ-WP.sh.

# chmod 700 /root/droits_fin_MAJ-WP.sh

On vérifie.

# ls -ls droits_fin_MAJ-WP.sh
8 -rwx------ 1 root root 4228 10 oct.  00:26 droits_fin_MAJ-WP.sh


On crée le lien dans le répertoire /bin.

# ln -s /root/droits_fin_MAJ-WP.sh  /bin/droits_fin_MAJ-WP.sh

On vérifie.

# ls -als /bin/droits_fin_MAJ-WP.sh
0 lrwxrwxrwx 1 root root 26 10 oct.  00:27 /bin/droits_fin_MAJ-WP.sh -> /root/droits_fin_MAJ-WP.sh


On vérifie que le lien est bien sur le chemin des commandes (path).

# which droits_fin_MAJ-WP.sh
/bin/droits_fin_MAJ-WP.sh


Ajustement des droits et propriétés après la mise à jour de WordPress

   Après la mise à jour de WordPress, on lance le script en spécifiant l'i-bay dans laquelle WordPress est installé; ici ce sera Primary.

Le script demande de confirmer l'i-bay.

# droits_fin_MAJ-WP.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
/bin/cp: impossible d'évaluer « ../readme.html »: Aucun fichier ou dossier de ce type
...

Si au lieu de le déplacer, nous avions effacé le fichier readme.html au paragraphe #Fichier readme.html, le script afficherait la ligne ci-dessus.


Si nous avions installé WordPress dans l'i-bay toto, on spécifierait toto.

# droits_fin_MAJ-WP.sh toto
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/toto"?  o/n [o]: [Entrée]
/bin/cp: impossible d'évaluer « ../readme.html »: Aucun fichier ou dossier de ce type
...

Si au lieu de le déplacer, nous avions effacé le fichier readme.html au paragraphe #Fichier readme.html, le script afficherait la ligne ci-dessus.

Préparation & fichiers de configuration

Ajout des utilisateurs téléchargeurs

On crée les utilisateurs "téléchargeurs" car, WordPress nécessite de télécharger des fichiers tels que des extensions et des thèmes supplémentaires.

  • Vu qu'on peut installer WordPress dans l'i-bay Primary ou dans toute autre i-bay,
  • vu que Primary a le propriétaire admin et le groupe shared,
  • et vu que les autres i-bays ont admin et www;

il est alors préférable de créer un utilisateur de téléchargements pour chacun de ces deux genres d'i-bays.

L'utilisateur chargeurprim sera le téléchargeur pour l'i-bay Primary et chargeursec le sera pour toutes les autres i-bays.

Pour que ces téléchargeurs puissent avoir le droit d'écriture w dans leur i-bays respectives, il faut que leur groupe primaire soit le même que celui des i-bays dont ils ont la responsabilité des téléchargements.

Téléchargeur I-bay Groupe primaire Numéro du groupe
chargeurprim Primary shared 500
chargeursec les autres i-bays www 102


Login dans le gestionnaire Server-Manager

On se rend sur notre site en spécifiant l'adresse suivante: https://ip-du-serveur/server-manager ou https://www.Domaine_FQDN/server-manager.

 
 



 
 
  • Utilisateurs  >  Ajouter un utilisateur.
  • - Entrer les informations pour "chargeurprim".



 
 
  • On s'assure du succès de l'opération.
  • Même procédure pour "chargeursec".



 
 
  • On s'assure du succès de l'opération.
  • Réinitialiser le mot de passe de "chargeurprim".



 
 

   Il faut que le mot de passe soit composé d'au moins sept caractères avec des lettres minuscules et majuscules, des chiffres et au moins un caractère non-alphanumérique.

  • Entrer le mot de passe  >  confirmer  >  Enregistrer.
  • - On s'assure du succès de l'opération.
    - Réinitialiser le mot de passe de "chargeursec".


 
 
  • Entrer le mot de passe  >  confirmer  >  Enregistrer.
  • On s'assure du succès de l'opération.



Changement de groupe primaire

À la console du serveur, on change le groupe primaire de chargeurprim et chargeursec.

Utilisateur chargeurprim.

# usermod -g shared chargeurprim


Utilisateur chargeursec.

# usermod -g www chargeursec


On vérifie.

# cat /etc/passwd | grep chargeur
chargeurprim:x:5001:500:Telechargeur Primaire:/home/e-smith/files/users/chargeurprim:/usr/bin/rssh
chargeursec:x:5002:102:Telechargeur Secondaire:/home/e-smith/files/users/chargeursec:/usr/bin/rssh

Les deux téléchargeurs sont prêts.


Accès FTP

Pour que chargeurprim et chargeursec puissent télécharger des fichiers, il faut autoriser l'accès FTP dans Server-Manager.

  • "N'autoriser l'accès complet que depuis les réseaux locaux".
  • "N'autoriser l'authentification que depuis les réseaux locaux".
  • Enregistrer et on s'assure du succès de l'opération.


Préparation de l'i-bay

On peut utiliser n'importe quelle i-bay mais, vu que nous disposons d'un tout nouveau Serveur SME-9.2, nous allons utiliser l'i-bay Primary.


Répertoire temporaire de téléchargement

On doit spécifier un répertoire temporaire à l'i-bay Primary pour le téléchargement par WordPress de fichiers, extensions, thèmes et mises à jour.

   Ce répertoire servira pour tous les programmes PHP installés dans l'i-bay Primary et ses sous-répertoires, lorsque ceux-ci auront besoin d'un répertoire temporaire pour leurs téléchargements.

   Si ce répertoire n'existe pas, certains CMS pourraient afficher le message suivant:

Le fichier que vous voulez téléverser semble vide. Ceci peut être dû à une erreur dans le nom du fichier. Veuillez vérifier que vous désirez vraiment téléverser ce fichier.

Si on ajoute une autre installation WordPress dans une autre i-bay, il faut exécuter cette commande pour cette autre i-bay en spécifiant le nom de cette autre i-bay dans la commande.


On active la propriété.

# db accounts setprop Primary PHPBaseDir /home/e-smith/files/ibays/Primary:/tmp


On signale le changement pour qu'il devienne permanent.

# signal-event ibay-modify Primary


On vérifie.

# db accounts show Primary
Primary=ibay
    CgiBin=enabled
    Group=shared
    Modifiable=no
    Name=Primary i-bay
    PHPBaseDir=/home/e-smith/files/ibays/Primary:/tmp
    PasswordSet=no
    Passwordable=no
    PublicAccess=global
    Removable=no
    UserAccess=wr-admin-rd-group


Répertoire html

Lors de la création d'une i-bay, le système crée un fichier index.htm pour l'i-bay Primary et index.html dans les autres i-bays. Ainsi l'i-bay Primary /home/e-smith/files/ibays/Primary/html contient un fichier index.htm. On supprime ce dernier car, il entrerait en conflit avec index.php de WordPress.

On se rend dans le répertoire html de l'i-bay Primary.

# cd /home/e-smith/files/ibays/Primary/html/

On vérifie.

# pwd
/home/e-smith/files/ibays/Primary/html


Affichage du contenu du répertoire.

# ls -als
total 12
4 drwxr-s--- 2 admin shared 4096 11 oct.  11:25 .
4 drwxr-xr-x 6 root  root   4096 11 oct.  13:04 ..
4 -rw-r----- 1 admin shared  202 20 nov.   2005 /index.htm


On supprimele fichier index.htm.

# rm index.*
rm : supprimer fichier « index.htm » ? o


On vérifie.

# ls -als
total 8
4 drwxr-s--- 2 admin shared 4096 11 oct.  13:05 .
4 drwxr-xr-x 6 root  root   4096 11 oct.  13:04 .

Droits d'écriture et fichiers spéciaux

Pour l'installation, WordPress aura besoin des droits de lecture et d'écriture dans certains fichiers et répertoires. Les droits et permissions du répertoire html de même que ceux des fichiers ne permettent pas de faire ces manipulations. De plus, certaines directives du fichier .htaccess peuvent aussi interdire la modification de certains fichiers.


Fichier .htaccess

Le script droits_debut_MAJ-WP.sh, s'occupera des droits de lecture et d'écriture en plus de s'occuper du fichier .htaccess en le déplaçant temporairement au-dessus du répertoire racine du site.

Après l'installation, le script droits_fin_MAJ-WP.sh ramènera le fichier .htaccess dans le répertoire racine.


Fichier readme.html

   Pour des raisons de sécurité, le fichier readme.html ne doit pas demeurer dans le répertoire racine d'un site Wordpress car, il pourrait être lu et ainsi indiquer sa version. Les pirates informatiques se servent de la version d'un programme pour rechercher ses failles de sécurité et ainsi mieux l'attaquer.

Lors d'une mise à jour de WordPress, le fichier readme.html est nécessaire pour indiquer la version actuelle utilisée. Le script droits_debut_MAJ-WP.sh s'occupe de remettre le fichier readme.html dans le répertoire racine pour permettre la mise à jour. Après une mise à jour de WordPress, on lance le script droits_fin_MAJ-WP.sh et celui-ci sécurise le fichier readme.html en le déplaçant dans le répertoire au-dessus du répertoire racine.

   Lors de l'installation, le fichier readme.html sera dans le répertoire racine et non pas dans le répertoire au-dessus. Le script droits_debut_MAJ-WP.sh va donner le message: impossible d'évaluer « ../readme.html »: Aucun fichier ou dossier de ce type. On pourra ignorer ce message lors de l'installation.

Téléchargement de WordPress-4.6.1-fr_FR.zip

En date du 11 octobre 2018, la dernière version de WordPress est 4.9.8. Nous allons télécharger la version 4.6.1 du 2 novembre 2016 afin de démontrer la mise à jour d'une version très ancienne (4.6.x) vers une version plus plus récente (4.9.x).

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

Cliquer "zip" pour télécharger le fichier de WordPress et "md5" pour afficher la somme de contrôle du fichier "zip".

Sauvegardez le fichier "zip" sur votre poste de travail. Plus loin, nous le téléverserons sur notre Serveur SME.

 
 
  • zip, télécharge le fichier Zip de WordPress.
  • md5, télécharge la somme de contrôle MD5 du fichier ZIP.


   Utiliser digestIT 2004 pour calculer la somme de contrôle MD5 du fichier zip et vérifier que le fichier n'a pas été compromis.

Fichier zip de WordPress

On transfère le fichier zip wordpress-4.6.1-fr_FR.zip vers l'i-bay Primary du Serveur SME. On peut utiliser l'utilitaire WinSCP, FileZilla ou tout autre programme de transfert de fichiers.

   Pour le téléchargement et l'installation de WinSCP voir le Cahier-01, SME-101.01 Logiciels de la station de travail: https://wiki.contribs.org/SME-101.01_Logiciels_de_la_station_de_travail#WinSCP. Pour FileZilla voir: https://filezilla-project.org/.


Nous sommes toujours dans le répertoire racine?

# pwd
/home/e-smith/files/ibays/Primary/html


On vérifie que le fichier WordPress a bien été transféré.

# ls -als
total 8912
   4 drwxr-s--- 2 admin shared    4096 11 oct.  13:07 .
   4 drwxr-xr-x 6 root  root      4096 11 oct.  13:04 ..
8904 -rw-r--r-- 1 root  shared 9116225  2 nov.   2016 wordpress-4.6.1-fr_FR.zip


Préparation

On décompresse le fichier zip.

# unzip wordpress-4.6.1-fr_FR.zip
Archive:  wordpress-4.6.1-fr_FR.zip
   creating: wordpress/
  inflating: wordpress/wp-mail.php
...
  inflating: wordpress/wp-includes/css/buttons.min.css
  inflating: wordpress/wp-includes/css/admin-bar-rtl.css


Par sécurité, on peut transférer le fichier zip vers le répertoire supérieur, à l'extérieur du répertoire racine du site en cas d'une future ré-utilisation.

# mv wordpress-4.6.1-fr_FR.zip ../


Vérification.

# ls -als ../
total 8928
   4 drwxr-xr-x 6 root  root      4096 11 oct.  13:07 .
   4 drwxr-xr-x 3 root  root      4096 11 oct.  11:25 ..
   4 drwxr-s--- 2 admin shared    4096 11 oct.  13:04 .AppleDesktop
   4 drwxr-s--- 2 admin shared    4096 11 oct.  11:25 cgi-bin
   4 drwxr-s--- 2 admin shared    4096 11 oct.  11:25 files
   4 drwxr-s--- 3 admin shared    4096 11 oct.  13:07 html
8904 -rw-r--r-- 1 root  shared 9116225  2 nov.   2016 wordpress-4.6.1-fr_FR.zip


On affiche le contenu du répertoire html de notre i-bay.

# ls -als
total 12
4 drwxr-s--- 3 admin shared 4096 11 oct.  13:07 .
4 drwxr-xr-x 6 root  root   4096 11 oct.  13:07 ..
4 drwxr-sr-x 5 root  shared 4096  2 nov.   2016 wordpress


On transfère le contenu du répertoire wordpress vers la racine du site, c.-à-d. Primary/html. Ici on utilise le chemin complet pour éviter les erreurs.

   Faire l'ajustement nécessaire si on utilise une autre i-bay que Primary.

# mv /home/e-smith/files/ibays/Primary/html/wordpress/*  /home/e-smith/files/ibays/Primary/html


Vérification.

# ls -ls
total 192
 4 -rw-r--r--  1 root shared   418 24 sept.  2013 index.php
20 -rw-r--r--  1 root shared 19935  5 mars   2016 license.txt
12 -rw-r--r--  1 root shared  9028  2 nov.   2016 readme.html
 4 drwxr-sr-x  2 root shared  4096 11 oct.  13:08 wordpress
 8 -rw-r--r--  1 root shared  5456 24 mai    2016 wp-activate.php
 4 drwxr-sr-x  9 root shared  4096  2 nov.   2016 wp-admin
 4 -rw-r--r--  1 root shared   364 19 déc.   2015 wp-blog-header.php
 4 -rw-r--r--  1 root shared  1477 23 mai    2016 wp-comments-post.php
 4 -rw-r--r--  1 root shared  3579  2 nov.   2016 wp-config-sample.php
 4 drwxr-sr-x  5 root shared  4096  2 nov.   2016 wp-content
 4 -rw-r--r--  1 root shared  3286 24 mai    2015 wp-cron.php
12 drwxr-sr-x 17 root shared 12288  2 nov.   2016 wp-includes
 4 -rw-r--r--  1 root shared  2382 23 mai    2016 wp-links-opml.php
 4 -rw-r--r--  1 root shared  3353 14 avril  2016 wp-load.php
36 -rw-r--r--  1 root shared 34057 14 juin   2016 wp-login.php
 8 -rw-r--r--  1 root shared  7786 13 juil.  2016 wp-mail.php
16 -rw-r--r--  1 root shared 13920 13 août   2016 wp-settings.php
32 -rw-r--r--  1 root shared 29890 24 mai    2016 wp-signup.php
 4 -rw-r--r--  1 root shared  4035 30 nov.   2014 wp-trackback.php
 4 -rw-r--r--  1 root shared  3064  6 juil.  2016 xmlrpc.php


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

# rmdir wordpress/


Vérification.

# ls -lsd wordpress
ls: impossible d'accéder à wordpress: Aucun fichier ou dossier de ce type

Base de données pour WordPress

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

# mysqladmin57 CREATE WPBD


On entre dans la console mysql avec spécifiquement mysql57.

# mysql57
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.16 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql>


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

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| WPBD               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.02 sec)

mysql>


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.

mysql>  grant all on WPBD.* to usager_WPBD@localhost identified by 'mdp_WPBD';
Query OK, 0 rows affected (0.00 sec)
mysql>

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 mysqladmin57 flush privileges pour indiquer à MySQL qu'il doit recharger les droits.

mysql>  FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql>

On quitte la console MySQL.

mysql> quit;

bye
#

wp-config.php

On vérifie qu'on est toujours dans le répertoire racine de notre site.

# pwd
/home/e-smith/files/ibays/Primary/html


Il faut maintenant copier le fichier d'exemple de configuration wp-config-sample.php de WordPress vers le véritable fichier de configuration wp-config.php.

On vérifie la présence du fichier.

# ls -als wp-config-sample.php
4 -rw-r--r-- 1 root shared 3579  2 nov.   2016 wp-config-sample.php


   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.

Pour la migration d'un site WordPress voir le Cahier-7: Duplicator & migration: https://www.micronator.org/affaires/produit/micronator-101-cahier-7duplicator-migration/.

On crée le fichier de configuration wp-config.php en faisant une copie du fichier wp-config-sample.php.

# cp wp-config-sample.php wp-config.php


Vérification.

# ls -ls wp-config*
4 -rw-r--r-- 1 root shared 3579 11 oct.  13:17 wp-config.php
4 -rw-r--r-- 1 root shared 3579  2 nov.   2016 wp-config-sample.php

Édition du fichier de configuration

Il faut modifier le fichier de configuration pour spécifier, à l'installateur WordPress, les paramètres utilisés lors du #Grant (octroi de droits et permissions) dans MySQL57.

Il faut:

  • changer votre_nom_de_bdd pour WPBD
  • changer votre_utilisateur_de_bdd pour usager_WPBD
  • changervotre_mdp_de_bdd pour mdp_WPBD
  • ajouter le chemin du connecteur mysql57.sock à localhost sur la ligne de définition define('DB_HOST', 'localhost').

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 ou NotePad++.

# vi wp-config.php


Ce que le contenu du fichier doit être pour notre cas spécifique.

...
/** 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', 'localhost:/var/lib/mysql/mysql57.sock');
...


On vérifie.

# cat wp-config.php |  grep DB_
define('DB_NAME', 'WPBD');
define('DB_USER', 'usager_WPBD');
define('DB_PASSWORD', 'mdp_WPBD');
define('DB_HOST', 'localhost:/var/lib/mysql/mysql57.sock');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', );


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 encourus en laissant le préfixe par défaut

Les pirates informatiques utilisent des scripts automatisés qui tentent des injections SQL sur des failles connues de WordPress ou de certaines de ses extensions. Sachant que la base de données contient pratiquement toutes les informations du site, ces failles peuvent être exploitées pour l’une des raisons suivantes:

  • Ajouter du contenu sur le site (exemple: liens vers des sites illégaux).
  • Ajouter des commentaires pourriels.
  • Détruire le contenu du site.
  • Faire planter le site.
  • 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 des 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 utilisant le préfixe par défaut 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 pirates il faut plutôt utiliser un préfixe mélangeant des caractères et des chiffres, tel que "fym39dtz_".

   En utilisant un préfixe qui commence par "wordpress" (ex: "wordpress_fym39dtz_") il est plus facile de reconnaître les tables qui correspondent à l’installation WordPress au cas où votre base de données contiendrait d’autres tables qui ne seraient pas liées à ce CMS.


Modification dans le fichier wp-config.php

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

# sed -i 's/'wp_'/'Toto0327_'/' wp-config.php

On vérifie.

# cat wp-config.php | grep Toto0327_
$table_prefix  = 'Toto0327_';

BD de comptes

On ajuste les propriétés de la BD de comptes pour l'i-bay Primary.

   Modifiez en conséquence pour une autre i-bay.

Permettre à Apache de lire notre futur fichier .htaccess de l'i-bay Primary.

# db accounts setprop Primary AllowOverride all


Permettre à Apache de suivre les liens symboliques des répertoires.

# db accounts setprop Primary FollowSymLinks enabled


Défendre à Apache d'afficher le contenu des répertoires.

# db accounts setprop Primary Indexes disabled


On signale les modifications pour qu'elles deviennent permanentes.

# signal-event ibay-modify Primary


On vérifie.

# db accounts show Primary
Primary=ibay
    AllowOverride=all
    CgiBin=enabled
    FollowSymLinks=enabled
    Group=shared
    Indexes=disabled
    Modifiable=no
    Name=Primary i-bay
    PHPBaseDir=/home/e-smith/files/ibays/Primary:/tmp
    PasswordSet=no
    Passwordable=no
    PublicAccess=global
    Removable=no
    UserAccess=wr-admin-rd-group

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 dans tous ses sous-répertoires (qui n'ont pas de fichier .htaccess à l'intérieur). 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 les permissions du répertoire qui le contient et de 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 fonctionnalités 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. Le 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 article 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.

   Modifiez en conséquence pour une autre i-bay.

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

cat > /home/e-smith/files/ibays/Primary/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.

# chmod 640 /home/e-smith/files/ibays/Primary/html/.htaccess


On ajuste le propriétaire et le groupe.

# chown admin:shared /home/e-smith/files/ibays/Primary/html/.htaccess


On vérifie.

# ls -ls /home/e-smith/files/ibays/Primary/html/.htaccess
4 -rw-r----- 1 admin shared 265 27 mars  13:04 /home/e-smith/files/ibays/Primary/html/.htaccess


On vérifie le contenu.

# cat /home/e-smith/files/ibays/Primary/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>

   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

   Modifiez en conséquence pour une autre i-bay.

   Dans la commande, 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 >> /home/e-smith/files/ibays/Primary/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.

# tail -8 .htaccess
# **************************************
# Pour protéger le fichier wp-config
<Files wp-config.php>
 order allow,deny
 deny from all
</Files>


Protection du fichier .htaccess lui-même

   Modifiez en conséquence pour une autre i-bay.

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

cat >> /home/e-smith/files/ibays/Primary/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.

# tail -8 .htaccess
# **************************************
# Pour protéger le fichier htaccess lui-même
<Files .htaccess>
 order allow,deny
 deny from all
</Files>


Interdiction d'accès libre aux fichiers et aux répertoires

Par défaut sous Apache, lorsqu'il n'y a pas de fichier d'index, on voit dans son navigateur la liste des fichiers et des répertoires contenus sur le serveur. Le réglage ci-dessous permet d’empêcher de voir et/ou récupérer les fichiers & images qui composent notre site.

   Modifiez en conséquence pour une autre i-bay.

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

cat >> /home/e-smith/files/ibays/Primary/html/.htaccess <<'EOT'
# **************************************
# permet d’empêcher que tout le monde puisse voir et/ou récupérer
# les fichiers & images qui composent notre site.
Options All -Indexes

EOT


On vérifie le contenu.

# tail -6 .htaccess
# **************************************
# permet d’empêcher que tout le monde puisse voir et/ou récupérer
# les fichiers & images qui composent notre site.
Options All -Indexes


Duplicator

Répertoire wp-snapshots

Pour stocker les sauvegardes, l'installation de l'extension Duplicator voudra créer un dossier dans le répertoire racine hébergeant notre site WordPress.

   Le répertoire html d'une i-bay n'a pas de droit d'écriture et ainsi aucune extension n'a le droit de créer un fichier ou un répertoire directement dans la racine du site. On doit donc créer le répertoire de stockage des sauvegardes avant l'installation de notre future extension Duplicator.

On crée le répertoire.

# mkdir -p /home/e-smith/files/ibays/Primary/html/wp-snapshots/tmp


On crée aussi un fichier .htaccess dans le répertoire wp-snapshots.

# touch /home/e-smith/files/ibays/Primary/html/wp-snapshots/.htaccess


On vérifie.

# ls -als /home/e-smith/files/ibays/Primary/html/wp-snapshots/.htaccess
0 -rw-r--r-- 1 root shared 0 27 mars  13:08 /home/e-smith/files/ibays/Primary/html/wp-snapshots/.htaccess

   Plus loin, le lancement du script droits_ibay.sh va s'occuper de donner les droits nécessaires pour le répertoire wp-snapshots.


Propriétaire, groupes, droits et l'utilisateur other

Il est maintenant temps de devenir très sécuritaire.

   Il faut ajuster le propriétaire, le groupe et les droits de tous les répertoires et sous-répertoires de notre site en exécutant le script droits_ibay.sh [nom-de-l-i-bay] qu'on peut consulter au paragraphe #Création du script droits_ibay.sh. Pour l'usage de ce script, voir le paragraphe #Usage.

On sécurise notre site.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...
 4 -rw-r-----  1 admin shared   742 11 oct.  13:22 .htaccess
 4 -rw-r-----  1 admin shared   418 24 sept.  2013 index.php
20 -rw-r-----  1 admin shared 19935  5 mars   2016 license.txt
12 -rw-r-----  1 admin shared  9028  2 nov.   2016 readme.html
 8 -rw-r-----  1 admin shared  5456 24 mai    2016 wp-activate.php
 4 drwxr-s---  9 admin shared  4096  2 nov.   2016 wp-admin
 4 -rw-r-----  1 admin shared   364 19 déc.   2015 wp-blog-header.php
 4 -rw-r-----  1 admin shared  1477 23 mai    2016 wp-comments-post.php
 4 -rw-r-----  1 admin shared  3580 11 oct.  13:20 wp-config.php
...

Installation de WordPress

Prérequis

L'installation est considérée comme une mise à jour de WordPress car, elle manipule les fichiers de configuration. Donc, on exécute le script droits_debut_MAJ-WP.sh [nom-de-l-i-bay].

# droits_debut_MAJ-WP.sh Primary
Vous avez bien spécifié l'i-bay: "/home/e-smith/files/ibays/Primary"? o/n [o]: [RETOUR]

/bin/cp: impossible d'évaluer « ../readme.html »: Aucun fichier ou dossier de ce type
...
12 -rw-rw---- 1 admin shared 9028 23 févr. 21:34 readme.html
...

   Le message est dû à ce que le fichier readme.html est dans le répertoire racine au lieu d'être dans celui au-dessus de celui-ci.


Lancement de l'installation

 

Pour lancer l'installation de WordPress, on indique l'URL de notre site: https://www.micronator-101.com/.

L'URL changera pour:https://www.micronator-101.com/wp-admin/install.php


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

Six (6) mises à jour sont disponibles dont la version WordPress-4.9.8. 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-101.com. 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 à: https://www.micronator-101.com/readme.html pour afficher le fichier readme.html de WordPress.

Ce fichier affiche le numéro de version de notre WordPress. Comme expliqué plus haut, la version d’un site ou d’un logiciel est une des informations que les pirates informatiques préfèrent car, connaître la version leur permet de savoir s’il existe des vulnérabilités connues et exploitables.

Si vous n’avez pas tenu à jour votre site, une version antérieure présentera des failles connues et donc, des moyens faciles d'en craquer l'accès.

Droits et permissions

Script droits_fin_MAJ-WP.sh

   Après l'installation, la sécurité étant notre principale préoccupation, on enlève les droits d'écriture donnés avant l'installation de WordPress et on ramène le fichier .htaccess en exécutant le script droits_fin_MAJ-WP.sh [nom-de-l-i-bay].

# droits_fin_MAJ-WP.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]

********** Répertoire racine **********
total 196
 4 drwxr-s---  6 admin shared  4096 11 oct.  13:33 .
 4 drwxr-xr-x  6 root  root    4096 11 oct.  13:33 ..
 4 -rw-r-----  1 admin shared   742 11 oct.  13:22 .htaccess
 4 -rw-r-----  1 admin shared   418 24 sept.  2013 index.php
20 -rw-r-----  1 admin shared 19935  5 mars   2016 license.txt
 8 -rw-r-----  1 admin shared  5456 24 mai    2016 wp-activate.php
 4 drwxr-s---  9 admin shared  4096  2 nov.   2016 wp-admin
 4 -rw-r-----  1 admin shared   364 19 déc.   2015 wp-blog-header.php
 4 -rw-r-----  1 admin shared  1477 23 mai    2016 wp-comments-post.php
 4 -rw-r-----  1 admin shared  3580 11 oct.  13:20 wp-config.php
 4 -rw-r-----  1 admin shared  3579  2 nov.   2016 wp-config-sample.php
 4 drwxrws---  5 admin shared  4096 11 oct.  13:32 wp-content
 4 -rw-r-----  1 admin shared  3286 24 mai    2015 wp-cron.php
12 drwxr-s--- 17 admin shared 12288  2 nov.   2016 wp-includes
 4 -rw-r-----  1 admin shared  2382 23 mai    2016 wp-links-opml.php
 4 -rw-r-----  1 admin shared  3353 14 avril  2016 wp-load.php
36 -rw-r-----  1 admin shared 34057 14 juin   2016 wp-login.php
 8 -rw-r-----  1 admin shared  7786 13 juil.  2016 wp-mail.php
16 -rw-r-----  1 admin shared 13920 13 août   2016 wp-settings.php
32 -rw-r-----  1 admin shared 29890 24 mai    2016 wp-signup.php
 4 drwxrws---  3 admin shared  4096 11 oct.  13:23 wp-snapshots
 4 -rw-r-----  1 admin shared  4035 30 nov.   2014 wp-trackback.php
 4 -rw-r-----  1 admin shared  3064  6 juil.  2016 xmlrpc.php


Fichier readme.html

   Nous aurions pu effacer le fichier readme.html mais, lors d'une mise à jour, WordPress a besoin de celui-ci.

Le script droits_fin_MAJ-WP.sh le déplace dans le répertoire au dessus de la racine de WordPress, c.-à-d. /home/e-smith/files/ibays/Primary/.

On vérifie.

# ls -ls /home/e-smith/files/ibays/Primary/readme.html
12 -rw-rw---- 1 admin shared 9028  2 nov.   2016 /home/e-smith/files/ibays/Primary/readme.html

   Avant une mise à jour de WordPress, le script droits_debut_MAJ-WP.sh remet le fichier readme.html dans le répertoire racine de WordPress, c.-à-d. /home/e-smith/files/ibays/Primary/html. Le script s'occupe de faire les ajustements nécessaires pour une autre i-bay.


Fichier .htaccess

Comme on peut le voir, le fichier .htaccess a été remis en place.


Script droits_ibay.sh Primary

   Après toutes mises à jour, installations de thèmes ou d'extensions, il est obligatoire de lancer le script droits_ibay.sh Primary pour s'assurer que tous les droits et permissions soient ce qu'ils devraient être.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]

...
********** Répertoire racine **********
total 196
 4 drwxr-s---  6 admin shared  4096 11 oct.  13:33 .
 4 drwxr-xr-x  6 root  root    4096 11 oct.  13:33 ..
 4 -rw-r-----  1 admin shared   742 11 oct.  13:22 .htaccess
 4 -rw-r-----  1 admin shared   418 24 sept.  2013 index.php
20 -rw-r-----  1 admin shared 19935  5 mars   2016 license.txt
 8 -rw-r-----  1 admin shared  5456 24 mai    2016 wp-activate.php
 4 drwxr-s---  9 admin shared  4096  2 nov.   2016 wp-admin
 4 -rw-r-----  1 admin shared   364 19 déc.   2015 wp-blog-header.php
 4 -rw-r-----  1 admin shared  1477 23 mai    2016 wp-comments-post.php
 4 -rw-r-----  1 admin shared  3580 11 oct.  13:20 wp-config.php
 4 -rw-r-----  1 admin shared  3579  2 nov.   2016 wp-config-sample.php
 4 drwxrws---  5 admin shared  4096 11 oct.  13:32 wp-content
 4 -rw-r-----  1 admin shared  3286 24 mai    2015 wp-cron.php
12 drwxr-s--- 17 admin shared 12288  2 nov.   2016 wp-includes
 4 -rw-r-----  1 admin shared  2382 23 mai    2016 wp-links-opml.php
 4 -rw-r-----  1 admin shared  3353 14 avril  2016 wp-load.php
36 -rw-r-----  1 admin shared 34057 14 juin   2016 wp-login.php
 8 -rw-r-----  1 admin shared  7786 13 juil.  2016 wp-mail.php
16 -rw-r-----  1 admin shared 13920 13 août   2016 wp-settings.php
32 -rw-r-----  1 admin shared 29890 24 mai    2016 wp-signup.php
 4 drwxrws---  3 admin shared  4096 11 oct.  13:23 wp-snapshots
 4 -rw-r-----  1 admin shared  4035 30 nov.   2014 wp-trackback.php
 4 -rw-r-----  1 admin shared  3064  6 juil.  2016 xmlrpc.php


Répertoire wp-content

Le répertoire wp-content est le seul avec wp-snapshots à posséder un droit d'écriture pour le groupe (shared/www). Ce droit d'écriture est nécessaire pour permettre, lors d'une installation d'extension/thème, de pouvoir créer des répertoires et des fichiers. Le droit d'écriture de wp-snapshots permet à l'extension Duplicator d'y déposer ses sauvegardes du site.

Mise à jour

Avis #1

Référence: 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 corrections 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: http://www.maintpress.com/blog/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 aussi 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 bugs de la précédente tout en apportant de nouvelles fonctionnalités qui facilitent votre travail de publication au quotidien.

WordPress 4.0 inclut par exemple:

  • Un éditeur plus intelligent dont la taille s’adapte à votre travail
  • Des outils de mise en forme toujours accessibles
  • Une intégration exceptionnelle des vidéos YouTube et des Tweets
  • Une mise en page fluide de la bibliothèque de médias

Pourquoi se passer d’une expérience-utilisateur plus agréable? Les mises à jour servent aussi à cela.

Vous renforcez la sécurité de votre installation

Une étude a montré que 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: https://www.wpbeginner.com/beginners-guide/ultimate-guide-to-upgrade-wordpress-for-beginners-infograph/?display=wide.

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 bugs 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: 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 sûr que tout se passera bien, il y a plusieurs solutions:

  • Se renseigner: Il existe des forums spécialisés où les utilisateurs WP viennent s'exprimer. Comme beaucoup de gens qui mettent à jour directement sans se poser de questions et sans prendre de précautions, on arrive très rapidement (après la sortie de la mise à jour) de voir les premiers problèmes que cela peut générer: compatibilité des extensions, réglages, etc. Vous pouvez donc en profitez pour détecter les éventuels problèmes que cela pourrait entraîner sur votre site.
  • Vérifier! Il n'y a pas de meilleure solution que la vérification. Je 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 VirtualBox.

   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-7: Duplicator & migration: https://www.micronator.org/affaires/produit/micronator-101-cahier-7duplicator-migration/.

  • Installez toutes les mises à jour sur le WordPress virtuel et vérifiez tout au complet.
  • Sur votre site réel, installez seulement les mises à jours qui fonctionnent sans problèmes sur votre site virtuel.


Mise en garde

   Il faut obligatoirement toujours utiliser le bon usager téléchargeur.


Sauvegarde avec Duplicator

Avant une mise à jour de WordPress (surtout pour un saut de plusieurs version: WordPress-4.6.1 vers WordPress-4.9.8), on devrait sauvegarder notre site, voir le Cahier-7: Duplicator & migration: https://www.micronator.org/affaires/produit/micronator-101-cahier-7duplicator-migration/.


Droits, permissions et sécurité

Avant une mise à jour de WordPress, on exécute le script droits_debut_MAJ-WP.sh.

# droits_debut_MAJ-WP.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée] 

********** Répertoire racine **********
total 204
 4 drwxr-s---  6 admin shared  4096 11 oct.  14:22 .
 4 drwxr-xr-x  6 root  root    4096 11 oct.  14:22 ..
 4 -rw-rw----  1 admin shared   418 24 sept.  2013 index.php
20 -rw-rw----  1 admin shared 19935  5 mars   2016 license.txt
12 -rw-rw----  1 root  shared  9028 11 oct.  14:22 readme.html
 8 -rw-rw----  1 admin shared  5456 24 mai    2016 wp-activate.php
 4 drwxrws---  9 admin shared  4096  2 nov.   2016 wp-admin
 4 -rw-rw----  1 admin shared   364 19 déc.   2015 wp-blog-header.php
 4 -rw-rw----  1 admin shared  1477 23 mai    2016 wp-comments-post.php
 4 -rw-rw----  1 admin shared  3552 11 oct.  13:20 wp-config.php
 4 -rw-rw----  1 admin shared  3579  2 nov.   2016 wp-config-sample.php
 4 drwxrws---  6 admin shared  4096 11 oct.  13:32 wp-content
 4 -rw-rw----  1 admin shared  3286 24 mai    2015 wp-cron.php
12 drwxrws--- 17 admin shared 12288  2 nov.   2016 wp-includes
 4 -rw-rw----  1 admin shared  2382 23 mai    2016 wp-links-opml.php
 4 -rw-rw----  1 admin shared  3353 14 avril  2016 wp-load.php
36 -rw-rw----  1 admin shared 34057 14 juin   2016 wp-login.php
 8 -rw-rw----  1 admin shared  7786 13 juil.  2016 wp-mail.php
16 -rw-rw----  1 admin shared 13920 13 août   2016 wp-settings.php
32 -rw-rw----  1 admin shared 29890 24 mai    2016 wp-signup.php
 4 drwxrws---  3 admin shared  4096 11 oct.  13:23 wp-snapshots
 4 -rw-rw----  1 admin shared  4035 30 nov.   2014 wp-trackback.php
 4 -rw-rw----  1 admin shared  3064  6 juil.  2016 xmlrpc.php

Le fichier readme.html est de retour et le fichier .htaccess a disparu; il a été sauvegardé dans le répertoire au-dessus de la racine. De plus, tous les fichiers du répertoire racine ont le droit d'écriture (w); il en est de même pour tous les répertoires.

Mise à jour de WordPress

 
 
  • Tableau de bord  >  Mise à jour  >  "Mise à jour de WordPress"  >  Mettre à jour maintenant.
  • Entrer les informations requises  >  Continuer.



 
 
 
  • Le téléchargement et la décompression peuvent prendre quelques minutes, il faut être patient!
  • On peut consulter les notes de publication.
  • Avec la souris, survoler le "Titre du site" pour dérouler le menu  >  Aller sur le site.


Droits et permissions après la mise à jour

   Après une mise à jour du coeur de WordPress, on exécute toujours le script script droits_fin_MAJ-WP.sh.

# droits_fin_MAJ-WP.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]

********** Répertoire racine **********
total 204
 4 drwxr-s---  6 admin shared  4096 11 oct.  14:26 .
 4 drwxr-xr-x  6 root  root    4096 11 oct.  14:26 ..
 4 -rw-r-----  1 admin shared   742 11 oct.  13:22 .htaccess
 4 -rw-r-----  1 admin shared   418 24 sept.  2013 index.php
20 -rw-r-----  1 admin shared 19935 11 oct.  14:25 license.txt
 8 -rw-r-----  1 admin shared  5458 11 oct.  14:25 wp-activate.php
 4 drwxr-s---  9 admin shared  4096 11 oct.  14:25 wp-admin
 4 -rw-r-----  1 admin shared   364 19 déc.   2015 wp-blog-header.php
 4 -rw-r-----  1 admin shared  1889 11 oct.  14:25 wp-comments-post.php
 4 -rw-r-----  1 admin shared  3580 11 oct.  13:20 wp-config.php
 4 -rw-r-----  1 admin shared  3581 11 oct.  14:25 wp-config-sample.php
 4 drwxrws---  7 admin shared  4096 11 oct.  14:25 wp-content
 4 -rw-r-----  1 admin shared  3669 11 oct.  14:25 wp-cron.php
12 drwxr-s--- 18 admin shared 12288 11 oct.  14:25 wp-includes
 4 -rw-r-----  1 admin shared  2422 11 oct.  14:25 wp-links-opml.php
 4 -rw-r-----  1 admin shared  3306 11 oct.  14:25 wp-load.php
40 -rw-r-----  1 admin shared 37794 11 oct.  14:25 wp-login.php
 8 -rw-r-----  1 admin shared  8048 11 oct.  14:25 wp-mail.php
16 -rw-r-----  1 admin shared 16246 11 oct.  14:25 wp-settings.php
32 -rw-r-----  1 admin shared 30091 11 oct.  14:25 wp-signup.php
 4 drwxrws---  3 admin shared  4096 11 oct.  13:23 wp-snapshots
 8 -rw-r-----  1 admin shared  4620 11 oct.  14:25 wp-trackback.php
 4 -rw-r-----  1 admin shared  3065 11 oct.  14:25 xmlrpc.php

Le fichier .htaccess est de retour et readme.html a été transféré au-dessus du répertoire racine. Les fichiers et répertoires ont perdu leur droit d'écriture sauf évidemment, wp-content et wp-snapshots.

Mise à jour des extensions

 
 

Tableau de bord  >  Mise à jour  >  Sous "Extensions", Tout sélectionner  >  Mise à jour des extensions  >  entrer les paramètres de connexion  >  Continuer.


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



Droits et permissions

   Après une mise à jour d'une ou plusieurs extensions, on exécute toujours le script droits_ibay.sh.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...

Mise à jour des thèmes

 
 
  • Tableau de bord  >  Mises à jour  >  Sous "Thèmes", Tout sélectionner  >  Mettre à jour les thèmes.
  • - TOUJOURS localhost.
    - Entrer les informations requises  >  Continuer.



 
 
  • Les téléchargements et les décompressions peuvent prendre un certain temps, il faut être patient!
  • Tout est à date.



Droits et permissions

   Après une mise à jour d'un ou plusieurs thèmes, on exécute toujours le script droits_ibay.sh.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...
WordPress est à date et nous sommes toujours très sécuritaires.


Principaux réglages recommandés

Général

 
 
  • - Tableau de bord  >  Réglages  >  "Réglages généraux".
    - On peut changer le Slogan de notre site et ajuster l'adresse courriel qui recevra les messages de WordPress.
  • Langue du site et Fuseau horaire.



 
 
  • "Format de la date", "Format d'heure" et "La semaine débute le"  >  Enregistrer les modification.
  • On s'assure du succès de l'enregistrement des réglages.



 

Écriture

Service de mise à jour

On n'utilise pas le service de notification, on supprime tout  >  Enregistrer les modifications et 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 et on s'assure du succès de l'opération.



 

Choisir sa structure de permaliens

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

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

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.

  • - Cocher Nom de l'article.
    - Enregistrer les modifications.



 

   Si WordPress ne peut mettre à jour votre fichier .htaccess automatiquement, il affichera au bas de l'écran:

"Si vous aviez les droits en écriture sur le fichier .htaccess, nous pourrions faire cela automatiquement. Ce n’est pas le cas, donc voici les règles de réécriture que vous devrez mettre dans votre fichier .htaccess. Cliquez sur le champ et appuyez sur [Ctrl-a] pour tout sélectionner".



 

   Ce message en bas de la page est normal car, nous avons donné le droit d'écriture à root (admin) seulement et nous avons déjà ajouté les paramètres nécessaires pour les permaliens au fichier .htaccess. On peut donc ignorer ce message.

Lorsqu'on choisit "Nom de l'article" comme structure de permaliens, si on déplaçait la souris au-dessus d'un lien sur notre site, l'URL du lien s'afficherait en bas de l'écran avec le nom de la page pointée par ce dernier.

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.


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

Pour s'assurer que tout fonctionne bien, nous allons ajouter l'extension Duplicator et le thème Storefront.

Connexion

Si nous ne sommes pas connectés à WordPress, on se rend à notre site: https://FQDN_ou_IP_du_site/.

 
 
  • Sur notre site, en bas à droite, on clique Connexion.
  • On entre les informations demandées.  >  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 simplement.


Duplicator vous permet de:

  • Déplacer un site d’un domaine à un autre ou d’un hébergeur à un autre.
  • Récupérer un site en ligne et le restaurer localement sur une machine virtuelle pour la vérification de nouveaux thèmes/extensions et le développement de nouveaux paramètres CSS.
  • Sauvegarder manuellement un site.
  • Dupliquer un site en production vers un site de pré-production et vice-versa.
  • "Packager" un site WordPress entier pour le ré-utiliser ou le distribuer.


Déplacement et sauvegarde

Duplicator crée un "paquet" qui contient le contenu du site, sa base de données, les thèmes, extensions et fichiers du coeur 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 sauvegarde, déplacements et migrations de WordPress sont très complexes. Il est impossible de connaître chaque configuration système.


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 des ressources Duplicator (en anglais seulement).


Répertoire wp-snapshots

Ce répertoire a déjà été créé au paragraphe #Répertoire wp-snapshots.


Installation

 
 
  • Tableau de bord  >  Extensions  >  Ajouter  >  "Mot clé" Duplicator  >  Installer.
  • On entre les informations demandées.  >  Continuer.



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



Propriétaire, groupe, droits et permissions

Nous avons installé une nouvelle extension. Il faut ajuster le propriétaire, le groupe, les droits et permissions pour l'i-bay complète.

   Ajuster selon l'i-bay utilisée.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...
4 drwxrws---  5 admin shared  4096 10 oct.  13:54 wp-content

4 drwxrws---  3 admin shared  4096 10 oct.  13:54 wp-snapshots
...

   Il faut que le groupe ait le droit d'écriture (w) dans les arborescences wp-content et wp-snapshots.


 
 

Configuration

  • Un nouveau menu a été créé dans le Tableau de bord  >  Duplicator  >  Outils.
  • - Cliquer les titres pour les dérouler.
    - Tous les composants et paramètres de notre site sont affichés.

    WordPress est à la version 4.9.8.
    PHP est bien à la version 7.1.16
    MySQL est bien à la version 5.7.16.
    On peut voir la "Limite de mémoire" que nous avons définie précédemment.
    Le Chemin du mysqldump sera ajusté ci-dessous.



 

On cherche le chemin de mysqldump57.

# which mysqldump57

 
alias mysqldump57=/opt/rh/rh-mysql57/root/usr/bin/mysqldump --socket=/var/lib/mysql/mysql57.sock
/opt/rh/rh-mysql57/root/usr/bin/mysqldump

      
- Duplicator  >  Réglages  >  onglet Paquets.
- "Mysqldump"  >  "Chemin personnalisé"  >  On entre le chemin de la commande trouvé ci-dessus: /opt/rh/rh-mysql57/root/usr/bin/mysqldump
- Enregistrer les réglages du paquet.


 
 
  • On s'assure du succès de l'opération.
  • Mysqldump a trouvé le chemin de la commande mysqldump57.



 
 

Abonnement à l'infolettre

  • - 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 confirme en répondant à celui-ci.



 
 

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  >  Storefront.
  • On passe la souris au-dessus du thème pour faire apparaître les boutons  >  Installer.



 
 
  • On entre les informations demandées.  >  Continuer.
  • On s'assure du succès de l'opération  >  Activer  >  On se rend sur notre site pour examiner le nouveau thème.



 
  • Le thème a été installé et apparaît sur notre page principale.


Droits, permissions et sécurité

   Après l'installation ou la mise à jour d'un ou plusieurs thèmes ou extensions, on exécute toujours le script droits_ibay.sh. Ajuster selon l'i-bay utilisée.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...
Le thème Storefront est installé, activé et fonctionne correctement.

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 en existe des milliers 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. Elle contient principalement des fichiers PHP, mais peut aussi avoir des feuilles de style, des images, du JavaScript…

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. https://fr.wordpress.org/plugins/tinymce-advanced/.


 
 
  • Tableau de bord  >  Extensions  >  Ajouter  >  "Mot-clé" TinyMCE Advanced  >  Installer.
  • Entrer les informations demandées.  >  Continuer.



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



Droits et permissions

   Après l’installation d’une nouvelle extension, on ajuste les droits et permissions. On exécute le script droits_ibay.sh.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entré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.



 
 
 

Exclude Pages From Menu

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.
  • Référence: https://fr.wordpress.org/plugins/exclude-pages-from-menu/.
    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.
  • Entrer les informations demandées.  >  Continuer.



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



Droits et permissions

   Après l’installation d’une nouvelle extension, on ajuste les droits et permissions. On exécute le script droits_ibay.sh.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...


 
 

Usage

  • "Page d'exemple" est visible sur la barre du menu du site.
  • - Pages  >  Toutes les pages.
    - On survole le titre de la page avec la souris.
    - Modifier.



 
 
 
  • On coche "Exclude this page from menu".
  • En haut à droite, Mettre à jour.
  • Le titre de la page d'exemple n'apparaît plus sur la barre du menu principal.


 
 

Broken Link Checker

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.


 
 
  • Tableau de bord  >  Extensions  >  Ajouter  >  "Mot-clé" Broken Link Checker  >  Installer.
  • Entrer les informations demandées.  >  Continuer.



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



Droits et permissions

   Après l’installation d’une nouvelle extension, on ajuste les droits et permissions. On exécute le script droits_ibay.sh.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...


 
 

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.



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.



 
 

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.


 
 
  • Tableau de bord  >  Extensions  >  Ajouter  >  "Mot-clé" Contact Form 7  >  Installer.
  • Entrer les informations demandées.  >  Continuer.



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



Droits et permissions

   Après l’installation d’une nouvelle extension, on ajuste les droits et permissions. On exécute le script droits_ibay.sh.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...


 


 

 

 

  • Contact  >  Créer un formulaire  >  Onglet Formulaire  >  Entrer les informations requises  >  Enregistrer.
  • On s'assure que le "Formulaire de contact" a bien été créé.
  • - Onglet E-mail.
    - Entrer les informations requises.
    - Modifier l'anglolâtrie aplaventriste "email" pour le terme québécois pour courrier électronique, c.-à-d. courriel.
    - Enregistrer.
  • On s'assure que le "Formulaire de contact" a bien été sauvegardé.



 

 

 
  • - Onglet Messages.
    - Corriger la sémantique, si nécessaire.
    - Sauvegarder.
  • S'assurer que le formulaire a bien été sauvegardé.
  • Le code court de ce formulaire est: [contact-form-7 id="12" title="Contacter le webmestre"].


C'est cette ligne de code [contact-form-7 id="12" title="Contacter le webmestre"] qu'il faut entrer sur une page pour qu'elle affiche ce formulaire de contact.

Le numéro d'identification id="12" peut être différent selon le cas.


Page pour le formulaire de contact

On crée une page pour afficher le formulaire (on peut utiliser le même nom pour le formulaire et la page).


 
 
  • Après la publication, cliquer Prévisualiser les modifications pour afficher le formulaire.
  • Le formulaire s'affiche.



 
 

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 tel Facebook, Twitter, etc.


 
 

Installation

  • Tableau de bord  >  Extensions  >  Ajouter  >  "Mot-clé" MaxButtons  >  Installer.
  • Entrer les informations demandées.  >  Continuer.



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



Droits et permissions

   Après l’installation d’une nouvelle extension, on ajuste les droits et permissions. On exécute le script droits_ibay.sh.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...

Conditions d'utilisation

   Il est préférable d'avoir une page énonçant les conditions d'utilisation de notre site.

Création de la page des conditions d'utilisation

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

Nous allons modifier l'apparence de notre site en utilisant un Thème enfant et les feuilles de style 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:

  • Si vous modifiez un thème existant et qu'il était mis à jour, vos modifications seraient perdues.
  • Utiliser un Thème enfant vous assure que vos modifications seront préservées.
  • Utiliser un Thème enfant accélère le temps de développement.
  • Utiliser un Thème enfant est une 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 ait pas d'espaces ni de caractère accentués 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.

# cd /home/e-smith/files/ibays/Primary/html/wp-content/themes/


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

# mkdir storefront-enfant

On vérifie.

# ls -alsd storefront-enfant/
4 drwxr-sr-x 2 root shared 4096 11 oct.  16:50 storefront-enfant/

   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-101.com/
 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 comme on le fait habituellement en français 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 la variable de 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-101.com/
 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
*/

EOT


On vérifie.

# cat storefront-enfant/style.css
/*
 Theme Name:   Storefront Enfant
 Theme URI:    http://www.micronator-101.com/
 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 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 réellement 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 parent et enfant. La méthode anciennement utilisée était d'importer la feuille de style du Thème parent utilisant @import:. Ce 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.-à-d. 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 correctement.

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.

# ls -als storefront/*.css
40 -rw-rw---- 1 admin shared 39886 11 oct.  15:09 storefront/style.css
40 -rw-rw---- 1 admin shared 39877 11 oct.  15:09 storefront/style-rtl.css

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.


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.

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

?>

   Il n'y a pas de ligne vide au dessus de <?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 1200x900. Elle ne sera affichée que sous 387x290 mais ainsi, la grandeur d'origine permettra 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 de l'image dans le répertoire du Thème enfant et on active ce dernier.


Droits et permissions

   Nous avons ajouté de nouveaux fichiers, on ajuste les droits et permissions. On exécute le script droits_ibay.sh.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...

On est maintenant prêt pour modifier certaines déclarations CSS de notre site.


Pied de page

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

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


Pied de page après les modifications.

Logo

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

# pwd
/home/e-smith/files/ibays/Primary/html/wp-content/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é.

# mkdir -p /home/e-smith/files/ibays/Primary/html/Ut/Images/Logo


On vérifie.

# ls -alsd /home/e-smith/files/ibays/Primary/html/Ut/Images/Logo/
4 drwxr-sr-x 2 root shared 4096 11 oct.  17:07 /home/e-smith/files/ibays/Primary/html/Ut/Images/Logo/


   On téléverse notre logo, à l'aide de WinSCP ou de FileZilla, dans le répertoire: /home/e-smith/files/ibays/Primary/html/Ut/Images/Logo/.

On vérifie le téléversement.

# ls -als ../../Ut/Images/Logo/logo_RF-232_transparent_BT.png
20 -rw-r----- 1 admin shared 16544 28 mars  12:06 ../../Ut/Images/Logo/logo_RF-232_transparent_BT.png


Fichier footer.php

Copie du fichier footer.php dans le répertoire du Thème enfant.

# cp storefront/footer.php  storefront-enfant/


On vérifie.

# ls -ls storefront-enfant/footer.php
4 -rw-r----- 1 root shared 734 28 mars  12:12 storefront-enfant/footer.php


On affiche le fichier footer.php.

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


   Nous remplaçons le texte en rouge ci-dessus par celui en vert et en magenta ci-dessous.


On vérifie.

# 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'); ?> ©
            <?php echo date("Y"); ?>     
            <?php _e( 'Tous droits réservés'); ?>     
            <span><?php bloginfo('name')?></span>     
            <em>
              <a href="/conditions-dutilisation"
                style="text-decoration: underline; color: #0000ff;"
                target="_blank"
                title="Conditions d'Utilisation">Conditions d'utilisation</a>
                  
            </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>


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


Droits et permissions

   On ajuste les droits et permissions pour le nouveau répertoire et fichiers. On exécute le script droits_ibay.sh.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...


 

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.

# pwd
/home/e-smith/files/ibays/Primary/html/wp-content/themes


On ajoute (>>) la nouvelle déclaration 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.

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


On affiche une page du site.


Logo et slogan

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


Fichier style.css

   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.

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


Fichier functions.php

   On ajoute le contenu de l'encadré ci-dessus 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: 22%; text-align: left; vertical-align: top; padding: 0px; "><a title="Page principale" href="/"><img class="alignleft" src="/Ut/Images/EN-TETE/logo_Micronator_250x65_res_1200x1200_TB.png" alt="Page principale" width="250" height="65" /></a></td>
            <td style="text-align: right; vertical-align: top; width: 68%; padding: 0px; "><img class="alignright" src="/Ut/Images/EN-TETE/Reseau_complet_avec_clone_TB-OK_800.png" alt="Réseau Micronator" width="800" height="162" /></td>
          </tr>
        </tbody>
       </table>
    </div>
  <?php
}

?>


On vérifie.

# 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: 22%; text-align: left; vertical-align: top; padding: 0px; "><a title="Page principale" href="/"><img class="alignleft" src="/Ut/Images/EN-TETE/logo_Micronator_250x65_res_1200x1200_TB.png" alt="Page principale" width="250" height="65" /></a></td>
            <td style="text-align: right; vertical-align: top; width: 68%; padding: 0px; "><img class="alignright" src="/Ut/Images/EN-TETE/Reseau_complet_avec_clone_TB-OK_800.png" alt="Réseau Micronator" width="800" height="162" /></td>
          </tr>
        </tbody>
       </table>
    </div>
  <?php
}

?>


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

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

# mkdir -p /home/e-smith/files/ibays/Primary/html/Ut/Images/EN-TETE/


On vérifie.

# ls -alsd /home/e-smith/files/ibays/Primary/html/Ut/Images/EN-TETE/
4 drwxr-sr-x 2 root shared 4096 11 oct.  17:22 ../../Ut/Images/EN-TETE/


   À l'aide de WinSCP ou de FileZilla, on téléverse les images nécessaires dans le répertoire:/home/e-smith/files/ibays/Primary/html/Ut/Images/EN-TETE/.

On vérifie.

# ls -ls /home/e-smith/files/ibays/Primary/html/Ut/Images/EN-TETE/
total 144
 28 -rw-r--r-- 1 root shared  26620  8 mai    2017 logo_Micronator_250x65_res_1200x1200_TB.png
116 -rw-r--r-- 1 root shared 118312 28 mars  12:48 Reseau_complet_avec_clone_TB-OK_800.png


Droits et permissions

   On ajuste les droits et permissions. On exécute le script droits_ibay.sh.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...


Notre nouvel en-tête s'affiche tel que voulu.


Conclusion de l'utilisation du Thème enfant

En utilisant un Thème enfant, on peut modifier le code CSS de notre site sans craindre qu'une mise à jour écrase les 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é.


Mise à jour des Collections Red Hat

Les Contribs peuvent être mises à jour à la console du serveur.

PHP

Lancement de la mise à jour

Référence: https://wiki.contribs.org/PHP_Software_Collections#Update.

# yum update -y smeserver-php-scl php54* php55* php56* php70* php71* --enablerepo=smecontribs
Modules complémentaires chargés : fastestmirror, smeserver
...

============================================================================================
 Paquet                    Architecture  Version                     Dépôt            Taille
============================================================================================
Mise à jour:
 php54-php-pear            noarch        1:1.10.4-1.el6.remi         remi-safe        369 k
 php54-php-pecl-zip        x86_64        1.14.0-1.el6.remi           remi-safe         39 k
 php55-php-pear            noarch        1:1.10.4-1.el6.remi         remi-safe        369 k
 php55-php-pecl-zip        x86_64        1.14.0-1.el6.remi           remi-safe         39 k
 php56-php-pear            noarch        1:1.10.4-1.el6.remi         remi-safe        369 k
 php56-php-pecl-zip        x86_64        1.14.0-1.el6.remi           remi-safe         39 k

Résumé de la transaction
============================================================================================
Mise à jour de     6 paquet(s)

Taille totale des téléchargements : 1.2 M
Téléchargement des paquets :
(1/6): php54-php-pear-1.10.4-1.el6.remi.noarch.rpm                   | 369 kB     00:01
(2/6): php54-php-pecl-zip-1.14.0-1.el6.remi.x86_64.rpm               |  39 kB     00:00
...
Lancement de la transaction
  Mise à jour   : php54-php-pecl-zip-1.14.0-1.el6.remi.x86_64                          1/12
  Mise à jour   : 1:php54-php-pear-1.10.4-1.el6.remi.noarch                            2/12
...
Mis à jour :
  php54-php-pear.noarch 1:1.10.4-1.el6.remi  php54-php-pecl-zip.x86_64 0:1.14.0-1.el6.remi
  php55-php-pear.noarch 1:1.10.4-1.el6.remi  php55-php-pecl-zip.x86_64 0:1.14.0-1.el6.remi
  php56-php-pear.noarch 1:1.10.4-1.el6.remi  php56-php-pecl-zip.x86_64 0:1.14.0-1.el6.remi

   Ci-dessus, seules des mises à jour pour PHP54/55/56 étaient disponibles et aucune pour PHP70/71.

   On peut omettre l'option -y et yum demandera si on veut mette a jour. Il suffit de répondre o ou n pour oui ou non.


   Si aucune mise à jour n'était disponible, on obtiendrait le message: Aucun paquet marqué pour mise à jour.

yum update -y smeserver-php-scl php54* php55* php56* php70* php71* --enablerepo=smecontribs

Modules complémentaires chargés : fastestmirror, smeserver
Configuration du processus de mise à jour
Loading mirror speeds from cached hostfile
* base: centos.mirror.ca.planethoster.net
* smeaddons: mirror.canada.pialasse.com
* smecontribs: mirror.canada.pialasse.com
* smeextras: mirror.canada.pialasse.com
* smeos: mirror.canada.pialasse.com
* smeupdates: mirror.canada.pialasse.com
* updates: mirror.netaddicted.ca
Aucun paquet marqué pour mise à jour


Signalisation des changements

   On peut attendre après la mise à jour de MySQL57 pour signaler les changements.

Si une mise à jour avait été installée, on la signalerait et on réamorcerait.

# signal-event post-upgrade; signal-event reboot


On vérifie certaines des mises à jour.

# rpm -qa |  grep php-pecl-zip
php71-php-pecl-zip-1.14.0-1.el6.remi.x86_64
php70-php-pecl-zip-1.14.0-1.el6.remi.x86_64
php56-php-pecl-zip-1.14.0-1.el6.remi.x86_64
php55-php-pecl-zip-1.14.0-1.el6.remi.x86_64
php54-php-pecl-zip-1.14.0-1.el6.remi.x86_64

MySQL57

Lancement de la mise à jour

# yum update -y  --enablerepo=smecontribs,centos-sclo-rh smeserver-mysql57
Modules complémentaires chargés : fastestmirror, smeserver
Configuration du processus de mise à jour
Loading mirror speeds from cached hostfile
 * base: mirror.netflash.net
 * smeaddons: mirror.canada.pialasse.com
 * smecontribs: mirror.canada.pialasse.com
 * smeextras: mirror.canada.pialasse.com
 * smeos: mirror.canada.pialasse.com
 * smeupdates: mirror.canada.pialasse.com
 * updates: mirror.netflash.net
centos-sclo-rh                                                       | 2.9 kB     00:00
centos-sclo-rh/primary_db                                            | 1.2 MB     00:00
Aucun paquet marqué pour mise à jour

Présentement, il n'y a aucune mise à jour de disponible. S'il y en avait une, la commande ci-dessus l'installerait.


Signalisation des changements

Si une mise à jour avait été installée, on la signalerait et on réamorcerait.

# signal-event post-upgrade; signal-event reboot

Sécurité

   Cet exemple provient de la documentation originale de ce document mais, les principes demeurent valides.

Pour demeurer très sécuritaire, il faut exécuter le script droits_ibay.sh après avoir fait des mises à jour, installé de nouvelles extensions, de nouveaux thèmes ou exécuté des téléversements de divers fichiers.

On s'assure ainsi que:

  • le contenu de l'i-bay qui héberge notre WordPress a le bon propriétaire, le bon groupe et surtout les bons droits.
  • le groupe "other" n'a toujours aucun droit sur n'importe quel fichier ou répertoire.

   Il n'est pas nécessaire d'exécuter droits_ibay.sh si on téléverse des fichiers avec Tableau de bord  >  Medias  >  Ajouter.

Propriétaire et droits après l'installation d'un thème ou extension

Cette section démontre la justification de l'utilisation du script droits_ibay.sh après l'installation d'un nouveau thème ou extension.

Pour démontrer notre propos, nous allons ajouter le thème TwentyTen en suivant l'exemple de l'installation du thème Storefront au paragraphe #Thème Storefront mais, sans exécuter le script droits_ibay.sh.

Après l'installation du nouveau thème Twenty Ten, on utilise FileZilla ou WinSCP et on affiche le répertoire wp-content/themes.

 

- Comme on peut le voir, le répertoire twentyten a le propriétaire chargeurprim au lieu d'admin à cause du "téléchargeur".

-    Les droits ne sont pas sécuritaires car "other" a le droit de lecture du répertoire twentyten.


 

- Si nous n'avions pas utilisé le paramètre Options All -Indexes dans le fichier .htaccess, "other" pourrait entrer dans le répertoire et lire son contenu de même que celui de ses sous-répertoires si ceux-ci ne contiennent pas de fichier index.xxx (xxx représente une extension .htm, .html, .php, etc...)

- Les droits des sous-répertoires twentyten ne sont pas plus sécuritaires et ils n'ont pas le bon propriétaire.

Propriétaire, groupes, droits et other

On demeure très sécuritaire, on exécute maintenant le script droits_ibay.sh.

# droits_ibay.sh Primary
Vous avez bien spécifié l'i-bay:  "/home/e-smith/files/ibays/Primary"?  o/n [o]: [Entrée]
...


Vérification du répertoire racine de WordPress

Une des dernières commandes contenues dans le script droits_ibay.sh affiche le répertoire racine de WordPress.

   Attention particulière au fichier wp-config.php et au répertoire wp-content.

...
********** Répertoire racine **********
total 204
 4 drwxr-s---  7 admin shared  4096  6 mars  21:00 .
 4 drwxr-xr-x  6 root  root    4096  6 mars  21:00 ..
 4 -rw-r-----  1 admin shared  1106  6 mars  19:20 .htaccess
 4 -rw-r-----  1 admin shared   418 24 sept.  2013 index.php
20 -rw-r-----  1 admin shared 19935  6 mars  20:48 license.txt
 4 drwxr-s---  3 admin shared  4096  1 mars  19:33 .well-known
 8 -rw-r-----  1 admin shared  5447  6 mars  20:48 wp-activate.php
 4 drwxr-s---  9 admin shared  4096  2 nov.  11:30 wp-admin
 4 -rw-r-----  1 admin shared   364 19 déc.   2015 wp-blog-header.php
 4 -rw-r-----  1 admin shared  1627  6 mars  20:48 wp-comments-post.php
 4 -rw-r-----  1 admin shared  3552  6 mars  19:18 wp-config.php
 4 -rw-r-----  1 admin shared  3581  6 mars  20:48 wp-config-sample.php
 4 drwxrws---  6 admin shared  4096  6 mars  21:06 wp-content
 4 -rw-r-----  1 admin shared  3286 24 mai    2015 wp-cron.php
12 drwxr-s--- 18 admin shared 12288  6 mars  20:48 wp-includes
 4 -rw-r-----  1 admin shared  2422  6 mars  20:48 wp-links-opml.php
 4 -rw-r-----  1 admin shared  3301  6 mars  20:48 wp-load.php
36 -rw-r-----  1 admin shared 33939  6 mars  20:48 wp-login.php
 8 -rw-r-----  1 admin shared  8048  6 mars  20:48 wp-mail.php
16 -rw-r-----  1 admin shared 16250  6 mars  20:48 wp-settings.php
32 -rw-r-----  1 admin shared 29896  6 mars  20:48 wp-signup.php
 4 drwxrws--- 3 admin shared 4096 6 mars 08h55 wp-snapshots
 8 -rw-r-----  1 admin shared  4513  6 mars  20:48 wp-trackback.php
 4 -rw-r-----  1 admin shared  3065  6 mars  20:48 xmlrpc.php

   Le répertoire wp-snapshots est utilisé par Duplicator et doit avoir le droit d'écriture.


 
 

Si les images ci-dessous n'étaient pas à jour. Il faudrait faire un rafraîchissement des écrans de WinSCP pour visualiser les nouveaux droits.

Sauvegarde du répertoire /opt

   Dans le fichier /etc/e-smith/templates-custom/etc/dar/DailyBackup.dcf/41go-into, il faut ajouter le répertoire /opt et les liens /bin/droit* dans la sauvegarde standard du Serveur SME au paragraphe https://wiki.contribs.org/SME-101.04_Certificat_Let%27s_Encrypt#Sauvegarde_du_r.C3.A9pertoire_.2Fetc.2Fdehydrated.

#
# Indique à la sauvegarde d'inclure le répertoire /etc/dehydrated et tous ses
# sous-répertoires dans la sauvegarde standard.
--go-into etc/dehydrated
--go-into usr/bin/dehydrated
--go-into usr/bin/dehydrated_hooks
--go-into usr/bin/dehydrated_revoke

# Pour la sauvegarde du répertoire /opt et des liens /bin/droit*
--go-into opt
--go-into bin/droits_debut_MAJ-WP.sh
--go-into bin/droits_fin_MAJ-WP.sh
--go-into bin/droits_ibay


   Victoire totale, hissons la bannière de la victoire.


  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.