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

Backup Manager : résoudre l’erreur “tar: file changed as we read it” lors de la création de la sauvegarde

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.

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.Code language: JavaScript (javascript)

Et voici le contenu du fichier log en question :

tar: /wp-content/ file changed as we read itCode language: JavaScript (javascript)

É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*"Code language: JavaScript (javascript)

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.phpCode language: PHP (php)

Cherchez le chmod 600 :

'cache_file_umask' => 0600,Code language: PHP (php)

et remplacez-le par un chmod 644:

'cache_file_umask' => 0644,Code language: PHP (php)

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.

WordPress : afficher des média oEmbed avec HTTPS photo

WordPress : forcer le chargement des média oEmbed en HTTPS

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.

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 :

<?php
/* 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_embed_oembed_html' );
function sky_embed_oembed_html( $html ) { 
  return preg_replace( '@src="https?:@', 'src="', $html );
}Code language: HTML, XML (xml)

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 :

<?php
//BEGIN Embed Video Fix - HTTPS and privacy mode
//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, "<iframe" ) !== false) {
    	$search = array('src="http://www.youtube.com','src="http://youtube.com');
	$replace = array('src="https://www.youtube-nocookie.com','src="https://www.youtube-nocookie.com');
	$html = str_replace($search, $replace, $html);
   	return $html;
   } else {
        return $html;
   }
}Code language: HTML, XML (xml)

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.

Saigon Ft Swizz Beatz - Come On Baby photo

Saigon Ft Swizz Beatz and Jay-Z – Come On Baby

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

Happy Birthday Matt : 37

Happy Birthday Matt : 37 photo

Aujourd’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 ;-)) ?

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

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

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; };
};Code language: JavaScript (javascript)

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.XXXCode language: PHP (php)

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 "<!--?php echo 'hello world. Domain activated.'; ?-->" >> /home/example/public_html/index.phpCode language: HTML, XML (xml)

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;
}Code language: PHP (php)

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

Lire la suite

Eths - Animadversion photo

Eths – Animadversion

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.

Lire la suite

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

Serveur dédié : mise à jour vers PHP 7.2

Aujourd’hui, le serveur passe à PHP 7.2 !

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.Code language: JavaScript (javascript)

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-mysqlCode language: CSS (css)

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

fastcgi_pass unix:/run/php/php7.2-fpm.sock;Code language: JavaScript (javascript)

On relance NginX et PHP:

service php7.2-fpm restart && service nginx restartCode language: CSS (css)

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

apt purge php7.1-*Code language: CSS (css)

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 !

Petro-Loukas Halkias et Vasilis Kostas - Skaros photo

Petro-Loukas Halkias et Vasilis Kostas – Skaros

“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

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

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:

<filesmatch ".(eot|ttf|otf|woff|woff2)"="">
  Header set Access-Control-Allow-Origin "*"Code language: JavaScript (javascript)

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 96% des utilisateurs) mais suivant le public ciblé, il faut penser à offrir les autres variantes de fichiers.

Visite de Delphes photo 10

Visite de Delphes

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.

Lire la suite

The Walking Dead saison 8 photo

The Walking Dead saison 8

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

Lire la suite

Serveur dédié : créer un certificat ECDSA avec Let's Encrypt photo

Serveur dédié : créer un certificat ECDSA avec Let’s Encrypt

Aujourd’hui, je vous montre comment j’ai mis en place un certificat ECDSA avec Let’s Encrypt, que j’utilise depuis l’année dernière.

Let’s Encrypt a annoncé il y a quelques mois qu’il sera possible au courant de l’année 2018 de créer des certificats ECDSA, pour plus de sécurité et de rapidité.

L’algorithme ECDSA

L’algorithme ECDSA (abbréviation d’Elliptic Curve Digital Signature Algorithm) a été proposé pour la première fois par Scott Vanstone en 1992.

Les signatures basées sur l’algorithme d’ECS, l’ancêtre de ECDSA, présente plusieurs avantages majeurs par rapport aux algorithmes RSA : leur taille est plus réduite et ils sont créés bien plus rapidement.

La vérification basée sur les algorithmes ECC est extrêmement rapide également.

Les avantages d’utiliser ECDSA par rapport à RSA

L’utilisation d’ECDSA pour les signatures numériques présente d’importants avantages, dont notamment:

  • un niveau de sécurité élevé,
  • pas de problèmes avec la performance d’applications,
  • un processus rapide de signature et de vérification (40% plus rapide que RSA),
  • adapté à la montée en puissance de la sécurité des applications,
  • support pour les pré-requis modernes de l’industrie

Une sécurité et une rapidité accrues donc, avec un usage de données réduit. Parfait.

Création d’un certificat ECDSA avec Let’s Encrypt

1. On crée les nouveaux répertoires pour notre certificat ECDSA:

mkdir -p /etc/letsencrypt/live-ecdsa/example.com/letmp
mkdir -p /etc/letsencrypt/live-ecdsa/example.com/backup
cd /etc/letsencrypt/live-ecdsa/example.com

2. On crée une clé privée avec l’algorithme secp384r1:

openssl ecparam -genkey -name secp384r1 > privkey-p384.pemCode language: CSS (css)

3. On crée un Certificate Signing Request (CSR):

openssl req -new -sha256 -key privkey-p384.pem -subj "/CN=example.com" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:example.com,DNS:www.example.com,DNS:mail.example.com,DNS:static.example.com")) -outform der -out csr-p384.derCode language: JavaScript (javascript)

4. On demande la création du certificat chez Let’s Encrypt:

cd letmp
certbot certonly -a webroot --webroot-path /home/public_html -d example.com -d www.example.com -d mail.example.com -d static.example.com --csr /etc/letsencrypt/live-ecdsa/example.com/csr-p384.der --renew-by-default --agree-tos --cert-path /etc/letsencrypt/live-ecdsa/example.com/cert_ecdsa.pem --fullchain-path /etc/letsencrypt/live-ecdsa/example.com/fullchain_ecdsa.pem --chain-path /etc/letsencrypt/live-ecdsa/example.com/chain_ecdsa.pemCode language: JavaScript (javascript)

5. Il reste à éditer la configuration de votre serveur de fichier. Sous NginX:

nano /etc/nginx/sites-available/example.com

ajoutez-y le nouveau certificat:

    # Let's Encrypt : ECDSA CERT
    ssl_certificate /etc/letsencrypt/live-ecdsa/example.com/fullchain_ecdsa.pem;
    ssl_certificate_key /etc/letsencrypt/live-ecdsa/example.com/privkey-p384.pem;Code language: PHP (php)

et on redémarre NginX:

service nginx restart

Voilà, vous venez de mettre en place votre certificat ECDSA. Voyons maintenant comment cela se passe pour la mise à jour.

Lire la suite