SME-101.05A WordPress
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 fonctionnalité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.
Cours SME-101
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.
Documentation
Le cours SME-101, se voulant une base solide pour la création d'un site de Commerce en ligne, comprend plusieurs cahiers:
- Cahier-00: Les bases de Linux, SME-101.00 Linux de base.
- Cahier-01: Installation et configuration des logiciels prérequis sur le poste de travail de l'Étudiant de même que le téléchargement des fichiers qui seront installés sur le Serveur SME virtuel, SME-101.01 Logiciels de la station de travail.
- Cahier-02: Description du parcours des paquets IP du Serveur SME vers l'Internet, création de la machine virtuelle, installation/configuration du serveur Linux SME et enfin, sauvegarde/restauration de ce dernier, SME-101.02 Serveur SME.
- Cahier-03: Abonnement à un FAI, installation et configuration d'un modem ADSL/VDSL, création d'un domaine chez un fournisseur de Service DNS dynamique avec installation d'un script pour sa mise à jour et enfin la marche à suivre pour l'obtention et la configuration d'un domaine FQDN[1], SME-101.03 ADSL/VDSL, DDNS et Domaine FQDN.
- Cahier-04: Installation d'un certificat SSL de l'autorité de certification Let's Encrypt et script de mise à jour, SME-101.04 Certificat Let's Encrypt.
- Cahier-05A: Installation et configuration de WordPress, SME-101.05A WordPress.
- Cahier-05B: Installation et configuration de l'extension de sécurité Wordfence, SME-101.05B Wordfence.
- Cahier-06: Installation et configuration de l'extension de vente en ligne WooCommerce, création de comptes chez Stripe et PayPal pour les paiements en ligne, SME-101.06 WooCommerce.
- Cahier-07: Sauvegarde/restauration ou migration d'un site avec l'extension Duplicator, SME-101.07 Duplicator.
- Cahier-08: Serveur mandataire inversé, SME-101.08 Serveur mandataire inversé.
- Cahier-09: Supplément: SME & BackupPC-4.2, SME-101.09: Supplément: SME & BackupPC-4.2.
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 étape, note ou procédure à surveiller.
Danger pour la sécurité du système.
Indique que la commande est sur une seule ligne. Pour ce document en PDF, il faudra copier la commande entière dans un éditeur de texte ASCII tel que NotePad++ et la mettre sur une seule ligne avant de la copier à la console.
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 se logue dans le gestionnaire du serveur: https://www.micronator-101.com/server-manager.
- - Versions de PHP-SCL.
- Version de PHP-mod.
- 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:
- On se logue dans gestionnaire Server-Manager: https://FQDN_ou_adresseIP/server-manager.
- On clique Domaines.
- Le nom exact du domaine de notre site est: micronator-101.com.
- - 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 fichierreadme.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 fichierreadme.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.
- Dans notre cas ce sera: https://10.10.100.102/server-manager.
- - On se logue obligatoirement avec l'usager admin.
- On peut faire un don d'encouragement à Koozali.
- 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 wordpres
s 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.
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éfinitiondefine('DB_HOST', 'localhost')
.
Contenu actuel du fichier de configuration.
... |
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/. (Ce lien n'est plus valide: novembre 2018.)
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/. (Ce lien n'est plus valide: novembre 2018.)
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. (Ce lien n'est plus valide: novembre 2018.)
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/.(Ce lien n'est plus valide: novembre 2018.)
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: SME-101.07 Duplicator.
- 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: SME-101.07 Duplicator.
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] ...
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 Titre de lapublication.
- 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.
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
|
- 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] ...
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:
/* |
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 |
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 téléverse le fichier screenshot.png
dans le répertoire du Thème enfant et on active ce dernier tel que montré sur l'image de droite.
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.
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] ...
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
}
?>
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
Les sorties des commandes ci-dessous proviennent de la documentation originale qui a servie pour cette marche à suivre.
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 |
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 Sauvegarde du répertoire /etc/dehydrated du Cahier-7: "SME-101.04 Certificat Let's Encrypt".
#
# 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.
- ↑ 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.