lundi 22 septembre 2014

Installer Php 5.3 sur une machine Debian Lenny

Le serveur que j'utilise principalement pour mes développements web est une ancienne machine sous Debian/Lenny que je n'ai jamais pris le temps de faire évoluer car elle héberge pas mal d'autres choses qu'un simple serveur web et que la migration va me demander pas mal de travail.
Jusqu'à aujourd'hui, la version de Php sur cette machine était la dernière distribuée par Debian pour Lenny : Php 5.2

Je pensais pouvoir continuer comme ça encore un moment, le temps d'installer une nouvelle machine sous un Linux plus récent et de procéder à une migration progressive des différents services. Mais comme tout ne se passe pas toujours comme on voudrait, un développement particulier et urgent m'impose d'utiliser Php 5.3.

Après quelques hésitations je suis parti à la recherche des paquets Php5.3 et de ses principales extensions (mysql, gd, imagick, etc). J'ai fini par atterrir sur dotdeb.org qui m'a paru être une source fiable.
J'y ai trouvé tous les .deb qui m'intéressaient, il ne restait qu'à les préparer pour une installation locale avec apt-get (voir le chapitre 2.2 de ce how-to).
Finalement, la mise à jour s'est déroulée sans aucun problème et ma machine Lenny exécute bien Php5.3.

Le détail des opérations que j'ai effectuées est le suivant :

Notes :

  • Si dpkg-scanpackages n'est pas présent sur votre système, vous l'obtiendrez en installant le paquet dpkg-dev.
  • Un grand, grand, grand merci à dotdeb pour ces paquets.

lundi 23 juin 2014

TheOldReader, un agrégateur pour lire vos flux RSS

Même si les réseaux sociaux sont à la mode et qu'ils offrent un côté convivial très attrayant, je trouve qu'ils ne sont pas toujours la meilleure solution pour suivre efficacement les sites qui nous intéressent et ce pour au moins deux raisons.

  • L'information intéressante est facilement noyée dans un bruit de fond qui fait souvent perdre du temps et la rend difficile à trouver. Par exemple on établit une connexion avec quelqu'un car à un moment donné il diffuse une information que l'on trouve pertinente et ensuite notre flux d'actualité est envahi par des sujets relatifs à sa vie personnelle.
  • On n'a aucun accès aux algorithmes des principaux réseaux sociaux et certains savent très bien filtrer et trier l'information qu'ils nous diffusent.

Personnellement, je suis donc un adepte convaincu et un lecteur assidu des flux RSS (ou autres) pour suivre l'actualité des blogs qui m'intéressent.
Après avoir essayé pas mal d'autres systèmes, j'utilise depuis assez longtemps TheOldReader comme agrégateur.

TheOldReader offre toutes les fonctions essentielles à ce genre d'applications  : abonnement aux flux et possibilité de créer des dossiers pour les classer par catégories, notification des articles non lus, signalement des flux inactifs, etc. L'interface web que certains trouveront peut être un peu vieillotte est simple et très efficace.

TheOldReader est accessible depuis un navigateur internet et permet également de retrouver ses flux à partir de plusieurs applications mobiles sous Android et iOs.

La version de base que j'utilise pour l'instant est gratuite et permet de suivre jusqu'à cent flux, des versions payantes sont aussi disponibles dont le principal avantage est l'augmentation du nombre d'abonnements autorisé.
Une fonction de bookmarks a récemment été ajoutée aux versions payantes qui doit permettre la mémorisation de n'importe quelle page comme le gestionnaire de favoris d'un navigateur. Si elle fonctionne comme je l'espère, je basculerai certainement vers une version payante.

mardi 6 mai 2014

DataTables, un plugin jQuery pour manipuler des tables en Javascript

Cela fait un peu plus d'un an que j'utilise DataTables dans un projet où les clients doivent manipuler de gros tableaux de données affichés dans des pages web.

DataTables est un plugin jQuery assez simple à configurer et à utiliser et qui permet d'éviter la plupart de la lourde programmation Javascript que ce type de développement peut impliquer.

Les principales fonctions de DataTables que j'utilise sont les suivantes :

  • Tri des tableaux en cliquant sur les noms des colonnes.
  • Recherche des lignes contenant des mots clés saisis dans un champ de texte.
Mais ce plugin permet bien d'autres choses comme par exemple de paginer des tableaux.

Dans sa configuration initiale, DataTables travaille uniquement en Javascript ce qui signifie que tous les traitements de données sont effectués sur le poste client. Personnellement je l'utilise avec des performances tout à fait convenables pour des tableaux contenant entre 500 et 1000 lignes de 6 ou 7 colonnes. Pour des données nettement plus lourdes, DataTables peut également être configuré pour effectuer des appels Ajax chaque fois que la table doit être redessinée permettant ainsi de déplacer la charge vers le serveur.

mardi 25 mars 2014

AquaMail pour mettre fin aux problèmes de synchronisation des mails sous Android

Depuis un an que j'utilise ma tablette Nexus 7, je n'ai jamais été vraiment satisfait de la lecture des mails avec l'application standard d'Android.

Je dispose de plusieurs comptes mails chez OVH que je consulte en POP sous Thunderbird sur ma machine Ubuntu.
C'est sur cette machine que je filtre les spams, supprime ce qui ne m'intéresse pas et archive ce qui doit être conservé.
Sur ma tablette, je veux juste voir ce qui arrive sur mes adresses principales pour éventuellement réagir à une urgence lorsque je ne suis pas au bureau.

L'appli standard d'Android pour les mails n'est vraiment pas pratique à utiliser dans ce contexte car :

  • La synchronisation fonctionne mal. Parfois les mails sont supprimés du serveur après suppression de la tablette, parfois non. Les mails reçus sur la tablette n'en sont pas automatiquement supprimés après lecture sous Thunderbird et vidage du serveur.
  • Il n'existe aucun moyen pour vider la corbeille en une seule fois. Tous les mails qui y sont placés doivent être effacés manuellement.

Un peu lassé de tester une à une toutes les combinaisons des différentes options de synchronisation, j'ai fini par chercher sur le net et par découvrir que je n'étais vraiment pas le seul dans cette situation et que personne n'avait de solution à proposer.
J'ai donc abandonné l'appli standard et installé Aquamail. Depuis, tous mes problèmes sont résolus :

  • La corbeille peut être vidée d'un seul coup.
  • Les mails supprimés de la tablette sont bien effacés du serveur.
  • Lorsque Thunderbird efface les mails du serveur après téléchargement, l'appli se synchronise bien et ses boîtes de réception sont automatiquement nettoyées.

Pour ceux que ça intéresse, une très bonne FAQ est disponible ici.

samedi 1 mars 2014

OVH Problème d'accents lors du passage d'un hébergement 90 Plan à Perso 2014

Il y a quelques jours j'ai rencontré un problème de disparition de certains caractères accentués du site d'un de mes clients lors d'un changement d'hébergement chez OVH.

Ce site était hébergé depuis une dizaine d'années sur une ancienne offre 90 Plan et je devais le transférer vers la nouvelle offre Perso 2014.

L'encodage des caractères utilisé était ISO-8859-1 et l'affichage du contenu du site faisait appel à la fonction Php htmlspecialchars.
La version de Php utilisée sur l'ancienne offre d'hébergement était PHP 4 alors que sur les mutualisés 2014, la version par défaut est actuellement PHP 5.4.

Avec PHP 4, la valeur par défaut du paramètre facultatif encoding de htmlspecialchars est ISO-8859-1 alors qu'avec PHP 5.4 cette valeur est UTF-8.

La solution la plus simple et la plus rapide pour retrouver mes caractères accentués a été de revenir à la version 5.3 de Php en plaçant à la racine du site le fichier .ovhconfig suivant :

app.engine=php
app.engine.version=5.3
http.firewall=none
environment=production

Remarque : Un autre problème courant pouvant survenir lors du passage de PHP 4 à PHP 5 est lié aux modifications de la directive Register_globals. Voir ici.

lundi 3 février 2014

Comment utiliser root sous Ubuntu

Après l'installation d'Ubuntu, l'utilisateur root n'est pas actif et on ne peut pas l'utiliser. L'utilisateur standard du système est sensé passer par la commande sudo lorsqu'il a besoin d'exécuter des commandes réservées à l'administrateur. Personnellement je trouve cela vraiment inconfortable et je préfère ouvrir un terminal et basculer sous root par su.

Pour activer l'utilisateur root, il suffit de lui affecter un mot de passe en passant par sudo :
sudo passswd root

samedi 4 janvier 2014

Une astuce toute simple pour renforcer la sécurité d'un serveur ssh sous linux

Ssh est un protocole permettant la connexion à des machines distantes en cryptant les données circulant sur le réseau.
Il est très utilisé pour l'administration de serveurs à distance et offre pour cela un niveau de sécurité supérieur à telnet, ce qui ne dispense pas de prendre quelques précautions :

Les serveurs reliés à internet sont presque inévitablement scannés à l'aide d'outils cherchant des ports ouverts pouvant éventuellement être exploités dans des intentions malveillantes.
Si un serveur ssh est installé sur votre machine, l'ouverture du port 22 sera rapidement découverte et des connexions en tant que root vont tout aussi vite être tentées.

Il va sans dire que le mot de passe de l'utilisateur root doit être sérieux mais deux précautions valent mieux qu'une :
Je conseille vraiment de configurer le serveur ssh de façon à ce qu'il interdise les connexions du root et n'autorise que les connexions d'un utilisateur prédéfini auquel on aura attribué un login improbable, un vrai mot de passe, les droits les plus restreints et que l'on aura exclu de la liste des sudoers.

De cette façon, vous pouvez établir la connexion en utilisant cet utilisateur puis utiliser la commande su pour travailler en tant que root. Par contre si une personne mal intentionnée arrive à entrer en possession des informations lui permettant de se connecter via ssh, il faudra encore qu'elle trouve le mot de passe du root pour disposer des droits d'administration sur la machine.

Cette configuration est simple à mettre en place dans le fichier /etc/ssh/sshd_config où il suffit d'indiquer :

  • PermitRootLogin no pour interdire les connections en tant que root
  • AlloUsers toto pour n'autoriser que les connections de l'utilisateur toto.