Author

Matt

Browsing
Matt est formateur, développeur expert WordPress et WooCommerce, et administrateur réseau chez Codeable.

Cela fait quelques jours que Backup Manager, qui me sert à sauvegarder automatiquement les fichiers et bases de données du site sur le serveur de sauvegarde, renvoie une erreur lors de la création d’un de mes fichiers de sauvegarde, alors que tout se passait sans encombres jusqu’alors.

Backup Manager : résoudre l'erreur "tar: file changed as we read it" lors de la création de la sauvegarde photo

C’est gênant dans le sens où on ne sait pas vraiment ce qui a empêché la bonne création du fichier et on ne peut vraiment être certain de l’intégrité du fichier de sauvegarde, ce qui est critique.

Voici le message d’erreur reçu par email à la fin de la sauvegarde :

Unable to create "/home/archives/mail.skyminds.net-home.20180208.master.tar.gz", check /tmp/bm-tarball.log.TZ2VAU
1 error occurred during the tarball generation.

Et voici le contenu du fichier log en question :

tar: /wp-content/ file changed as we read it

Étapes du débogage

Le moins que l’on puisse dire, c’est que tar ne nous donne pas vraiment d’indications sur la cause du problème. Un fichier qui change lors de la lecture, d’accord mais lequel ? De plus, il indique un répertoire et non un fichier précis.

Dans le fichier de configuration de Backup Manager, il est possible de choisir plusieurs formats de fichier pour compresser les fichiers de sauvegarde. J’utilise .tar.gz puisque tous mes machines tournent sous Unix mais là, j’ai changé la configuration pour utiliser le format zip.

On relance le script de sauvegarde : zip est beaucoup plus loquace dans ses messages d’erreur ! Voici ce qu’il nous indique :

zip warning: Not all files were readable
  files/entries read:  55621 (1.3G bytes)  skipped:  96 (414K bytes)

Très bien. Il ne nous reste plus qu’à trouver quels sont ces fichiers qui n’ont pas les droits de lecture. A la racine du site, on lance donc une recherche pour trouver tous les fichiers et dossiers qui n’auraient pas les droits basiques de lecture (read) :

find . ! -perm -o=r

Résultat :

./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---internal-metadatas---B0089KSLUY
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---internal-metadatas---CustomerReviews_B004LS7G3G
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---CustomerReviews_B00B2OI0FU
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---B00JGYYQ24
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---CustomerReviews_B006H4R9LG
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---internal-metadatas---B005BHE48Q
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---internal-metadatas---B00H2O1YOI
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---CustomerReviews_B00MVQLMPI
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---B017EOYW9Y

Il s’agit donc de fichiers de cache de produits Amazon, qui sont absolument inutiles pour les sauvegardes: nous allons donc exclure ce répertoire de cache de nos fichiers de backup.

Suppression des répertoires de cache avant compression des archives

Dans la configuration de Backup Manager, ajoutez le chemin des répertoires de cache de quasiment tous les plugins WordPress :

export BM_TARBALL_BLACKLIST="/home/public_html/wp-content/plugins/*/cache/* /home/public_html/wp-content/*cache*"

Sauvegardez le fichier et relancez votre script de backup.

Méthode plus radicale : éditer le script

Si la méthode précédente ne porte pas ses fruits, en voici une autre. Il suffit de modifier la valeur du chmod dans ces deux fichiers :

/wp-content/plugins/amazonsimpleadmin/lib/AsaZend/Cache/Backend/File.php
/wp-content/plugins/amazonsimpleadmin/lib/AsaZend/Cache/Backend/Static.php

Cherchez le chmod 600 :

'cache_file_umask' => 0600,

et remplacez-le par un chmod 644:

'cache_file_umask' => 0644,

Tada, plus d’erreur et des fichiers de sauvegarde propres, sans fichiers de cache inutiles !

Je suis assez content d’avoir trouvé une solution à ce problème assez récurrent. Le fait d’avoir momentanément modifié le type d’archive à créer a bien aidé à isoler la cause du problème.

Lorsque le site est servi via HTTPS, toutes les ressources – même les ressources oEmbed automatiquement générée par WordPress – qui composent une page doivent également être servies via une connexion chiffrée aussi.

WordPress : afficher des média oEmbed avec HTTPS photo

Il se trouve que je mets des vidéos Youtube et consorts de temps en temps : elles ne s’affichaient plus en https, étant servies par défaut en http. Le changement vers HTTPS est en marche mais tous les services oEmbed n’ont pas encore adopté le chiffrement des connexions.

Servir les vidéos Youtube en HTTPS

Au lieu d’utiliser Youtube.com, nous allons utiliser la version cookie-less de Youtube, à savoir youtube-nocookie.com : cela permet d’éviter les cookies pisteurs de Google et donc offre plus de sécurité et de respect de la vie privée.

J’utilise ce système depuis des années sur SkyMinds donc je me suis dit qu’il était bien temps de le partager dans ces colonnes. Le code permet donc de remplacer youtube.com par youtube-nocookie.com dans le code généré par l’oEmbed WordPress.

Ce code est à ajouter dans votre utility plugin (ou à défaut le fichier functions.php de votre thème WordPress).

Le premier code remplace toutes les occurences des médias HTTP pour HTTPS :

/* Force HTTPS rewrite for oEmbeds
* Source : https://wordpress.stackexchange.com/questions/40747/how-do-i-embed-youtube-videos-with-https-instead-of-http-in-the-url
*/
add_filter( 'embed_oembed_html', 'sky_my_embed_oembed_html' );
function sky_my_embed_oembed_html( $html ) { return preg_replace( '@src="https?:@', 'src="', $html ); }

Le second code modifie tous les appels à youtube.com et les remplace par youtube-nocookie.com, ce qui empêche la création de cookies pisteurs :

/*
* Embed Video Fix - HTTPS and privacy mode
* Source : https://wordpress.org/support/topic/forcing-ssl-return-for-youtube-oembed
*/
add_filter('the_content', 'sky_add_secure_video_options', 10);
function sky_add_secure_video_options($html) {
   if (strpos($html, "

Cela a l'air tout bête mais cela permet de faire respecter un peu plus notre droit au refus de se faire pister à tout bout de champs sur le net.

Le petit plus : on charge également moins de cookies, qui ne sont pas des ressources cachables par essence donc on améliore un peu aussi le temps de chargement de la page.

« Come on Baby » est le premier single officiel du premier album de Saigon, intitulé The Greatest Story Never Told :

Dans cette chanson, on retrouve Swizz Beatz et un couplet de Jay-Z dans la version remix. Un sample de la chanson « Southside Shuffle » du groupe The J. Geils Band’s est abondamment utilisée.

Paroles

Just Blaze, hey, hands up

Swizzy, hey, hands up
1, 2, 3, here we go!

Microphone check one two what is this?
The Yardfather coming to give niggas the business
It’s so beyond rap, cock sucker we live this
So uhm, come on baby, come on, come on and witness
The next ten years of this shit, the slickness is deliberate
Lyrically it’s as sick as it get
I been in the pen, been in the jects, been in the??
I been in the Benz, been in the Lex, been in the MSX
Yes, I run ringers around the fraudulant type
Come here and I’ll show you that I spit on just more then a mic
I make it hard for niggas to breathe, please
These wicked emcees squeeze
Hammers like the Pampers used to squeeze, hit the DT
I Mike Tyson ya eye, put a permenant ring around it
Then go run in the booth and sing about it
Look, if I don’t hurt the nigga that play with my wealth
I’m like me on Entourage god, I’m playing myself, let’s go

Hold up, the pump will make you jump up
Put ya body in the tr-unk
(Don’t you baby, don’t you baby, don’t ya baby)
Keep goin now…
New York, and all the way to Cali
And the South’ll make ya j-ump
(Come on baby, come on baby, come on baby)
Don’t touch the boy, yup
Hold up, the pump will make ya jump up
Put ya body in the tr-unk
(Come on baby, come on baby, come on baby)
I’ll whip ya ass from…
New York, and all the way to Cali
And the South’ll make ya jump

1, 2, 3, we gone!

Four finger, three finger, two finger, one finger
Hum dinger, gun slinger, that’s what I am
Trying to get some cash in my hand as fast as I can
So you should, come on baby, come on, come on and fuck wit ya man
I got this rap shit down to a science
Alotta niggas shit is aight but they ain’t fucking with Ryan
First there was some defiance, until I formed an alliance
With Justin, he plugged me in, now I’m as hot as a fucking iron
You lying, all the gunplay talk
Knowing behind closed doors you be practicing on ya runway walk
I been in the kill, been in the cap, been in the box and back
I been in the ville, tripping the gat, trimming a boxing match
And I still walk around this fucker with not a scratch
And thats way more then I can say for alot of cats
My name’s Saigon nigga
Break bread mufucka ‘fore I break ya fucking head lil sucka

Finally I’ve arrived, so we can say our goodbyes
To the ring tone rapper, that crap’ll never survive
Its the lyrics in hip-hop, they even the odds
We gotta, come on baby, come on, come on and keep it alive
I got a microphone jones, I’m in love with it
If I wasn’t, I wouldn’t even fuck with it
I been in the rocks, been in the grams
Been in the pots and pans, I been in demand
Been in the sense I dropped contraband, damn
Simon says, « Saigon slap the shit outta suckas »
« Slam his head on the cement and stomp it until he’s?? »
My son says your son scared of societies shit list
Sick as the second stage of siphylis and swift as the Savior’s scripture
I say after it’s all said and done
I’mma be way ahead of them, never see a better one
So look niglet, fall back a tid bit
Or get ya fucking wig split, this some big shit

Le riff pentatonique est repris ad nauseam mais ce morceau est vraiment entraînant. Un bon mix entre rock et rap old-school. Parfait pour les tâches répétitives – ou pour ranger le garage.

Happy Birthday Matt : 37 photoAujourd’hui, je fête mes 37 ans.

J’ai relu l’article de l’année dernière et me suis rendu compte qu’il fallait faire un petit bilan de l’année qui vient de s’écouler et de mes résolutions.

Je n’ai pas vraiment lu de livres papier – aucun à vrai dire. J’ai par contre beaucoup lu sur des écrans : laptop chez moi, téléphone dans le bus. Je regrette de ne pas assez lire, à la fois dans la fréquence et dans la durée.

En ce qui concerne l’écriture, je suis obligé de m’adapter un peu : j’écris ici mais passe pas mal de temps sur Kriya Yoga à rédiger, mettre en page et m’occuper des cours en ligne. Le développement web occupe aussi pas mal de mon temps donc il faut jongler entre les sites, les échéances et l’envie de parler d’un sujet donné.

Pour la mer, on y est allé avec Cécile : Malte, Grèce, Sardaigne… mais l’objectif n’est pas encore atteint.

3 mots pour 2018

Cette année, je modifie le mode de fonctionnement de mes résolutions et au lieu d’énoncer des idées très précises, je vais me concentrer sur trois mots différents qui me permettront de me focaliser sur une ligne directrice pour l’année.

Mes trois mots pour cette année sont :

Read : j’ai besoin de lire plus, même sur une Kindle, ce serait un plus.

Execute : concrétiser davantage et ne pas juste parler de choses qui sont ensuite remises à plus tard. Arrêter de procrastiner et passer à l’exécution, dans tous les domaines.

Flow: de temps en temps, il faut se laisser porter et arrêter d’essayer de nager à contre-courant. Lâcher du lest, ne pas se braquer et rester positif.

Le nombre 37 en mathématiques

Trente-sept est :

  • un nombre premier,
  • le premier nombre premier irrégulier,
  • un nombre premier cousin avec 41,
  • un facteur de tous les nombres uniformes à trois chiffres en base 10, tels que 111.
  • un nombre hexagonal centré et un nombre étoilé.

Propriété mathématique intéressante de 37 :

111 : 1+1+1= 3 et 3 × 37 = 111
222 : 2+2+2= 6 et 6 × 37 = 222
333 : 3+3+3= 9 et 9 × 37 = 333

999 : 9+9+9=27 et 27 × 37 = 999

Trivia sur le nombre 37

Le nombre 37 est :

  • le numéro atomique du rubidium, un métal alcalin. Masse atomique du rubidium : 85.468 ; 5e période, 1er groupe ; 8+5+4+6+8+5+1=37
  • la température moyenne du corps humain en °C.
  • en France, le nombre d’années de mariage des noces de papier.
  • le nombre d’emplacements de la roulette européenne.
  • le nombre utilisé dans un certain tour de magie. Dans ce tour, le magicien demande à une personne de penser à un nombre qui rassemble les critères suivants :
    a. doit être compris entre 1 et 50,
    b. doit avoir deux chiffres tous les deux impairs différents.

    Seulement huit nombres remplissent ces conditions : 13, 15, 17, 19, 31, 35, 37, et 39. Statistiquement, les gens prendront 37 parmi tous les autres nombres. Par conséquent, le magicien peut utiliser cette probabilité pour créer un effet de télépathie.

  • Hannibal a amené 37 éléphants avec lui lors de sa conquête de Rome.
  • le nombre de pièces de théâtre que l’on considère écrites par William Shakespeare (en comptant Henry IV en trois parties : 10 pièces historiques, 10 tragédies, 17 comédies).
  • The Hindenburg a mis 37 secondes à brûler (en 1937).
  • 16 mars 37 : mort de Tibère, empereur romain, à Misène, dans la villa de Lucullus en Campanie. Selon Tacite, Dion Cassius et Sénèque, il aurait été assassiné, étouffé sous ses couvertures par le préfet du prétoire Macron. Suétone pour sa part n’incrimine pas Macron et rapporte diverses versions de la mort de Tibère : mort naturelle ou par absence de soins, mais aussi, par empoisonnement ou étouffement sous un coussin par Caligula. Cette version est toutefois contestée par les historiens modernes, qui jugent plus vraisemblable une mort naturelle.
  • 30 mars 37 : début du règne de Caligula, empereur romain (fin en 41). Caius, fils du populaire Germanicus, après avoir fait cassé le testament de Tibère et écarté Gemellus, est reconnu sans difficulté comme empereur par le Sénat et par l’armée (Caligula, petite chaussure, est un surnom militaire). Après la mort de Tibère, Caligula accorde l’ancienne tétrarchie de Philippe à son ami Agrippa Ier.
  • 15 décembre 37 : naissance de Néron, futur empereur romain, à Antium.

Et vous, avez-vous pris des résolutions (des vraies hein, pas celles du 1er janvier ;-)) ?

Aujourd’hui, nous allons voir comment héberger un nouveau domaine sur le serveur, en simplifiant au maximum les procédures.

Serveur dédié : transférer et héberger un nouveau domaine sur votre serveur photo

Le nom de domaine sera réservé chez OVH et le site hébergé sur notre serveur Debian. Nous allons servir le site avec NginX en HTTPS grâce à un certificat SSL fourni gratuitement par Let’s Encrypt.

Enfin, on utilisera le serveur email existant et on ajoutera la configuration OpenDKIM pour signer et authentifier tous les emails sortants du domaine.

Nom de domaine

J’achète mes noms de domaine chez OVH parce que le prix est relativement raisonnable (comparé à mon ancien registrar).

Au moment de la commande, faites pointer le nouveau domaine vers les DNS du serveur.

Si votre serveur n’est pas chez OVH, il suffit d’aller dans Domaines > Serveurs DNS et de renseigner le DNS primaire et secondaire de votre serveur.

Configuration DNS dans BIND

Une fois le domaine commandé, si vous vous rendez dans le Manager OVH, vous vous rendrez compte que le bouton DNS est en rouge : c’est normal puisqu’il nous faut paramétrer notre nouveau domaine dans BIND, notre serveur de noms.

On édite la configuration de BIND :

nano /etc/bind/named.conf.local

et on lui indique que nous créons une nouvelle zone :

zone "example.com" {
        type master;
        file "/etc/bind/example.com.hosts";
        allow-query { any; };
};

On crée maintenant notre fichier de zone:

nano /etc/bind/example.com.hosts
$ttl 84600
$ORIGIN example.com.

@       IN      SOA     XXXXXX.kimsufi.com. root.example.net. (
                        2018012801
                        14400
                        3600
                        604800
                        84600 )

; NAMESERVERS
 IN     NS      XXXXXX.kimsufi.com.
 IN     NS      ns.kimsufi.com.

example.com.   IN      A       XXX.XXX.XXX.XXX
example.com.   IN      AAAA    4001:41d0:1:4462::1
example.com.   IN      MX      10 mail.example.net.

www.example.com.       IN      A        XXX.XXX.XXX.XXX
www.example.com.       IN    AAAA    4001:41d0:1:4462::1
www       IN A          XXX.XXX.XXX.XXX

Ps: example.net est le domaine principal du serveur.

Pous vérifions la configuration BIND:

named-checkconf -z

et nous redémarrons BIND pour prendre en compte nos changements et activer notre nouveau fichier de zone:

service bind9 restart

Vous pouvez vérifier votre configuration DNS à l’aide de l’outil ZoneMaster.

Configuration du bloc serveur sous NginX

On commence par créer le répertoire qui va accueillir les fichiers du site et on lui attribue les bons droits:

mkdir -p /home/example/public_html
chown -R www-data:www-data /home/example/public_html
chmod 755 /home/example/public_html

On crée également un fichier index.php à la racine du site pour éviter une erreur 403 plus tard lors de la génération du certificat SSL :

echo "" >> /home/example/public_html/index.php

On crée maintenant le répertoire de cache du site, toujours avec les bons droits:

mkdir -p /home/nginx-cache/example
chown -R www-data:www-data /home/nginx-cache/example
chmod 755 /home/nginx-cache/example

Voici le server block de départ, en HTTP simple :

server {
       listen         80;
       listen    [::]:80;
       server_name    example.com www.example.com;
       #return         301 https://$server_name$request_uri;
        root /home/example/public_html;
        index index.php index.html;
}

On active le site :

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

On teste la configuration de NginX et on redémarre le service:

nginx -t
service nginx restart

On crée maintenant le certificat SSL avec Let’s Encrypt :

certbot certonly --webroot -w /home/example/public_html -d example.com -d www.example.com

Eths est un groupe de nu metal français, originaire de Marseille, dans les Bouches-du-Rhône (Provence). À ses débuts, le groupe est souvent sur la route, enchaîne les tournées et se produit dans la France entière ainsi qu’en Europe.

La voix des chanteuses Candice et Rachel sont partagées entre des parties mélodiques et des parties gutturales. Les musiciens quant à eux s’appliquent à créer une ambiance tantôt malsaine avec un son très lourd, tantôt plus douce et mélodique comme dans Ailleurs c’est ici ou L’instant sourd qui reste tout de même dans l’ambiance oppressante qui caractérise la musique du quintet.

Aujourd’hui, le serveur passe à PHP 7.2 !

Serveur dédié : script bash pour réparer les tables MySQL en cas de crash photo

PHP 7.2 accroît fortement les performances des versions précédentes, notamment au travers de plusieurs améliorations en matière de sécurité. Ainsi, l’algorithme Argon2 qui sert au hachage sécurisé des mots de passe corrige les défauts des algorithmes actuels. Celui-ci permet notamment un taux de remplissage plus élevé de la mémoire.

PHP 7.2 intègre désormais dans son noyau la bibliothèque de cryptographie Sodium, utilisée pour le chiffrement authentifié, est désormais une extension de base et les performances de la bibliothèque pour la cryptographie sur les courbes elliptiques ont été améliorées.

Niveau programmation

Au-delà de Sodium, PHP 7.2 vient avec des améliorations et nouvelles fonctionnalités comme :

  • la possibilité de convertir des clés numériques dans les objets et tableaux lors de cast.
  • les clés numériques sont maintenant mieux appréhendées lors de cast d’un tableau en objet et d’objet en tableau (cast explicite ou par la fonction settype()) ;
  • le comptage d’objets non dénombrables. Un E_WARNING sera émis lors de la tentative d’utilisation de la fonction count() sur un type non dénombrable ;
  • HashContext en tant qu’objet ;
  • ajout d’Argon2 à l’API pour le hachage de mot de passe ;
  • amélioration des constantes TLS ;
  • la suppression de l’extension Mcrypt. L’extension MCrypt a maintenant été déplacée du noyau vers PECL. Étant donné que la bibliothèque mcrypt n’a pas eu de mises à jour depuis 2007, son utilisation est fortement découragée. Au lieu de cette extension, soit OpenSSL ou l’extension sodium doit être utilisé.

Les fonctions Deprecated (déconseillées) et supprimées pour PHP 8.0:

__autoload
$php_errormsg
create_function()
mbstring.func_overload
(unset) cast
parse_str() sans le second argument
gmp_random()
each()
assert() avec un argument string(texte)
$errcontext

La conversion des clés numériques dans les distributions objet/tableau résout un problème rencontré avec le moteur open source Zend Engine qui fait tourner PHP 7. Dans certaines situations, les tables de hachage de tableaux pouvaient contenir des chaînes numériques alors que les tables de hachage d’objets pouvaient contenir des clés entières, ce qui empêchait le code PHP de retrouver les clés. Le correctif apporté par PHP 7.2 convertit les clés des tables de hashage des tableaux et des tables de hachage des objets sont converties dans les bons formats, de sorte que les chaînes de format numériques personnalisées sont traduites en clefs entières, résolvant le problème d’inaccessibilité.

Les typages explicites d’objets ou « type hints » corrigent une situation dans laquelle un développeur ne peut pas déclarer une fonction supposée recevoir un objet en tant que paramètre ou déclarer qu’une fonction doit retourner un objet. Le correctif utilise l’objet comme type de paramètre et type de retour. HashContext en tant qu’objet, migre l’extension de hachage pour utiliser une extension objet pour les contextes de hachage au lieu d’utiliser des ressources. A noter aussi une nouvelle alerte ajoutée pour l’appel de la fonction count avec un paramètre scalaire ou nul, ou un objet qui n’implémente pas l’interface « Countable »

Mise à jour vers PHP7.2

Cela n’a pris que quelques minutes :

apt update && apt upgrade

Résultat :

Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  php7.1-cli php7.1-curl php7.1-fpm php7.1-gd php7.1-json php7.1-mbstring php7.1-opcache
  php7.1-readline php7.1-xml php7.1-xmlrpc
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  libargon2-0 libsodium23 php7.2-cli php7.2-common php7.2-curl php7.2-fpm php7.2-gd php7.2-json
  php7.2-mbstring php7.2-opcache php7.2-readline php7.2-xml php7.2-xmlrpc
The following packages will be upgraded:
  php-common php-curl php-fpm php-gd php-mbstring php-xml php-xmlrpc php7.1-cli php7.1-common
  php7.1-curl php7.1-fpm php7.1-gd php7.1-json php7.1-mbstring php7.1-mcrypt php7.1-mysql
  php7.1-opcache php7.1-readline php7.1-soap php7.1-xml php7.1-xmlrpc php7.1-zip
22 upgraded, 13 newly installed, 0 to remove and 0 not upgraded.
Need to get 8,656 kB of archives.
After this operation, 19.7 MB of additional disk space will be used.

A ce stade, nous avons php7.1 et php7.2 installés séparément sur le serveur.

On installe les paquets manquants (toujours les deux mêmes):

apt install php7.2-mysql

On édite chacun des VirtualHosts sous Nginx, en éditant cette ligne:

fastcgi_pass unix:/run/php/php7.2-fpm.sock;

On relance NginX et PHP:

service php7.2-fpm restart && service nginx restart

Si tout va bien, il suffit de supprimer PHP7.1, ses dépendances et ses fichiers de configuration:

apt purge php7.1-*

Test de votre code sous PHP 7.2

Vous hésitez encore à sauter le pas ? Copiez-collez votre code sur le site d’3v4l, vous saurez immédiatement si cela produit des erreurs de type Notice.

Bonne mise à jour !

Sommaire de la série Monter un serveur dédié de A à Z

  1. Serveur dédié : installation d’Apache, PHP, MySQL et Webmin
  2. Serveur dédié : créer la base de données MySQL et importer WordPress
  3. Serveur dédié : créer et activer un Virtual Host sous Apache
  4. Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur
  5. Serveur dédié : sécurisation des services avec iptables et fail2ban
  6. Serveur dédié : sécurisation de la couche TCP/IP
  7. Serveur dédié : création d’un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d’utilisateurs/domaines virtuels
  8. Serveur dédié : sécuriser Apache 2 avec ModSecurity
  9. Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande
  10. Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances
  11. Serveur dédié : afficher la véritable IP derrière un reverse-proxy comme Varnish
  12. Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les plugins et les thèmes
  13. Serveur dédié : installer la dernière version d’APC par SVN
  14. Serveur dédié : analyse des performances du serveur
  15. Serveur dédié : mettre à jour le noyau Debian de la Kimsufi
  16. Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH
  17. Serveur dédié : configurer la limite mémoire pour PHP et Suhosin
  18. Bash : supprimer tous les fichiers et sous-répertoires d’un répertoire
  19. Serveur dédié : impossible de se connecter à un port distant
  20. Rsync: rapatrier les fichiers du serveur à la maison
  21. Bash : réparer les tables MySQL en cas de crash
  22. Serveur dédié : création d’une seedbox avec Transmission
  23. Serveur dédié : des paquets LAMP à jour sous Debian
  24. Serveur dédié : mise à jour vers Debian 7 Wheezy
  25. Serveur dédié : activer X11 forwarding pour SSH
  26. Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim
  27. Postfix : résoudre l’erreur « fatal: www-data(33): message file too big »
  28. Serveur dédié : mise en place de l’IPv6
  29. WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod
  30. WordPress : héberger les images sur un sous-domaine
  31. Serveur dédié : ajouter l’authentification SPF, Sender-ID et DKIM à Postfix et Bind9 avec opendkim
  32. Apache : lorsque le domaine seul (sans WWW) renvoie une erreur 403
  33. Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy
  34. Serveur dédié : passer WordPress en HTTPS (TLS/SSL)
  35. Serveur dédié : configurer Webmin en TLS avec un certificat SSL
  36. Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL
  37. Serveur dédié : installer et configurer Varnish 4
  38. Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker
  39. J’ai planté le serveur… ou comment récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH
  40. Serveur dédié : configurer Postfix et Courier pour utiliser TLS-SSL en Perfect Forward Secrecy
  41. Serveur dédié : retirer Varnish, devenu inutile avec HTTPS
  42. Serveur dédié : ajout de mod_spdy pour accélérer la connexion TLS-SSL sous Apache
  43. Serveur dédié : installer la dernière version d’OpenSSL sous Debian
  44. Serveur dédié : activer l’IP canonique du serveur sous Apache
  45. Serveur dédié : mise à jour vers PHP 5.6
  46. MySQL : convertir les tables MyISAM au format InnoDB
  47. Serveur dédié : optimiser toutes les images GIF avec GIFsicle
  48. Serveur dédié : migration de MySQL vers MariaDB
  49. BASH : lister, bloquer et débloquer des adresses IP avec iptables
  50. Serveur dédié : produire une meilleure réserve d’entropie avec haveged
  51. Serveur dédié : mettre en place DNSSEC pour sécuriser les DNS du domaine
  52. Serveur dédié : mise en place du protocole DANE
  53. 8 règles d’or pour bien déployer DNSSEC et DANE
  54. Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian
  55. Serveur dédié : réduire les connexions TIME_WAIT des sockets et optimiser TCP
  56. Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO
  57. Serveur dédié : mettre à jour Apache et configurer le mod_http2 pour HTTP/2
  58. Serveur dédié : ajouter le domaine à la liste HSTS preload
  59. Serveur dédié : ajouter l’authentification DMARC à Postfix et BIND
  60. Serveur dédié : à la recherche de l’inode perdue ou comment résoudre le problème « no space left on device »
  61. Serveur dédié : installer NginX avec support HTTP2 et certificat SSL, PHP, MariaDB sous Debian

« Skaros » est un dialogue entre la clarinette de Petro-Loukas Halkias et le laouto de Vasilis Kostas :

Le skaros est une musique pastorale improvisée instrumentale ou vocale. La flûte floghera ou la clarinette y est dominante pour l’accompagnement des danses : menousis, fisouni, podhia, sta dio, sta tria, zagorisios, kentimeni, koftos, yiatros et tsamikos.

Petro-Loukas est l’un des meilleurs clarinettistes de Grèce et l’un des échansons les plus doués de la musique démotique grecque.

Vasilis Kostas est l’un des meilleur joueur de laouto au monde. Il a étudié au Berklee Global Jazz Institute à Boston, MA puis a voyagé avec le World Strings Orchestra dirigé par Eugene Friesen en Espagne en tant que joueur de laouto soliste pour présenter la musique grecque à travers le prisme du luth grec. Ses performances au laouto ouvrent de nouveaux horizons pour l’instrument, pour les mondes du jazz et la musique grecque traditionnelle.

Cela est particulièrement audible avec cette collaboration entre Vasilis Kostas et Petro-Loukas Halkias et ce morceau instrumental grec. Je trouve que le mélange des genres, musique traditionnelle et jazz, donne une tonalité totalement incroyable à ce morceau. On se croirait presque en Orient à certains moments avec la clarinette notamment.

Serveur dédié : configurer Apache et NginX pour servir des polices de caractères photo

La plupart des sites modernes font appel à des polices de caractères qui ne sont pas installées sur les systèmes d’exploitation de leurs visiteurs. L’utilisation de Google Fonts est très largement répandue mais cela ajoute un délai de traitement dans le chargement des pages car cela nécessite autant de requêtes externes.

Il est également possible de placer les fichiers dans le répertoire du thème graphique et de les servir directement depuis le serveur de fichier, comme Apache ou NginX.

Tout d’abord, il faut configurer les bons entêtes http. Cela permet aux navigateurs de bien interpréter les fichiers demandés comme polices de caractères.

Configuration des polices pour Apache

Pour définir le bon mime-type pour les polices, ajoutez ce bloc à votre configuration Apache:

AddType application/x-font-ttf ttc ttf
AddType application/x-font-otf otf
AddType application/font-woff woff
AddType application/font-woff2 woff2
AddType application/vnd.ms-fontobject eot

Si vous n’avez pas accès à la configuration du VirtualHost, placez ce bloc dans le fichier .htaccess du site.

Pour les entêtes CORS, ajoutez ce bloc:


  Header set Access-Control-Allow-Origin "*"

Configuration des polices pour NginX

LA configuration par default de NginX ne prend pas en compte les types mime des formats de fontes optimizés pour le web. Il est à noter également que le type mime des fichiers .eot est erroné, il nous faut donc le modifier.

1. Editez le fichier /etc/nginx/mime.types et supprimez la ligne concernant l’extension eot.

2. Ensuite, ajoutez ce bloc :

application/x-font-ttf ttc ttf;
application/x-font-otf otf;
application/font-woff woff;
application/font-woff2 woff2;
application/vnd.ms-fontobject eot;

3. Pour les entêtes CORS, ajoutez ce bloc à la configuration du vhost:

location ~* \.(eot|otf|ttf|woff|woff2)$ {
add_header Access-Control-Allow-Origin *;
}

Et voilà, votre serveur de fichier est maintenant capable de servir vos fichiers de polices de caractères.

Il est recommandé de ne pas abuser des fontes de caractères : pas plus de 3 familles de fontes différentes sur un site web. Les navigateurs ayant chacun leurs petites subtilités et standards, ils ne se sont toujours pas mis d’accord sur un seul et même format de fichier.

En pratique, les formats WOFF2 et WOFF sont à privilégier (ils couvrent plus de 94% des utilisateurs) mais suivant le public ciblé, il faut penser à offrir les autres variantes de fichiers.

Sommaire de la série Monter un serveur dédié de A à Z

  1. Serveur dédié : installation d’Apache, PHP, MySQL et Webmin
  2. Serveur dédié : créer la base de données MySQL et importer WordPress
  3. Serveur dédié : créer et activer un Virtual Host sous Apache
  4. Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur
  5. Serveur dédié : sécurisation des services avec iptables et fail2ban
  6. Serveur dédié : sécurisation de la couche TCP/IP
  7. Serveur dédié : création d’un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d’utilisateurs/domaines virtuels
  8. Serveur dédié : sécuriser Apache 2 avec ModSecurity
  9. Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande
  10. Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances
  11. Serveur dédié : afficher la véritable IP derrière un reverse-proxy comme Varnish
  12. Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les plugins et les thèmes
  13. Serveur dédié : installer la dernière version d’APC par SVN
  14. Serveur dédié : analyse des performances du serveur
  15. Serveur dédié : mettre à jour le noyau Debian de la Kimsufi
  16. Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH
  17. Serveur dédié : configurer la limite mémoire pour PHP et Suhosin
  18. Bash : supprimer tous les fichiers et sous-répertoires d’un répertoire
  19. Serveur dédié : impossible de se connecter à un port distant
  20. Rsync: rapatrier les fichiers du serveur à la maison
  21. Bash : réparer les tables MySQL en cas de crash
  22. Serveur dédié : création d’une seedbox avec Transmission
  23. Serveur dédié : des paquets LAMP à jour sous Debian
  24. Serveur dédié : mise à jour vers Debian 7 Wheezy
  25. Serveur dédié : activer X11 forwarding pour SSH
  26. Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim
  27. Postfix : résoudre l’erreur « fatal: www-data(33): message file too big »
  28. Serveur dédié : mise en place de l’IPv6
  29. WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod
  30. WordPress : héberger les images sur un sous-domaine
  31. Serveur dédié : ajouter l’authentification SPF, Sender-ID et DKIM à Postfix et Bind9 avec opendkim
  32. Apache : lorsque le domaine seul (sans WWW) renvoie une erreur 403
  33. Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy
  34. Serveur dédié : passer WordPress en HTTPS (TLS/SSL)
  35. Serveur dédié : configurer Webmin en TLS avec un certificat SSL
  36. Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL
  37. Serveur dédié : installer et configurer Varnish 4
  38. Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker
  39. J’ai planté le serveur… ou comment récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH
  40. Serveur dédié : configurer Postfix et Courier pour utiliser TLS-SSL en Perfect Forward Secrecy
  41. Serveur dédié : retirer Varnish, devenu inutile avec HTTPS
  42. Serveur dédié : ajout de mod_spdy pour accélérer la connexion TLS-SSL sous Apache
  43. Serveur dédié : installer la dernière version d’OpenSSL sous Debian
  44. Serveur dédié : activer l’IP canonique du serveur sous Apache
  45. Serveur dédié : mise à jour vers PHP 5.6
  46. MySQL : convertir les tables MyISAM au format InnoDB
  47. Serveur dédié : optimiser toutes les images GIF avec GIFsicle
  48. Serveur dédié : migration de MySQL vers MariaDB
  49. BASH : lister, bloquer et débloquer des adresses IP avec iptables
  50. Serveur dédié : produire une meilleure réserve d’entropie avec haveged
  51. Serveur dédié : mettre en place DNSSEC pour sécuriser les DNS du domaine
  52. Serveur dédié : mise en place du protocole DANE
  53. 8 règles d’or pour bien déployer DNSSEC et DANE
  54. Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian
  55. Serveur dédié : réduire les connexions TIME_WAIT des sockets et optimiser TCP
  56. Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO
  57. Serveur dédié : mettre à jour Apache et configurer le mod_http2 pour HTTP/2
  58. Serveur dédié : ajouter le domaine à la liste HSTS preload
  59. Serveur dédié : ajouter l’authentification DMARC à Postfix et BIND
  60. Serveur dédié : à la recherche de l’inode perdue ou comment résoudre le problème « no space left on device »
  61. Serveur dédié : installer NginX avec support HTTP2 et certificat SSL, PHP, MariaDB sous Debian

Je vous souhaite à toutes et à tous une très belle année 2018, avec plein de petits bonheurs et de joies partagés !

Happy 2018 ! photo

En 2017, nous avons eu la chance de voyager à Malte, en Sardaigne, en Grèce et à Madeire – que des îles ! – et c’était vraiment formidable, avec des paysages totalement différents d’un lieu à l’autre.

J’ai continué à travailler en tant que développeur full-stack et pas mal de mes clients reviennent vers moi pour des projets complémentaires comme ajouter ou développer de nouvelles fonctionnalités à leur site web, booster l’hébergement et la rapidité de leur site, et améliorer leurs conversions.

Au niveau professionnel, pas grand chose à dire. Cécile s’est rapprochée donc on perd moins de temps sur les routes, ce qui est autant de temps de vie exploitable selon nos envies.

Pour 2018, on a (encore) prévu de voyager, histoire d’explorer des coins dans lesquels nous n’avons encore jamais mis les pieds. Nous nous sommes rendus compte que l’on prenait de moins en moins de photos, en comparaison avec nos premiers voyages, ce qui est bizarre. Nous allons donc essayer d’écrire un peu moins en détails mais en documentant un peu plus avec nos photos… L’idéal serait de pouvoir tout écrire en temps réel (ou presque) mais cela est rarement possible.

Pour 2018, ayez la frite et concrétisez tous vos projets !

Pour nous rendre à Delphes, nous empruntons le bus depuis la gare routière d’Athènes.

Depuis le centre ville (station de Métro « Akropoli » par exemple) cela représente un assez long trajet en bus, car la gare routière est excentrée. Nous prenons le temps de bien nous renseigner avant car il y a plusieurs gares routières différentes, éloignées les unes des autres, qui desservent des villes de Grèce différentes.

Le trajet qui dure deux heures trente est très agréable : il nous permet de découvrir de petits villages authentiques bien différents d’Athènes, au coeur de la campagne grecque.

Visite de Delphes photo

Delphes (en grec : Δελφοί, qui se prononce « Delfi » en grec moderne) est le site d’un sanctuaire panhellénique, situé au pied du Mont Parnasse, en Phocide, où parlait le dieu Apollon par le truchement de sa prophétesse, la Pythie. Les Anciens considéraient en effet que chaque homme est soumis à un destin décidé par les dieux : la Pythie offrait un éclairage sur ce que les dieux avaient prévu pour nous.

Avant la consultation, on donnait un « misthos« , une somme d’argent, et on sacrifiait une chèvre pour s’assurer que les dieux consentaient à être interrogés sur notre cas. Si l’animal tremblait, cela signifiait l’accord divin. Sinon, on n’avait qu’à revenir plus tard. Une fois les dieux apaisés, on pouvait alors pénétrer dans le temple d’Apollon pour entendre la prédiction.

Bien évidemment, on ne rencontrait pas la Pythie directement : elle se trouvait dans l’adyton (littéralement: lieu où l’on ne pénètre pas), et c’est aux prêtres, chargés de faire l’intermédiaire entre la prêtresse et le consultant, que l’on adressait sa question. La Pythie répondait ensuite aux prêtres, qui transmettaient la réponse.

La question est alors de savoir comment la Pythie accédait aux pensées d’Apollon, le dieu de la mantique (l’art de prédire le destin en grec). Sur ce point, tous les témoignages s’accordent pour expliquer que la Pythie était assise sur un trépied et mâchait des feuilles de laurier, l’arbre d’Apollon, ce qui facilitait l’accès au monde du divin, matérialisait le lien avec Apollon et correspondait à ce que les Grecs appelaient « enthousiasmos » (littéralement, le fait d’avoir le dieu en soi).

Certains auteurs expliquent quant à eux que la Pythie était littéralement pénétrée par le souffle d’Apollon, recevant entre ses cuisses son souffle sacré qui émanait d’une crevasse dans le sol. La prophétesse, entrant dans un état de transe, délivrait alors ses oracles aux prêtres qui se livraient à un véritable travail herméneutique et avaient toutes les chances de se tromper.

Comment expliquer une telle différence dans les témoignages ? De façon générale, les auteurs grecs contemporains de l’oracle d’Apollon restent assez discrets au sujet des détails précis de la consultation, sans doute car ils n’avaient pas à justifier, à expliquer de manière rationnelle ce en quoi ils croyaient, ou du moins, ce qui faisait partie de leur folklore religieux.

Il s’avère que les témoignages qui évoquent la dimension sexuelle voire immorale de la Pythie sont dus à des auteurs chrétiens plus tardifs, qui ont écrit au moment où la religion chrétienne commençait à se développer et dans le but de l’expliquer et de la répandre de façon la plus large possible. On peut penser que c’est dans le but de porter en discrédit ces pratiques païennes que ces auteurs chrétiens ont insisté sur le caractère immoral et non crédible de l’oracle.

Le sanctuaire de Delphes abrite également l’Omphalos que les Grecs considéraient comme le « nombril du monde », pensant que Delphes marquait le centre de la terre. Investi d’une signification sacrée, Delphes fut du VIe au IVe siècle av. J.-C. le véritable centre et le symbole de l’unité du monde grec. En effet, chaque année, chaque cités grecques participait au « trésor » en offrant à Delphes une importante somme d’argent et contribuait ainsi à renflouer les caisses de la ligue panhellénique.

Visite de Delphes photo 1

The Walking Dead saison 8 photo

Retour de The Walking Dead sur AMC, c’est déjà la saison 8 !

Rick, Maggie et Ezekiel rassemblent leurs communautés pour abattre Negan. Gregory tente de rallier les résidents de Hilltop à la cause de Negan, mais ils sont tous fermement derrière Maggie.

Le groupe attaque le Sanctuaire, abat ses clôtures et inonde l’enceinte de zombies. Avec le Sanctuaire à sac, tout le monde part sauf Gabriel, qui reste à contre-coeur pour sauver Gregory, mais est laissé pour compte quand Gregory l’abandonne. Entouré de marcheurs, Gabriel se cache dans une caravane, où il est coincé à l’intérieur avec Negan…

Les forces de Rick se séparent en plusieurs groupes pour attaquer plusieurs avant-postes des Saviors, au cours desquels de nombreux membres du groupe sont tués; Eric est gravement blessé et emporté par Aaron.

Jésus empêche Tara et Morgan d’exécuter un groupe de Sauveurs rendus. Tout en dégageant un avant-poste avec Daryl, Rick est confronté et tenu sous la menace d’une arme par Morales, un survivant rencontré dans le camp initial d’Atlanta, qui est maintenant avec les Saviors.

Seize épisodes sont programmés pour cette saison : huit sont déjà disponibles et la seconde partie de la saison sera diffusée à partir du 25 février, ce qui est plus tard que d’habitude puisque cela reprenait rituellement le jour de la Saint Valentin (14 février).

Rapport de faute d’orthographe

Le texte suivant sera envoyé à nos rédacteurs :