Author

Matt

Browsing
Matt est formateur, développeur expert WordPress et WooCommerce, et administrateur réseau chez Codeable.
La nébuleuse d'Orion, prise par Hubble.

Vous lisez actuellement cet article depuis le nouveau serveur de SkyMinds, baptisé ORION.

De mail à ORION

Le serveur précédent a été le théâtre d'une multitude de tutoriels consacrés à la série Monter un serveur dédié de A à Z, tournait sous Debian (6, 7, 8, et 9) mais était un peu limité en termes de ressources (Intel Core2 Quad Q8300 @ 2.50GHz, 4 Go de RAM, 750 Go de disque). Tant qu'il n'y avait qu'un seul site à gérer, cela convenait mais avec près d'une dizaine de sites, on touchait les limites.

ORION est bien plus confortable : Intel Xeon W3530 @ 2.80GHz, 32 Go de RAM, 2 To de disque en RAID). De quoi pouvoir monter en charge tranquillement :)

Du changement dans notre stack

Qui dit nouveau serveur, dit refonte de la stack. Vu que nous partons d'un environnement vierge, autant partir du bon pied et utiliser toutes les dernières innovations. Le serveur précédent datait de 2012 et, même s'il tournait parfaitement, il a connu pas mal de mises à jour (parfois pas très stables).

J'ai donc décidé de changer d'OS pour ORION : même si j'adore travailler sous Debian, je me suis dit que j'allais tenter Ubuntu Server 18.04 LTS. Certains tutoriels ne sont pas exactement équivalents entre Debian et Ubuntu Server donc cela promet quelques nouveaux tutoriels !

Objectif performance

Le but du nouveau serveur est d'être un peu plus à l'aise au niveau des ressources, surtout si les sites lancés récemment prennent de l'ampleur. Cela donne également un peu plus d'oxygène au serveur de bases de données.

L'autre objectif est un objectif de performance : monter un serveur dédié de manière simple et efficace, en privilégiant la sécurité et la rapidité des sites hébergés.

Voilà, c'est tout pour la note de service. Les tutoriels sont en cours d'écriture, donc bientôt disponibles sur le site !

J'ai récemment monté un nouveau serveur qui utilise MySQL 8 et après quelques jours d'utilisation, je me suis rendu compte que l'espace disque avait considérablement augmenté.

La cause ? Une multitude de fichiers logs binaires dans le répertoire d'exécution de MySQL 8 : il y en avait pour plus de 260 Go !

Les fichiers logs binaires enregistrent toutes les requêtes qui ont été effectuées par le serveur de bases de données. Inutile de dire qu'il est assez improbable que vous cherchiez à savoir quelles requêtes ont été lancées le mois dernier!

Désactivation des logs binaires

Sous MySQL 8, voici comment désactiver les logs binaires : éditez le fichier de configuration de MySQL:

nano /etc/mysql/mysql.conf.d/mysqld.cnf

et ajoutez cette ligne sous [mysqld] :

skip-log-bin

Vous pouvez également vous connecter au serveur MySQL en ligne de commande:

mysql -u root -p

et lancer la commande suivante dans l'invite de commande MySQL:

SET sql_log_bin = 0;
PURGE BINARY LOGS BEFORE '2019-03-31';

Relancez ensuite le serveur MySQL:

service mysql restart

Il ne vous reste plus qu'à vous rendre dans le dossier d'exécution de MySQL - /etc/mysql par défaut, sauf si vous l'avez modifié - et supprimer les fichiers binlog*.

Les chansons de Zelienople, basé à Chicago, hantent et s'écoulent librement, leurs paysages sonores cinématiques étant très développés grâce à l'utilisation d'enregistrements de terrain, de percussions de forme libre et de rebondissements structurels non conventionnels.

Leur approche a été qualifiée de «pop doom», avec son interprétation hantée et spacieuse d'Americana. Le trio composé de Mike Weis (percussions), Matt Christensen (chant, guitare) et Brian Harding (basse, saxophone) ont déjà amassé un auditoire dédié qui devrait grandir avec la sortie de leur album, The World Is A House On Fire.

La voix de Christensen résonne comme celle d’un moine dans un sanctuaire, avec des éclats monophoniques occasionnels renforcés par sa voix résonnante.

The World Is A House On Fire est un bon album planant et mélancolique.

Cela fait belle lurette que j'ai troqué Yoast SEO pour The SEO Framework, qui est bien mieux codé et plus performant.

Récemment, lors d'un changement de serveur, je me suis aperçu que l'un des sites avait son fichier sitemap.xml qui renvoyait une erreur 404 sous NginX.

Si cela vous arrive, deux solutions s'offrent à vous.

Vérification du server block

Commencez d'abord par vérifier que votre serveur block contient les bonnes directives pour gérer les règles de WordPress:

location / {
        # This is cool because no php is touched for static content.
        # include the "?$args" part so non-default permalinks doesn't break when using query string
        try_files $uri $uri/ /index.php?$args;
}

Sauvez votre server block puis relancez NginX. Il est possible que cela ne soit pas suffisant, si c'est le cas, nous allons ajouter une directive supplémentaire.

Une directive dédiée pour sitemap.xml

Ajoutons une directive supplémentaire à notre server block, qui permettra de rediriger vers la sitemap générée par The SEO Framework :

# sitemap.xml directive
# Matt Biscay
# https://www.skyminds.net/?p=30771
location = /sitemap.xml {
	rewrite ^/sitemap.xml$ "/?the_seo_framework_sitemap=xml" permanent;
}

Sauvez les changements et rechargez NginX - boom, la sitemap est de retour!

Voici un tutoriel qui vous permet de supprimer les kernels linux installés sur votre serveur/machine qui ne sont pas actuellement utilisés.

Cela est utile pour faire un peu de ménage sur la partition /boot, idéalement avant qu'elle ne soit complètement saturée. Sinon, je vous donne aussi l'astuce pour faire le ménage manuellement et retrouver APT complètement opérationnel.

Ce tutoriel a été testé sous Ubuntu Server 18.04 LTS, il est complètement transférable sous Ubuntu et Debian.

Cas de figure 1: /boot n'est pas plein à 100% et apt est opérationnel

1. On vérifie la version actuelle du kernel

uname -r

Cela nous donne la version du noyau sous laquelle tourne notre machine:

4.15.0-46-generic

2. On supprime les vieux kernels

2.a. On liste les vieux kernels

sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`

You will get the list of images something like below:

linux-image-4.15.0-45-generic

2.b. On supprime les vieux kernels (un par un)

sudo apt purge linux-image-4.15.0-45-generic

Une fois que les vieux kernels sont supprimés, on supprime également les paquets qui seront maintenant obsolètes:

sudo apt autoremove

Et on finit par la mise à jour de la liste des noyaux de GRUB:

sudo update-grub

Voilà, il ne vous reste plus qu'à rebooter votre machine ou votre serveur. Il ne reste que le dernier kernel.

Cas de figure 2 : apt est indisponible car /boot est plein à 100%

NOTE: cette partie du tutoriel n'est valable que si et seulement si vous ne pouvez utiliser APT parce que la partition /boot est pleine à 100%.

1. Listez les images de kernel

Obtenez la liste des images de kernels et faîtes la liste des kernels que vous pouvez supprimer car ils ne sont plus utilisés. Cette commande vous montre les kernels installés à l'exception de celui qui est en cours d'utilisation:

sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`

Voici le résultat de la commande, la liste des kernels installés mais inutilisés:

linux-image-3.19.0-59-generic
linux-image-3.19.0-61-generic
linux-image-3.19.0-65-generic
linux-image-extra-3.19.0-59-generic
linux-image-extra-3.19.0-61-generic
linux-image-extra-3.19.0-65-generic

2. Préparez la suppression

Vous devez préparer la commande qui va supprimer tous les kernels inutilisés en utilisant la brace expansion pour vous simplifier la vie. Je vous conseille d'écrire la commande dans un éditeur de texte et de bien la vérifier avant de la lancer dans le terminal.

N'oubliez pas d'exclure le kernel actuel ainsi que les deux kernels les plus récents pour pallier tout problème:

sudo rm -rf /boot/*-3.19.0-{59,61,65}-*

3. Nettoyez APT et ses messages d'avertissement à propos d'une installation partielle

sudo apt-get -f install

4. Autoremove

Enfin, on lance la commande autoremove pour supprimer les paquets relatifs aux vieilles images de kernel qui ont été rendues orphelines par le nettoyage manuel de /boot :

sudo apt autoremove

5. Mise à jour de GRUB

sudo update-grub

6. APT est opérationnel

Vous pouvez de nouveau utiliser APT et mettre à jour, installer et supprimer les paquets de votre distribution:

sudo apt update

Passion Pit se forme à la fin de l'année 2007. En 2008, après avoir joué seulement dans quelques concerts, ils sont élus meilleur début selon un sondage du journal The Boston Phoenix1. Le groupe signe alors avec les labels Frenchkiss Records de New York et Columbia au Royaume-Uni.

Leur succès rapide est dû en partie à une anecdote, un cadeau de Michael Angelakos à sa petite amie pour la Saint Valentin. Il avait en effet décidé de lui faire différentes chansons. Sa petite amie, complètement éprise de sa musique, en a parlé à tous les gens de son entourage, et de fil en aiguille, le groupe parvint à trouver un label. Ayad Al Adhamy compare le groupe à MGMT.

Paroles

Dear friend as you know
Your flowers are withering
Your mother's gone missing
Your leaves have drifted away

But the clouds are clearing up
And I've come reveling
Burning incandescently
Like a bastard on the burning sea

You're just like your father
Buried deep under the water
Your resting on your laurels
Is stepping on my toes
Whose side are you on?
What side is this anyway?
Put down your sword and crown
Come lay with me on the ground

You come beating like moth's wings
Spastic and violently
Whipping me into a storm
Shaking me down to the core
But you run away from me
And you left me shimmering
Like diamond wedding rings
Spinning dizzily down on the floor

You're drifting like a fire
Buried deep under the water
You're pressing on your laurel
Is stepping on my toes
Whose side are you on?
What side is this anyway?
Put down your sword and crown
Come lay with me on the ground.
Come lay with me on the ground.

Songwriters: Michael Angelakos

Hurt est une chanson écrite par Trent Reznor qui constitue le premier single extrait de l'album The Downward Spiral. Elle a reçu une nomination pour le Grammy Awards de la meilleure chanson rock en 1996.

En 2002, la reprise de Hurt par Johnny Cash est acclamée par la critique. Il s'agit de l'une des dernières chansons interprétées par l'artiste avant sa mort.

Paroles

I hurt myself today
To see if I still feel
I focus on the pain
The only thing that's real

The needle tears a hole
The old familiar sting
Try to kill it all away
But I remember everything

What have I become
My sweetest friend
Everyone I know
Goes away in the end

And you could have it all
My empire of dirt
I will let you down
I will make you hurt

I wear this crown of thorns
Upon my liars chair
Full of broken thoughts
I cannot repair

Beneath the stains of time
The feelings disappear
You are someone else
I am still right here

What have I become
My sweetest friend
Everyone I know
Goes away in the end

And you could have it all
My empire of dirt
I will let you down
I will make you hurt

If I could start again
A million miles away
I will keep myself
I would find a way

Enregistrée à l'origine par Nine Inch Nails, Hurt comporte clairement des références à l'automutilation et à la dépendance à l'héroïne, bien que le sens global de la chanson soit contesté.

Certains affirment que la chanson agit comme une lettre de suicide écrite par le protagoniste de l'album en raison de sa dépression, tandis que d'autres prétendent qu'il décrit le processus difficile de trouver une raison de vivre en dépit de la dépression et de la douleur.

Le clip vidéo a été tourné par Mark Romanek, gratuitement, dans la maison et musée de Johnny Cash, The House of Cash, alors que la santé de Johnny Cash est sur le déclin, à 71 ans.

Le panneau «fermé au public» sur le musée. Les disques de platine fissurés. Le banquet caviar et homard sans invités. Les clips de plus tôt dans la carrière de Johnny. Sa femme June regarde. Le couvercle du piano fermé.  

June meurt trois mois après le tournage, son mari Johnny, sept mois, en 2003.

La maison de Cash, dans laquelle il a vécu pendant près de 30 ans et qui est le décor du clip, brûle en 2007.

Si vous avez suivi le tutoriel sur Flexget pour télécharger vos torrents automatiquement avec Transmission, voici un petit complément qui vous permettra de récupérer les sous-titres automatiquement, de manière périodique.

Je considère ici que l'installation de Flexget est déjà opérationnelle.

Installation de subliminal

S'il n'est déjà présent sur votre serveur/poste de travail, installez subliminal:

pip install subliminal

Configuration des sous-titres

Editez le fichier de configuration de FlexGet, config.yml et ajoutez-y cette nouvelle tâche:

tasks:
  get-subtitles:
    filesystem:
      path: 
        - d:\media\incoming         # on Windows
        - /home/incoming          # unix
      regexp: '.*\.(avi|mkv|mp4)$'  # only include filenames with these extensions
      recursive: yes
    accept_all: yes
    seen: local                     # seen shouldn't interfer with anything outside this subtitles task
    subliminal:
      languages:
        - eng
      alternatives:
        - fra
      exact_match: yes
      #only use the following providers
      providers: [addic7ed, opensubtitles, tvsubtitles]
      single: no
      hearing_impaired: yes
      authentication:               #consider using the variables plugin
        addic7ed:
          username: my_user
          password: my_password
        opensubtitles:
          username: other_user
          password: other_passsword

Pensez à éditer le chemin du répertoire qui contient vos fichiers vidéo (lignes 5-6), suivant que vous êtes sous Windows ou Unix. N'oubliez pas de mettre les identifiants de compte addic7ed et opensubtitles.

Il ne vous reste plus qu'à lancer FlexGet et celui-ci se chargera de récupérer les sous-titres de tous les fichiers vidéos contenus dans le répertoire que vous avez défini dans la configuration:

flexget execute

Enjoy!

Honeywagon est un groupe de bluegrass qui vient des collines d'Hollywood.

Le groupe est né en 2010 grâce à l'impulsion de Bryan Clark (aka “BC”), et Ben Levine (aka “Mo Levone”, “Benwell”) qui voulaient créer du bluegrass à la fois joyeux et subversif.

Voici une reprise de Mickael Jackson par Honeywagon, Billie Jean :

Pour la petite histoire, le mot honeywagon en américain est un mot argotique qui fait référence au camion d'épandage (qui projette le contenu des fosses septiques dans les champs comme engrais).

Au Royaume-Uni, cela désigne la petite caravane qui contient toilettes et vestiaires sur les sets de tournage des films et séries.

Suite à une mauvaise manipulation, j'ai malencontreusement écrasé ma version de pip installée par APT en faisant un pip install pip. Après cela, toute commande lancée par pip donne cette erreur:

Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

Pas glop! Si cela vous arrive un jour, voici comment retrouver la version pip initiale, installée par votre gestionnaire de paquet APT.

On marque python2.7 comme binaire Python par défault en le sélectionnant dans cette liste (si besoin):

update-alternatives --config python

On désinstalle pip, dans APT et dans PIP :

python -m pip uninstall pip
apt purge --autoremove python-pip

On réinstalle pip avec APT:

apt install python-pip

Et on vérifie la version de pip :

pip --version

qui nous donne:

pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

Et voilà, nous venons de retrouver une version de pip utilisable sur notre système.

Note : ne pas tenter de mettre à jour pip manuellement, il vaut mieux laisser le gestionnaire de paquet gérer les mises à jour de ce paquet lorsque cela est nécessaire, au fil des mises à jour.

Lors de la mise en ligne d'un nouveau site, je suis tombé sur une page qui ne fonctionnait pas et donnait une erreur 502 avec ce message dans les logs:

upstream sent too big header while reading response header from upstream

Si votre serveur utilise NginX, il suffit d'ajouter ces deux lignes à votre server block pour que tout rentre dans l'ordre:

fastcgi_buffers 16 16k; 
fastcgi_buffer_size 32k;

L'augmentation de la taille des buffers permet d'envoyer toutes les données d'un coup d'un seul, ce qui résout l'erreur.

Il ne reste plus ensuite qu'à relancer le serveur NginX:

service nginx restart

Hop, problème réglé.

J'ai récemment écrit un petit script bash qui me permet de sauvegarder rapidement toutes les bases de données d'un serveur. Le script est lancé par une tâche cron automatiquement, tous les jours.

Si l'on passe l'utilisateur et le mot de passe SQL dans la requête, avec mysql ou mysqldump, vous obtiendrez très certainement le message d'avertissement suivant:

Warning: Using a password on the command line interface can be insecure.

Et pour cause : cela veut dire que n'importe qui ayant accès au serveur pourra voir, dans les logs ou avec un simple ps, vos informations de connexion à vos bases de données. Ce n'est pas ce qui se fait de mieux en matière de sécurité !

Une solution est de passer en argument un fichier qui contiendra vos données de connexion à la base de données.

Donc, au lieu d'écrire :

mysqldump -u $USER -p$PASSWORD --databases $db > $BACKUP_PATH/$date-$db.sql

Il vaut mieux écrire:

mysqldump --defaults-extra-file=/etc/mysql/mysql-backup-script.cnf --databases $db > $BACKUP_PATH/$date-$db.sql

Note: L'argument --defaults-extra-file doit venir en premier, sinon il ne sera pas interprété.

Le fichier /etc/mysql/mysql-backup-script.cnf contient les identifiants de votre utilisateur SQL qui aura les droits sur chacune des bases de données à sauvegarder. Voici à quoi il ressemble:

[client]
user = backup
password = GIGANTIC_SECURE_PASSWORD

Par sécurité, on restreint les droits d'accès au fichier pour qu'il ne soit pas lisible par tout le monde:

chmod 400 /etc/mysql/mysql-backup-script.cnf

Il ne vous reste qu'à créer votre cron avec votre nouvelle commande, sans montrer les identifiants SQL en clair.

Rapport de faute d’orthographe

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