
Quelques astuces diverses, quatrième

Eh oui, déjà le quatrième épisode de ces astuces en vrac (ah non, en vrac, ce sont les liens), de celles qui n’ont pas nécessairement besoin d’un article dédié. On en trouve des petites conneries à faire dans plein de domaines, c’est ça que j’aime bien dans l’informatique.
Empêcher Nginx de rajouter le port quand on redirige une URI vers une autre URI
Quand votre serveur Nginx est derrière un autre proxy comme Varnish ou HAproxy, il est nécessaire de le faire écouter sur un autre port que le 80/443 s’il se trouve sur la même machine. Hors, si vos règles de redirections ne contiennent que des URIs (et pas des URLs, qui indiquent explicitement ou implicitement le port), il va par défaut rajouter le port sur lequel lui écoute, ce qui va évidemment poser des problèmes. Il suffit donc de rajouter la ligne suivante dans votre fichier de configuration :
1 |
port_in_redirect off; |
Afficher/surveiller les stats memcache
Pour vérifier le taux d’utilisation de votre instance Memcache, vous pouvez envoyer des commandes par telnet ou en l’occurrence netcat au port d’écoute. En combinant avec l’utilitaire watch, on peut afficher les statistiques rafraîchies en temps réel :
1 |
watch "echo stats | nc 127.0.0.1 11211" |
Modifier à la volée un paramètre php (CLI)
Parfois, pour vérifier qu’un paramètre pose problème dans votre fichier de configuration de PHP, vous pouvez tester, en ligne de commande, en modifiant à la volée le paramètre (pour éviter d’impacter le reste du fonctionnement de vos sites si vous avez un fichier commun à tout le monde) :
1 |
php -d memory_limit=512M |
Désactiver les demandes de notifications dans Firefox
J’ai expliqué comment désactiver les demandes de géolocalisation, si les notifications vous répugnent aussi, vous pouvez les désactiver globalement, dans about:config
:
1 |
dom.webnotifications.enabled |
Vous le passez à false, et voilà. A part qu’après avoir testé, ça fait déconner la version Web de Twitter, alors vous êtes prévenu.
Créer une archive tar.gz au travers d’SSH avec une barre de progression
Cela évite de créer l’archive sur la machine distante avant de la copier (pratique quand on manque de place), et avec une barre de progression, c’est badass :
1 |
seboss666@seboss666-pc:~/archive$ sshpi "tar czf - /home/seboss666/web/pastes" |pv -s 1G > pastes_$(date %s).tar.gz |
Le -s 1G
, c’est la taille du dossier, sinon pv n’affiche pas le pourcentage ni le temps restant estimé, seulement la taille transférée, car il ne peut pas la calculer dans le cas présent. Attention, ici avec la compression ça peut s’arrêter avant les 100%, pas de panique. Au pire vous testez l’archive reçue si vous avez peur.
Vérifier la liste des plugins activés dans WordPress
J’ai eu à traiter une erreur fatale sur un WordPress dont le thème dépendait d’un plugin qui s’est avéré être désactivé. Pour vérifier la liste quand on a pas accès au backoffice mais qu’on a accès à la BDD, une seule requête suffit (pas la peine d’en rajouter) :
1 |
SELECT * FROM wp_options WHERE option_name = 'active_plugins'; |
Et si vous avez un a:0:{}
comme valeur, vous avez un gros problème.
Faire un diff de fichier au travers d’SSH
J’ai eu un doute sur la liste de fichiers à livrer fournie par un client entre sa plateforme de recette et son site de production. Pour comparer le fichier qui m’intriguait, j’ai procédé de cette façon :
1 |
diff /var/www/index.php <(ssh 192.168.1.25 'cat /var/www/index.php') |
Dans mon cas, la seule différence était des lignes vides, étrange mais pas grave, ouf.
Importer un dump MySQL/MariaDB au travers d’SSH en une seule commande
Lors de la migration des données d’un client vers la nouvelle machine, vous avez rsync pour les fichiers, mais pas pour les bases. Dans ce cas, vous pouvez passer par mysqldump au travers d’SSH, et injecter directement, le tout en une seule ligne :
1 |
ssh -C 192.168.1.20 mysqldump --defaults-file=/etc/my-client.cnf -Q -B --opt wordpressdb | mysql wordpressdb |
Valider la syntaxe YAML d’un playbook Ansible avant de l’exécuter
Le YAML c’est sympa, Ansible c’est le pied, mais quand vous avez du mal à faire fonctionner les deux ensemble, vous pouvez tomber sur un laconique « ERROR! Syntax Error while loading YAML. » Sans plus de détails. Depuis peu, j’utilise yamllint qui permet de faire du check de configuration et d’indiquer clairement les erreurs de syntaxe (la plus courante étant l’indentation je pense). Exemple :
1 2 3 4 |
[seboss666@seboss666-pc ~/dev/yamllint ]$ yamllint rhel.yaml rhel.yaml 1:1 warning missing document start "---" (document-start) 2:11 warning truthy value is not quoted (truthy) |
C’est pas mieux comme ça ?
Lancer des commandes bash depuis l’invite de commandes MySQL
Ça arrive parfois : on veut vérifier un truc côté OS alors qu’on est dans une session MySQL (genre le chemin d’un fichier à sourcer). On a alors le choix : sortir de la session, ça peut vite s’avérer chiant, ouvrir une deuxième console en parallèle. Et puis il y a la dernière solution, plus intéressante, de lancer directement des commandes depuis le shell MySQL :
1 2 3 4 |
mysql> \! ls -l total 4 drwxr-xr-x 2 root root 4096 Jan 26 15:41 2017 mysql> |
On peut même relancer une instance de bash, dès qu’on en sort on revient automatiquement dans MySQL. C’est pas cool ça ?
Allez, c’est tout pour aujourd’hui, si j’en trouve d’autres des petites astuces vous aurez droit à un nouveau numéro. Nul doute que ça arrivera 🙂
Merci pour « Désactiver les demandes de notifications dans Firefox ». Effectivement, les notifications ont fortement tendance à me répugner. Bon dimanche !
Bravo et merci pour ces excellentes astuces !
Tcho !
Merci pour le yamllint ! Je ne connaissais pas et ça va intégrer mon UDD 😀
Pour tester les règles ansible il existe l’utilitaire ansible-lint https://github.com/willthames/ansible-lint qui permet de vérifier également l’usage des bonnes pratiques.
Sortir pour juste une commande de MySQL. Ma journée refaite, merci 🙂