Serveur dédié : résoudre le problème "no space left on device" photo

Serveur dédié : à la recherche de l’inode perdue ou comment résoudre le problème “no space left on device”

Les inodes perdues ! Cette semaine, j’ai eu droit à un problème particulier sur le serveur : alors que rien dans la configuration des services n’a été changé, je me suis rendu compte que WordPress ne réagissait pas comme d’habitude.

Les symptômes les plus visibles sont la lenteur de l’application, l’impossibilité de mettre à jour ou corriger un article ou encore ajouter des tags à un nouvel article.

J’avais déjà connu cet état lors d’un crash de la base SQL il y a maintenant quelques années donc je me suis dit que j’allais commencer par redémarrer Apache puis réparer la base de données.

Serveur dédié : résoudre le problème "no space left on device" photo

Suppression des instances Apache et redémarrage du service

Dès le lancement de la session SSH, il est évident que quelque chose ne tourne pas rond. Après le message de bienvenue, un message d’erreur apparaît :

/usr/bin/xauth:  error in locking authority file /root/.Xauthority

Et en voulant arrêter Apache, on obtient:

Restarting web server: apache2. [error]
There are processes named 'apache2' running which do not match your pidCode language: JavaScript (javascript)

On commence donc par régler ce problème et on regarde quels sont les PID utilisés par Apache:

pidof apache2

La commande pidof nous retourne toute une liste de pid:

32691 31385 31154 30917 30663 29150 27368 24820 24563 17531 15227 14235 13559 13064 11028 10906 10256 9156 9144 9042 8855 8542

On met fin à toutes ces instances avec un simple kill -9:

kill -9 32691 31385 31154 30917 30663 29150 27368 24820 24563 17531 15227 14235 13559 13064 11028 10906 10256 9156 9144 9042 8855 8542

Une fois toutes les instances d’Apache supprimées, il nous est de nouveau possible de redémarrer le service normalement:

service apache2 restart

Ménage dans l’espace disque et le nombre d’inodes disponibles

Au moment de réparer les tables de la base de données, rebelote, erreur :

No space left on device (error 28)

On commence par un petit ménage dans les paquets obsolètes, qui ne résoudra pas grand-chose:

apt-get autoclean && apt-get autoremoveCode language: JavaScript (javascript)

Je tente un simple df pour vérifier si les disques sont pleins :

df

mais visiblement, non, il reste bien de la place :

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       9.8G  4.4G  5.0G  47% /
devtmpfs        2.0G     0  2.0G   0% /dev
tmpfs           390M  408K  390M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           780M     0  780M   0% /run/shm
/dev/sda2       683G  531G  118G  82% /homeCode language: PHP (php)

Je tente alors un df -i pour vérifier le nombres d’inodes disponibles :

df -i

Un nœud d’index ou inode (contraction de l’anglais index et node) est une structure de données contenant des informations à propos d’un fichier stocké dans les systèmes de fichiers Linux/Unix.

À chaque fichier correspond un numéro d’inode (i-number) dans le système de fichiers dans lequel il réside, unique au périphérique sur lequel il est situé.

Serveur dédié : résoudre le problème "no space left on device" photo 1
Descripteurs de fichiers, table des fichiers et table des inodes sous Linux

Les inodes contiennent notamment les métadonnées des systèmes de fichiers, et en particulier celles concernant les droits d’accès.

Les inodes sont créés lors de la création du système de fichiers. La quantité d’inodes (généralement déterminée lors du formatage et dépendant de la taille de la partition) indique le nombre maximum de fichiers que le système de fichiers peut contenir.

Dans notre cas, catastrophe, il ne reste quasiment plus d’inodes disponibles !

Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/root        640K  640K     6   100% /
devtmpfs         487K  1.5K  486K    1% /dev
tmpfs            488K   864  487K    1% /run
tmpfs            488K    10  488K    1% /run/lock
tmpfs            488K     2  488K    1% /run/shm
/dev/sda2         44M   37K   43M    1% /home

Lire la suite

Linux : régler le problème des accents circonflexes et la disposition du clavier photo

Linux : régler le problème des accents circonflexes et la disposition du clavier

Problème d’accent circonflexe

Je me suis rendu compte en écrivant mes derniers articles que le clavier de mon ordinateur portable n’était pas bien configuré : il était en effet impossible d’écrire la lettre ê (e accent circonflexe).

Le problème est dû au choix de la configuration du clavier à l’installation du système d’exploitation. Dans ma précipitation, j’avais choisi le modèle 105 touches, sans lettres mortes.

Solution : changer la disposition du clavier

Sous Ubuntu, voici la marche à suivre pour ajouter un clavier utilisable avec les accents:

Allez dans Système > Préférences > Matériel > Clavier > Agencement,

Cliquez sur Ajouter,

Sélectionnez Pays: France puis Variantes: Français,

Enlevez la disposition du clavier précédente (“Français, sans touches mortes” pour moi),

Testez l’accent circonflexe, normalement ce devrait être réglé.

Simple et efficace, sans prise de tête !

Un fond noir avec le changeur de papier peint Linux Variety dessus.

Linux : installer Variety pour changer votre fond d’écran automatiquement

Du besoin de changer de fond d’écran

J’aime bien que mon fond d’écran change de temps en temps. Cela permet de ne pas avoir un bureau trop fixe, de ne pas avoir toujours la même image sous les yeux.

Ce qui est drôle, c’est que ce n’était pas le cas avant – je pouvais garder le même fond d’écran pendant des mois, voire même des années pour certains.

Sous linux, j’ai utilisé plusieurs programmes pour varier les fonds d’écrans comme Drapes ou Wallch mais, au fur et à mesure des nouvelles moutures de mon système d’exploitation et/ou des mises à jours des paquets et dépendances, ces programmes ont cessé de fonctionner. D’abord Drapes puis, récemment Wallch.

Je suis donc parti en croisade pour chercher une nouvelle alternative et suis tombé sur Variety, qui tourne sous tous les linux dérivés de Debian, comme Ubuntu ou Linux Mint.

Variety

Variety est donc un changeur de fond d’écran (wallpaper changer, c’est plus chic et ça sonne mieux en anglais) léger, très exhaustif en fonctionnalités et ultra-simple à prendre en main.

Il peut automatiquement télécharger de nouvelles images depuis des sources diverses, changer le fond d’écran à un intervalle donné ou à la demande et permet de trier les images pour garder les meilleures.

On peut également ajouter de nouvelles sources d’images.

Lire la suite

Linux : retrouver l'usage des touches F5 et F6 pour régler la luminosité depuis le clavier d'un ordinateur portable photo

Linux : retrouver l’usage des touches Fn + F5 et F6 pour régler la luminosité depuis le clavier d’un ordinateur portable

Pour mes 35 ans, j’ai eu le plaisir immense de recevoir un nouveau laptop pour remplacer mon ancien PC portable de 2005 dont l’écran avait lâché.

Linux : retrouver l'usage des touches F5 et F6 pour régler la luminosité depuis le clavier d'un ordinateur portable photo

Après avoir joué quelques minutes avec Windows 10, j’ai ensuite installé Ubuntu Mate, qui a l’air vraiment génial.

Après l’installation, au redémarrage de la machine, je constate que la luminosité de l’écran est au maximum et qu’il m’est impossible de régler la luminosté avec les touches Fn + F5/F6.

Si vous êtes vous aussi confronté à ce problème, voici comment le résoudre.

Baisser la luminosité de l’écran

On commence par baisser la luminosité de l’écran avant de perdre la vue ou attraper une sinusite oculaire.

Rendez-vous dans Système > Préférences > Matériel > Gestionnaire d’énergie et baissez la luminosité. Je l’ai mise à 60% dans mon cas.

Ajouter le support des touches F5 et F6 pour régler la luminosité

Il nous reste maintenant à ajouter le support des touches F5 et F6 pour régler la luminosité. Cela m’a pris un peu de temps pour trouver la solution : j’ai d’abord regardé sur le net, installé des paquets, testé, rebooté…

En fait, il n’y a pas de paquets à installer. Il suffit juste d’ajouter une directive dans la configuration de démarrage de GRUB.

1. On édite /etc/default/grub en tant que root :

sudo nano  /etc/default/grubCode language: JavaScript (javascript)

2. On recherche la ligne GRUB_CMDLINE_LINUX_DEFAULT

3. On rajoute l’instruction “acpi_osi=” à la fin de cette ligne. Chez moi, cela donne donc:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi="Code language: JavaScript (javascript)

4. On met à jour GRUB:

sudo update-grub

Lire la suite

Mon nouveau laptop : Asus N551V photo

Mon nouveau laptop : Asus N551VW

Pour mes 35 ans, j’ai reçu un super cadeau d’anniversaire : un nouvel ordinateur portable Asus N551VW-FW119T.

Asus N551VW

Voici la bête en images :

Mon nouveau laptop : Asus N551V photo

et le clavier :

Mon nouveau laptop : Asus N551V photo 1

Au programme : un écran 15,6″ mat et anti-reflets, un processeur i7-6700HQ (2,6 GHz), 8 Go de RAM en DDR4, une carte graphique GTX 960M, un disque SSD de 128 Go + 1 To en SATA, coque en aluminium brossé…

Premières impressions

On ne va pas se le cacher, il est très rapide! Démarrage éclair, aucun lag dans le lancement des applications, c’est vraiment du bonheur. Le clavier est vraiment bien, avec pavé numérique et rétro-éclairage.

Parmi les inconvénients, je noterai le poids/encombrement puisque avec ses 2.7 kg, on ne va pas le trimballer tous les jours et l’autonomie – qui tourne autour des 3h30-4h. Il est difficile d’allier performance et autonomie à l’heure actuelle.

Lire la suite

Linux : installer Android Studio pour développer des applications Android photo 1

Linux : installer Android Studio pour développer des applications Android

Aujourd’hui, nous installons tous les outils nécessaires pour devélopper des applications Android sous Linux.

Ce tutoriel s’adresse aux utilisateurs Linux mais est très facilement transférable d’un système à l’autre.

Ma machine principale tourne sous Ubuntu mais le tuto fonctionne aussi pour Linux Mint ou Debian.

Pour mener à bien l’installation, il nous faut donc : une version récente de Java et Android Studio pour coder nos applications pour mobiles, tablettes, télévision, Android wear… vous allez vraiment pouvoir vous amuser !

Installation de Java

On installe la version Oracle de Java pour maximiser les chances que tout tourne bien ensuite, avec un PPA :

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update 
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-defaultCode language: JavaScript (javascript)

On vérifie notre version de Java:

java -version

ce qui nous retourne :

java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)Code language: CSS (css)

Java 8 est donc bien installé.

Installation d’Android Studio

On installe Android Studio avec un PPA également:

sudo add-apt-repository ppa:paolorotolo/android-studio
sudo apt-get update
sudo apt-get install android-studioCode language: JavaScript (javascript)

et on lance l’assistant de configuration qui va récupérer les packages et les mises à jour :

/opt/android-studio/bin/studio.sh

L’installation prend pas mal de temps, il y a environ 600 Mo à télécharger et à compiler ensuite.

Lire la suite

Se connecter depuis un serveur vers un NAS Synology avec des clés SSH, sans mot de passe photo

Se connecter depuis un serveur vers un NAS Synology avec des clés SSH, sans mot de passe

La sauvegarde des données

Un des problèmes majeurs dans la gestion des données informatiques est la sauvegarde des données.

Idéalement, il faut pouvoir être en mesure de disposer de plusieurs copies de sauvegarde de nos données, intégres et utilisables, disponibles dans plusieurs lieux géographiquement éloignés afin de prévenir les risques.

Il est très utile d’avoir un script de sauvegarde comme backup-manager sur le serveur qui va automatiquement envoyer les fichiers de sauvegarde sur un espace de stockage distant.

Sur ce serveur par exemple, les sauvegardes sont envoyées sur le FTP de backup mis à disposition par OVH.

Connexion à un serveur distant en SSH, sans mot de passe

Se connecter depuis un serveur vers un NAS Synology avec des clés SSH, sans mot de passe photo 1

Mais il est également possible d’en envoyer une copie chez vous, directement sur votre NAS. Pour plus de sécurité (le FTP n’est pas un protocole sécurisé) il peut être très intéressant de créer un set de clés SSH pour que le script de sauvegarde (ou alors rsync) se connecte directement à votre NAS/serveur de sauvegarde en SSH.

Voyons donc comment nous pouvons créer un jeu de clés SSH sur notre serveur linux – ou n’importe quelle autre machine Unix, comme votre PC – vers un NAS Synology.

Cela nous permettra de nous identifier sur le NAS depuis le serveur, sans avoir à rentrer de mot de passe ou à le mettre en clair dans un script. C’est aussi un grain de temps de se logguer en SSH au NAS sans mot de passe !

Se connecter depuis un serveur vers un NAS Synology avec des clés SSH, sans mot de passe photo

Lire la suite

Installer IPKG sur un NAS Synology photo

NAS Synology : installer IPKG pour ajouter des applications supplémentaires

Note : IPKG n’est plus maintenu donc je vous conseille de suivre le nouveau tutoriel pour votre NAS Synology : installer Entware en remplacement d’IPKG pour des applications à jour.

De temps en temps, on a besoin d’intervenir sur le NAS et l’interface web d’administration du Synology n’est ni la plus intuitive, ni la plus rapide. En tout cas, sur un D212+, cela rame toujours un peu.

Aujourd’hui, je vous montre comment ouvrir une session SSH en tant que root sur votre Synology afin d’y installer des applications non officielles mais toutes aussi valables comme nano ou screen. Ce tuto prend à peine 10 minutes à réaliser.

Cela nous permettra à terme de pouvoir lancer différentes commandes et d’exploiter à fond les possibilités du NAS.

Activer SSH sur le Synology

Première étape : on active le service SSH sur le Synology :

  1. connectez-vous au webadmin de votre Synology,
  2. rendez-vous dans Control Panel > Applications > Terminal & SNMP,
  3. dans l’onglet Terminal, cochez l’option Enable SSH service,
  4. changez le port par défaut pour quelque chose de plus exotique : 44222 par exemple,
  5. sauvegardez les options.

Retenez bien le numéro du port que vous avez défini. Il sera maintes fois utilisé par la suite.

Ouvrir une session SSH sur le NAS avec l’utilisateur root

Cette étape est cruciale et permet d’éviter de longues heures de recherche sur Internet pour comprendre pourquoi les commandes des étapes suivantes ne fonctionnent pas…

Vous devez *absolument* ouvrir une session SSH sur le NAS en tant qu’utilisateur root.

Le mot de passe de l’utilisateur root est le même que celui de l’utilisateur admin mais une session en tant qu’admin ne vous donnera pas les droits nécessaires pour installer quoi que ce soit.

Lire la suite

Apache : résoudre l'erreur "421 Misdirected Request" photo

Apache : résoudre l’erreur “421 Misdirected Request”

Après la mise à jour d’Apache et HTTP/2, il est apparu un nouveau type d’erreur : l’erreur 421 Misdirected Request.

Erreur 421 : erreur de configuration mod_ssl entre Virtual Hosts

Ce type d’erreur arrive lorsque:

  1. HTTP/2 est activé,
  2. les paramètres SSL de plusieurs Virtual Hosts diffèrent du serveur responsable du handshake SSL/TLS.

En analysant le changelog d’Apache 2.4.18, je me suis rendu compte que si les paramètres SSL et notamment la liste des ciphers utilisables ne sont pas équivalentes entre les différents Virtual Hosts, alors l’erreur 421 est déclenchée.

Solution : harmoniser la configuration mod_ssl

La solution est donc toute simple, il suffit de comparer la configuration mod_ssl des Virtual Hosts et l’harmoniser de manière à lisser les différences. Je vous recommande un outil comme Meld pour comparer les différences entre vos fichiers.

Meld est disponible dans les dépôts de base, vous pouvez l’installer sur votre machine de dév avec un simple:

apt-get install meldCode language: JavaScript (javascript)

Le domain sharding ou servir les ressources statiques sur un sous-domaine

Sur le site, cela est dû à la mise en place du domain sharding que j’avais mis en place il y a quelques années pour charger plusieurs fichiers ressources en parallèle et accélérer les temps de chargement.

HTTP/2 promet beaucoup de choses et apparemment le domain sharding serait maintenant devenu inutile. J’attends un peu de voir comment vont évoluer les choses avant de changer toute ma configuration et éditer tous mes liens.

Bash : personnaliser les couleurs de l'invite de commande (prompt) du terminal photo

Bash : personnaliser les couleurs de l’invite de commande (prompt) du terminal

Bash : réparer les tables MySQL en cas de crash photo

Lorsque l’on jongle avec différents serveurs et plusieurs fenêtres de terminal, il n’est pas toujours évident d’identifier immédiatement sur quelle machine on se trouve.

Pour remédier à ce problème, je vous propose de changer les couleurs de l’invite de commande (prompt) de votre terminal sous linux.

Editer le fichier .bashrc

Nous allons éditer le fichier .bashrc, qui permet d’éditer les préférences utilisateurs pour tout ce qui concerne bash:

nano .bashrcCode language: CSS (css)

Ajout de styles

Et voici quelques styles sympas à ajouter pour tuner votre prompt.

Style Lemon Lime

Ajoutez ceci à votre fichier .bashrc:

export PS1="\[$(tput bold)\]\[$(tput setaf 6)\]\t \[$(tput setaf 2)\][\[$(tput setaf 3)\]\u\[$(tput setaf 1)\]@\[$(tput setaf 3)\]\H \[$(tput setaf 6)\]\w\[$(tput setaf 2)\]]\[$(tput setaf 4)\]\\$ \[$(tput sgr0)\]"Code language: JavaScript (javascript)
Bash : personnaliser les couleurs de l'invite de commande (prompt) du terminal photo

C’est mon style préféré, très cocktail d’été. Voilà ce que cela donne:

Style Matrix

Vous pouvez aussi opter pour le style Matrix, tout vert:

export PS1="\[$(tput bold)\]\[$(tput setaf 2)\][\u@\h \W]\\$ \[$(tput sgr0)\]"Code language: JavaScript (javascript)

Style Rainbow

Ou encore pour un arc-en-ciel de couleurs :

export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][\[$(tput setaf 3)\]\u\[$(tput setaf 2)\]@\[$(tput setaf 4)\]\h \[$(tput setaf 5)\]\W\[$(tput setaf 1)\]]\[$(tput setaf 7)\]\\$ \[$(tput sgr0)\]"Code language: JavaScript (javascript)

Personnalisation du prompt

Si vous souhaitez ajoutez des composants à votre prompt, voici quelques mots-clé utiles:

  • \u le nom de session utilisateur
  • \h le nom d’hôte jusqu’au premier ‘.’
  • \H le nom d’hôte complet
  • \n saut de ligne
  • \$ affiche le signe $ pour un simple utilisateur ou # pour l’utilisateur root
  • \\ un backslash “\”

Et voilà, un peu de couleur dans notre terminal !

Serveur dédié : mettre à jour Apache et configurer le mod_h2 pour HTTP/2 photo

Serveur dédié : mettre à jour Apache pour HTTP/2

C’est sur toutes les lèvres : 2015 aura vu l’arrivée de PHP7 et de la révision du protocole HTTP qui passe à la version 2, en remplacement du mod_spdy de Google.

Tout cela promet pas mal de gains de performance donc il est très tentant de le vérifier par nous-mêmes.

HTTP/2 : une évolution du protocole HTTP

Avec HTTP/1.1, la vie des développeurs n’était pas simple. L’optimisation d’un site revenait à plusieurs techniques qui tournaient toutes autour de l’idée de minimiser le nombre de requêtes HTTP vers un serveur d’origine.

Un navigateur ne peut ouvrir qu’un nombre limité de connexions TCP simultanées vers une origine et le chargement des ces ressources via chacune de ces connexions est un processus en série : la réponse de chaque ressource doit être retournée avant que la réponse de la ressource suivante ne soit envoyée. C’est ce qu’on appelle le head-of-line blocking.

HTTP/2 promet donc des gains de performance d’environ 30%, sans avoir à gérer ni minification ni concaténation dans le processus de création et déploiement des pages.

Plus besoin (normalement!) d’optimiser les connexions TCP ou les requêtes HTTP avec la création de sprites, le chargement des ressources directement dans le corps des pages, la concaténation ou la création de sous-domaines pour charger les ressources en parallèle (domain sharding) pour contourner les limitations d’HTTP 1.1.

Lire la suite

Fail2Ban: protéger Postfix contre les attaques AUTH DoS photo

Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO

Aujourd’hui, Jac m’envoie un message pour m’informer que sa redirection email ne fonctionne plus.

Je lance donc un terminal et vérifie les logs de Postfix, qui chargent des dizaines de lignes d’erreurs de ce type:

Dec 15 16:30:33 mail postfix/smtpd[5912]: connect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5912]: lost connection after AUTH from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5912]: disconnect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5908]: connect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5908]: lost connection after AUTH from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5908]: disconnect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]

Comme vous pourvez le constater, ça débite et ça impacte forcément les ressources du système. Voyons donc comment nous pouvons y mettre un terme.

Fail2Ban: protéger Postfix contre les attaques AUTH DoS photo

Pré-requis : fail2ban

Nous allons utiliser fail2ban, un compagnon très utile pour surveiller les logs et analyser les comportements néfastes à l’aide d’expressions régulières.

Je vous invite à relire le guide d’installation de fail2ban.

Nouvelle définition dans fail2ban : postfix-auth

Nous ajoutons donc une nouvelle définition, [postfix-auth], dans notre fichier jail.local:

nano /etc/fail2ban/jail.local

On l’ajoute à la fin des déclarations pour les serveurs mails :

[postfix-auth]
enabled     = true
filter      = postfix.auth
action      = iptables-multiport[name=postfix, port="http,https,smtp,submission,pop3,pop3s,imap,imaps,sieve", protocol=tcp]
#           sendmail[name=Postfix, dest=you@mail.com]
logpath     = /var/log/mail.logCode language: PHP (php)

Je désactive volontairement l’envoi des notifications, ce serait un comble.

Lire la suite