Tag Archives

7 Articles
Utiliser Http/2 avec Nginx sous Ubuntu 14.04

Utiliser Http/2 avec Nginx sous Ubuntu 14.04

Il y a quelques jours, j’ai été confronté à un problème de taille pour l’évolution de nos architectures WEB : Le passage au protocole HTTP/2.

Sur la documentation de NGinx, il n’y a rien de plus simple. Il suffit de passer NGinx dans la dernière version en date (http/2 marche depuis la 1.9.5) et d’avoir son site fonctionnant en HTTPS, rajouter une petite option dans son VHost et le tour est joué. Seulement, ce n’est pas si simple sous Ubuntu 14.04.

Avant d’expliquer comment faire pour rendre cette modification possible, je vais vous montrer comment installer la dernière version de NGinx et comment activer cette option dans vos VHost.

Installation de la version mainline de NGinx

Pour avoir accès au module HTTP2, il vous faut la dernière version de NGINX compilée avec openSSL en version 1.0.2 minimum et avec le flag http2. Sans ça, vous ne pourrez pas activer le HTTP/2 sur vos VHosts et les navigateurs n’accepteront pas le protocole.

Heureusement, @ChrisLea fournit un PPA contenant le package Nginx compile avec ces prérequis. Pour s’y inscrire et installer/mettrer à jour Nginx rien de plus simple :

sudo add-apt-repository -y ppa:chris-lea/nginx-devel
sudo apt-get update
# cas d'une MAJ
sudo apt-get upgrade
# cas d'une nouvelle installation
sudo apt-get install nginx-full
Attention : Si jamais la commande `add-apt-repository` ne marche pas chez vous, pensez à installer les packages suivants :

sudo apt-get install software-properties-common

Maintenant que NGinx est bien installé dans sa dernière version, vous pouvez maintenant activer le protocole http2 sur vos VHost facilement. Vous avez juste à éditer votre fichier et à remplacer la ligne suivante :

listen 443 ssl;

par :

listen 443 ssl http2;

Pensez à relancer Nginx puis, quand vous accédez à votre site, vous devriez voir dans les protocoles que vous êtes en h2 au lieux de http/1.1 :

Capture du 2015-11-05 12:49:45

Si vous avez bien h2 dans les protocoles, vous pouvez arrêter ici. Votre Ubuntu est correctement configuré et vous n’avez aucun souci. Pour les autres, les choses se corcent un peu et nous allons tout de suite voir ça.

Mise à jour d’OpenSSL

Si le protocole HTTP/2 ne marche pas chez vous, c’est due à la version de OpenSSL installé sur votre serveur. Comme indiqué plus haut, Nginx doit être compilé avec OpenSSL 1.0.2 pour pouvoir avoir le protocole HTTP/2 pris en compte par les navigateurs. Le souci, c’est que la library OpenSSL installée au sein d’Ubuntu doit aussi être la 1.0.2. Et dans la version 14.04, la dernière version disponible est la 1.0.1f.

La version 1.0.2 inclut la spécification RFC7301 ou le support du protocole ALPN qui est requis pour pouvoir accepter des négociations HTTP/2.
La version 1.0.1 ne permet d’utiliser que le protocole NPN qui est maintenant déprécié (mais qui suffit à activer le support d’HTTP/2 sous Firefox).

Pour mettre à jour OpenSSL en version 1.0.2, deux choix sont possibles : La compilation depuis les sources de la dernière version ou de trouver un PPA distribuant directement le package OpenSSL à jour.

Il se trouve qu’un dépôt distribuant PHP en version 5.6 dispose du paquet OpenSSL à jour. Pour s’y inscrire rien de plus simple :

sudo add-apt-repository -y ppa:ondrej/php5-5.6
sudo apt-get install openssl
Attention : Si jamais vous avez une erreur de clé de signature, vous devrez rentrer la commande suivante :

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C

Ensuite, pensez à réinstaller Nginx pour prendre en compte notre version d’OpenSSL mise à jour :

sudo apt-get install --reinstall nginx-full

Et le tour est joué. Maintenant si vous essayez d’accéder à votre site, vous devriez le voir avec le protocole h2.

Source

Slack pour Linux ? Essayez Scudcloud

Slack pour Linux ? Essayez Scudcloud

Vous êtes sous Linux et vous en avez marre de devoir réserver un onglet de navigateur pour Slack ?Vous voulez enfin une application dédiée ? Et bien vous devriez essayer ScudCloud.

Scudcloud est un client non officiel de Slack et il est compatible avec la plupart des distributions linux du moment : Debian, Ubuntu, Kubuntu, Mint, Arch, Fedora.

De plus, il a les fonctionnalités suivantes :

  • support multi team
  • utilisation des notification systèmes
  • Affichage du nombre d’éléments non lus depuis le lanceur/systray
  • alerte à chaque nouveau message
  • Optionnel : Réduire dans le systray en fermant.

Si ce client vous intéresse, voici la méthode d’installation pour ceux tournant sous Ubuntu :

sudo apt-add-repository -y ppa:rael-gc/scudcloud
sudo apt-get update
sudo apt-get install scudcloud 

Si vous voulez le spell checking pensez à ajouter le dictionnaire hunspell dans votre langue :

sudo apt-get install hunspell-fr

Pour toute autre information, je vous renvoie directement sur la page du projet

Mettre à jour NodeJS sur Debian/Ubuntu + Bonus

Mettre à jour NodeJS sur Debian/Ubuntu + Bonus

Comme vous avez pu le remarquer, NodeJS 0.12 est sortie il y a maintenant quelques mois. Malheureusement l’ancien dépôt apt utilisé pour mettre à jour NodeJS n’est plus maintenu depuis pas mal de temps.

Fort heureusement, NodeSource a mis à disposition un script pour mettre à jour NodeJS à jour dans sa dernière version. Et, encore plus fort, on peut choisir si l’on veut la dernière de la branche 0.10, 0.12 ainsi que de iojs.

L’installation est compatible sur les systèmes suivants :

  • Debian testing (jessie)
  • Debian unstable (sid)
  • Ubuntu 14.04 LTS (Trusty Tahr)
  • Ubuntu 14.10 (Utopic Unicorn)
  • Ubuntu 15.04
  • Linux Mint
  • Linux Mint Debian Edition
  • elementary OS
  • Trisquel
  • Toutes les variantes à jour de Debian et Ubuntu
Si vous changez la version de Node.JS, pensez à réinstaller vos modules globaux et locaux de NPM afin qu’ils soient compilés avec la bonne version de NodeJS.

Voici les lignes de commandes pour mettre à jour NodeJS dans chacune d’entre elles :

NodeJS 0.10

# Note the new setup script name for Node.js v0.10
curl -sL https://deb.nodesource.com/setup_0.10 | sudo bash -

# Then install with:
sudo apt-get install -y nodejs

NodeJS 0.12

# Note the new setup script name for Node.js v0.12
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -

# Then install with:
sudo apt-get install -y nodejs

IO.JS 1.x

# Note the new setup script name for io.js
curl -sL https://deb.nodesource.com/setup_iojs_1.x | sudo bash -

# Then install with:
sudo apt-get install -y iojs

Petit Bonus

Il se peut que, pour un projet, vous deviez repasser à NodeJS 0.10 puis revenir vers la 0.12 pour un autre projet et vice-versa. Vous pouvez, si vous le souhaitez, partir sur NVM mais je vous le déconseille fortement.

À la place, je vous propose un petit script simple à placer ici : /usr/bin/nmv

!#/bin/bash

case $1 in
    0.10)
        curl -sL https://deb.nodesource.com/setup_0.10 | sudo bash - && sudo apt-get remove -y nodejs && sudo apt-get install -y nodejs
        ;;
    0.12)
        curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash - && sudo apt-get remove -y nodejs && sudo apt-get install -y nodejs
        ;;
    *)
        echo "Usage :"
        echo "nmv [version]"
        echo ""
        echo "Availables versions :"
        echo "0.10, 0.12, iojs"
        ;;
esac

Après, vous pourrez facilement choisir la version de NodeJS à installer en effectuant les commandes suivantes :

# install NodeJS 0.10
nmv 0.10
# install NodeJS 0.12
nmv 0.12

Source

Personnalisation du terminal : Powerline

Personnalisation du terminal : Powerline

Bonjour et tout d’abord. Bonne Année 2014 à tous. Pour commencer cette année sur de bons pieds, je vais vous apprendre à installer Powerline sur votre machine UNIX.

À l’heure où j’écris cet article, l’installation a été effectuée sous Max OSX Maverick et Ubuntu 13.04. Je ne promets pas que l’installation soit similaire sous les versions antérieures.

Introduction

Powerline qu’est-ce que c’est ? C’est un programme python permettant une personnalisation spécifique du Terminal, Vim, … Vu qu’un screenshot parle plus que des mots, voici comment sera votre terminal à la fin de cet article :

powerline_1

Installation

Prérequis

Avant d’installer Powerline, un certain nombre de choses doivent être installées sur votre machine.

Vous devrez installer Python avant toute chose. Vu que Powerline est écrit en Python, il est nécessaire de l’avoir pour que celui-ci fonctionne. De plus, pour la suite de l’installation, nous avons besoin d’installer pip permettant d’installer de nouveaux packages au sein de Python (tout comme npm pour node).

# OSX
brew install python
# Ubuntu 
sudo apt-get install python
# La suite est commune
sudo easy_install pip

Ensuite, afin que les commandes des modules complémentaires de Python soient reconnus par votre terminal, vous devrez rajouter les lignes suivantes dans votre ~/.bash_profile :

OSX :

if [ -d "$HOME/Library/Python/2.7/bin" ]; then
    export PATH="$HOME/Library/Python/2.7/bin:$PATH"
fi

Linux :

if [ -d "$HOME/.local/bin" ]; then
    export PATH="$HOME/.local/bin:$PATH"
fi

Pour que les modifications soient prises en compte, relancez votre terminal ou bien tapez source ~/.bash_profile si vous l’avez d’ouvert.

Pour finir, pour que les caractères spéciaux de powerline marchent sur votre poste, vous devrez installer une police pré-patchée que vous pourrez trouver ici : Github powerline pre-patched fonts. Personnellement, je vous conseillerais de prendre la police UbuntuMono.

Le coeur de l’installation

Maintenant que vous avez installé tous les prérequis, il ne reste plus qu’à installer et configurer powerline. Pour l’installation, rien de plus simple :

pip install --user git+git://github.com/Lokaltog/powerline

Voilà powerline est installé dans sur votre poste. Par contre, votre terminal n’a pas changé. C’est normal. Vous devrez rajouter la ligne suivante dans votre ~/.bash_profile puis relancer le terminal :

# ligne sous OSX
. ~/Library/Python/2.7/lib/python/site-packages/powerline/bindings/bash/powerline.sh
# ligne sous Linux
. ~/.local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh

Normalement, vous devriez avoir l’apparence de la capture d’écran en haut de l’article.

Bonus

Si vous voulez, en plus de ça, savoir dans quelle branche GIT/SVN/… vous êtes quand vous vous baladez dans vos projets, voici ce que vous devez faire :

mkdir ~/.config/powerline
# OSX
cp -R ~/Library/Python/2.7/lib/python/site-packages/powerline/config_files/* ~/.config/powerline
# Linux
cp -R ~/.local/lib/python2.7/site-packages/powerline/config_files/* ~/.config/powerline
vim ~/.config/powerline/config.json

Et maintenant, vous devrez changer la valeur de ext.shell.theme qui est à default en default_leftonly. Après ceci, vous devriez voir dans quelle branche vous vous trouvez.

Conclusion

Ici, je ne vous ai montré que l’installation de Powerline pour votre terminal. Mais il faut savoir que vous pouvez aussi l’installer pour VIM (article à venir), rajouter des informations (load average, réseau disponible ou non, …).

Source

Powerline Spellchecker

.htaccess et Active Directory 2008

.htaccess et Active Directory 2008

La dernière fois, je vous ai montré comment réaliser une connexion avec Active Directory par le biais d’un .htaccess. Ces tests étaient en fait effectués sur un serveur Windows 2000 et, ce week-end, j’ai effectué une migration d’Active Directory vers la version 2008.

Après cette migration, il se trouve que la connexion .htaccess ne fonctionne plus. J’avais l’erreur suivante dans les logs Apache2 :

auth_ldap authenticate: user bbe authentication failed; URI /testldap [ldap_search_ext_s() for user failed][Operations error]

Il faut juste modifier certaines lignes de notre fichier pour que le tout fonctionne. Voici donc une correction de mon précédent article :

AuthLDAPURL ldap://192.168.0.103:389/CN=Users,DC=virtual,DC=fr?sAMAccountName?sub?(objectClass=user)
AuthLDAPBindDN "CN=Nom complet utilisateur,CN=Users,DC=virtual,DC=fr"
AuthLDAPBindPassword password</code> Et vocii notre .htaccess global : <code lang="apache">AuthName "Warning : Restricted Area !!"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL ldap://192.168.0.103:389/CN=Users,DC=virtual,DC=fr?sAMAccountName?sub?(objectClass=user)
AuthLDAPBindDN "CN=Nom complet utilisateur,CN=Users,DC=virtual,DC=fr"
AuthLDAPBindPassword password
require valid-user

Edit : Si vous voulez authentifier un groupe Active Directory voici les lignes à rajouter (merci à Azigui pour l’astuce) :

AuthLDAPGroupAttributeIsDN on
require ldap-group CN=Nom du groupe,DC=Virtual,DC=fr

Voilà, j’espère que maintenant vous n’aurez plus aucun problème à effectuer une authentification LDAP.