Mes mémos sur les OS, le dev, la virtualisation, les iot, et le software bien pensé, simple & utile. (Qd j'ai l'temps)
590 words
@TheSubmarine

Nginx : accès non accordé à php7.0-fpm.sock

connect() to unix:/run/php/php7.0-fpm.sock failed (13: Permission denied) while connecting to upstream

J'avais cette erreur dans une VM Ubuntu 16.04, alors que tout était bien configuré dans /etc/php/7.0/fpm/pool.d/www.conf, et que les permissions sur /run/php/php7.0-fpm.sock étaient bien en 660.
En identifiant quel user utilisait le daemon nginx, on comprend mieux :

# ps aux|grep nginx|grep -v grep
root     17117  0.0  0.0  32420   976 ?        Ss   20:39   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx    17118  0.0  0.0  32836  2032 ?        S    20:39   0:00 nginx: worker process

C'est le user nginx qui fait tourner le daemon nginx, alors que dans la configuration www.conf, on lui demande de prendre en compte le user www-data. On peut contourner le problème en ajoutant le user nginx dans le groupe www-data :

usermod -a -G www-data nginx

Il faut alors relancer les daemons php7.0-fpm et nginx.

Erreur 'loop' lors de l'exécution d'un playbook Ansible

ERROR! The field 'loop' is supposed to be a string type, however the incoming data structure is a <class 'ansible.parsing.yaml.objects.AnsibleSequence'>

Cette erreur est dûe à une vieille version d'Ansible (< 2.5). Le playbook utilise un mot clé d'Ansible dont les paramètres n'existent que dans une version plus récente. Par exemple, un playbook destiné à une version 20.04 d'Ubuntu mais exécutée dans une Ubuntu 16.04 peut faire surgir l'erreur.

Pour contourner le souci, 2 solutions.

1. Utilisation d'un autre mot-clé

On peut utiliser le mot clé with_items. Il faudra remplacer quelque chose qui ressemble à ceci :

tasks:
    - name: Install Prerequisites
      apt: name={{ item }} update_cache=yes state=latest force_apt_get=yes
      loop: [ 'aptitude' ]

Par ceci :

tasks:
    - name: Install Prerequisites
      apt: name={{ item }} update_cache=yes state=latest force_apt_get=yes
      with_items: [ 'aptitude' ]

2. Installer une version plus récente d'Ansible via pip

Pour désinstaller la version d'Ansible issues des paquets d'Ubuntu :

sudo apt remove --purge ansible
sudo autoremove

Pour installer une version plus récente d'Ansible :

sudo apt install python3-pip
pip3 install ansible

Pour vérifier la version d'Ansible :

ansible --version

L'exemple ci-dessus devient :

tasks:
    - name: Install Prerequisites
      apt:
        name: [ 'aptitude' ]
        update_cache: yes
        state: latest

Moralité : toujours utiliser la version pip d'Ansible.

Convertir une animation webp en animation gif sous Ubuntu

Il est parfois nécessaire de convertir une animation webp en animation gif (suite d'images gif). Il faut d'abord installer le package webp et libwebp6 :

sudo apt install libwebp6 webp

Ensuite, il faut télécharger le package libwebp-0.6.1-linux-x86-64.tar.gz (distrib 64bits), car il contient l'utilitaire anim_dump dont on va se servir pour extraire les "frames" du webp et que l'on va copier dans /usr/local/bin/ :

wget -c https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-0.6.1-linux-x86-64.tar.gz
tar -zxvf libwebp-0.6.1-linux-x86-64.tar.gz 
sudo cp libwebp-0.6.1-linux-x86-64/bin/anim_* /usr/local/bin/

Créer un fichier webp2gif.sh qui contiendra ces instructions :

#!/bin/bash
anim_dump -tiff $1
convert -delay 10 -loop 0 *.tiff $1.gif

Puis lui donner le droit d'exécution :

chmod +x webp2gif.sh

Avant de le copier dans /usr/local/bin/ :

sudo cp webp2gif.sh /usr/local/bin/

Tester avec un fichier webp :

webp2gif.sh test.webp

Installation du snap Standard Notes sous Pop_OS 19.10

Standard Notes
Il est nécessaire d'installer au préalable snapd si ce n'est pas déjà fait:

sudo apt install snapd

Ensuite, installer le snap :

snap install standard-notes

Si Standard Notes se lance avec une erreur :

A JavaScript error occurred in the main process
Uncaught Exception:
Error: ENOENT: no such file or directory, open '/home/thesubmarine/snap/standard-notes/4/.config/Standard Notes/user-preferences.json'

Créez un fichier user-preferences.json :

touch /home/thesubmarine/snap/standard-notes/4/.config/Standard\ Notes/user-preferences.json

Puis relancer Standard Notes :

standard-notes

Ressource : Snapcraft

Générer une clé publique à partir d'une clé privée

ssh keys

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub