Quelques astuces diverses, septième

closeCet article a été publié il y a 6 ans 8 mois 13 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

J’aime mon métier. On est jamais une semaine sans faire quelque chose de nouveau, de bricoler certaines commandes, de gagner du temps dans l’absolu, de devoir contourner une limitation bizarre. Bref, vous l’avez compris, y’a toujours des choses à apprendre, et il serait idiot de ne pas partager tout ça.

Nettoyer les fichiers temporaires de Rsync

Après un rsync foireux (sans utiliser –append-verify), beaucoup de fichiers partiels sont restés sur le serveur de destination. Ce sont de simples fichiers cachés, pour les nettoyer, c’est pas compliqué :

Attention toutefois si des fichiers cachés légitimes se trouvent dans ces dossiers (.htaccess par exemple).

Synchroniser uniquement les permissions d’une arborescence depuis un backup

J’ai eu l’occasion de devoir uniquement réparer les permissions d’une arborescence après un chmod 755 malencontreux sur tous les dossiers d’un client (cassant des dépots Git, des traitements automatisés…). Contrairement à ce qu’on pense, ce n’est pas rsync qui va faire le taf à partir du backup :

Bien évidemment j’ai compris ça après avoir fait mon rsync…

Python/virtualenv : faire en sorte qu’un venv puisse exploiter les modules « globaux »

Un problème que j’ai découvert avec virtualenv, c’est que si on installe un module via le gestionnaire de paquets, donc accessible via tout le système, ce n’est pas le cas pour vos environnements virtuels Python, du moins par défaut. Pour corriger ce petit souci, il faut mettre à jour son environnement avec la commande suivante :

Évidemment l’alternative est d’installer le module au sein du virtualenv 😀

Utilisateur en lecture seule pour mysqlump

Un collègue a pensé que le SELECT était suffisant pour un utilisateur en lecture seule destiné à faire des dumps. Il n’était pas si loin :

diff au travers d’SSH

Quand vous devez comparer le contenu de deux fichiers, diff est un des outils les plus pratiques pour identifier les points à corriger. Il y a par contre quelques subtilités quand les deux fichiers en question ne se trouvent pas sur le même serveur :

Vérifier la date d’un certificat SSL/TLS avec OpenSSL

Soit vous utilisez votre navigateur, mais c’est lent (chargement complet du site, plusieurs clics pour afficher le contenu du certificat), un peu plus rapide avec une extension comme Calomel SSL Validation, sinon, inévitablement OpenSSL revient sur le tapis :

Relancer automatiquement la connexion MySQL pour votre API en Python

Je suis en train de réécrire l’API pour collect que j’avais commencé à l’époque, toujours en Python, mais avec Flask au lieu de Bottle, et en conservant la base MySQL plutôt que MongoDB. Mais une chose à laquelle je ne m’attendais pas, c’était que la connexion pourtant persistante que mon application crée lors du lancement finit par être coupée (par MySQL probablement). Et par défaut, il ne la rétablit pas, pour ça, il suffit d’ajouter une petite ligne au début de votre code :

Drupal : lister les modules installés avec Drush

Le site d’un client m’envoyait les logs Drupal dans /var/log/messages (très, très dégueulasse on est d’accord), en lui demandant de changer ce paramètre l’agence nous dit qu’il n’y a rien à faire côté Drupal. Pas de bol, après un grep dégueu j’ai identifié le module coupable . Mais il y a plus propre avec drush :

Forcer le type d’un fichier particulier avec Nginx

Quand on peut pas installer le module more_headers, et qu’nginx force application/octet-stream, un simple add_header ne suffit pas, il faut jouer un peu plus :

Whitelister le dossier .well-known pour Let’s Encrypt sur Nginx

Nginx toujours. Un client a empêché que ses certificats Let’s Encrypt soient renouvelés en ajoutant des règles de sécurité. Combiné avec une redirection forcée vers HTTPS, c’est une catastrophe. Pour empêcher Nginx de me renvoyer lors du challenge ACME, j’ai dû adapter un peu la configuration :

Je vous laisse vous torturer l’esprit pour comprendre la regex 😛 Le résultat est là : pas de redirection HTTPS lors du challenge ACME, et le renouvellement a pu se faire.


Comme d’habitude, si vous avez vous aussi des bricoles rapidos comme ça à partager, les commentaires complètent très bien 🙂 (ou au pire envoyez par mail, j’inclue dans un prochain billet en vous citant)