Throrïn

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

Node.JS 4.0.0 vient de sortir

Node.JS 4.0.0 vient de sortir

Bonjour à tous,

Une semaine après la rentrée, une grande nouvelle a été annoncée hier soir : Node.JS 4.0.0 a été publiée en version finale.

4.0.0 ? Mais on était pas en 0.12 juste avant ?

Je vous répondrait par un grand oui. Ce changement brutal de version s’explique par le fait que Node.JS et IO.JS ont été mergés ensemble pour cette nouvelle version. Ce qui veut dire que nous avons le droit, pour cette version, à toutes les nouveautés de IO.JS 3.0 mais pas que. Voici le début du changelog fourni par Node.JS

  • child_process: ChildProcess.prototype.send() and process.send() operate asynchronously across all platforms so an optional callback parameter has been introduced that will be invoked once the message has been sent, i.e. .send(message[, sendHandle][, callback]) (Ben Noordhuis) #2620. node: Rename « io.js » code to « Node.js » (cjihrig) #2367.
  • node-gyp: This release bundles an updated version of node-gyp that works with all versions of Node.js and io.js including nightly and release candidate builds. From io.js v3 and Node.js v4 onward, it will only download a headers tarball when building addons rather than the entire source. (Rod Vagg) #2700 npm: Upgrade to version 2.14.2 from 2.13.3, includes a security update, see https://github.com/npm/npm/releases/tag/v2.14.2 for more details, (Kat Marchán) #2696. timers: Improved timer performance from porting the 0.12 implementation, plus minor fixes (Jeremiah Senkpiel) #2540, (Julien Gilli) nodejs/node-v0.x-archive#8751 nodejs/node-v0.x-archive#8905
  • util: The util.is*() functions have been deprecated, beginning with deprecation warnings in the documentation for this release, users are encouraged to seek more robust alternatives in the npm registry, (Sakthipriyan Vairamani) #2447.
  • v8: Upgrade to version 4.5.103.30 from 4.4.63.30 (Ali Ijaz Sheikh) #2632.
  • Implement new TypedArray prototype methods: copyWithin(), every(), fill(), filter(), find(), findIndex(), forEach(), indexOf(), join(), lastIndexOf(), map(), reduce(), reduceRight(), reverse(), slice(), some(), sort(). See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray for further information.
  • Implement new TypedArray.from() and TypedArray.of() functions. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray for further information.
  • Implement arrow functions, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions for further information.
  • Full ChangeLog available at https://github.com/v8/v8-git-mirror/blob/4.5.103/ChangeLog

Pour installer cette version, rien de plus simple :

# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_4.x | bash -
apt-get install -y nodejs

Pensez aussi à réinstaller vos modules npm pour les compiler avec le nouveau moteur mais attention, il y a encore plusieurs modules non compatibles dont :

  • IconV
  • Canvas
  • ICU-charset-detector

Sources

Changer l’adresse privée de sa VM avec Azure-cli

Changer l’adresse privée de sa VM avec Azure-cli

Avant de commencer, vous devez avoir un compte Microsoft Azure ainsi qu’une machine virtuelle (linux ou microsoft, peu importe.

Installation du client

Pour installer le client rien de plus simple. Vous devez au préalable avoir une version de Node.js d’installée sur votre machine fixe. Vous pouvez revoir la manipulation ici.

Quand Node.JS est installé, vous n;aurez qu’à taper ceci dans votre terminal :

sudo npm install azure-cli -g

Connextion

Pour vous connecter, deux méthodes existent :

  • Par authentification login/password : ceci marche uniquement avec des comptes azure. J’ai essayé avec mon adresse hotmail qui est liée à azure et ça ne marche pas.
  • Par fichier de connexion : permet de récupérer tous les comptes liés à votre domaine Azure.

Dans le cas de l’authentification par mot de passe, faites juste ceci :

azure login

Pour les autres, il y a plusieures étapes :

azure account download
azure import accountfile.publishdownload
azure account set 'monaccount'

La première commande vous donne un lien pour télécharger le fichier de comptes. Le second permet d’importer votre fichier de compte dans azure. Il est fortement conseillé de supprimer ce fichier après utilisation.
La dernière permet de sélectionner le compte par défaut du client. Si vous ne savez pas lequel choisir, vous pouvez afficher la liste complète avec cette commande :

azure account list

Changement de l’adresse IP

Maintenant que le plus dur est fait, il reste la dernière partie qui consiste à changer l’adresse IP privée de votre machine virtuelle. Pour celà, une seule commande suffit :

azure vm static-ip set myvmname 10.1.0.10

Dans l’exemple, je met l’adresse IP 10.1.0.10 à la machine myvmname.

Faites bien attention à ce que l’adresse IP corresponde à la plage du réseau rattaché à votre machine virtuelle.

Afin de vérifier si votre machine virtuelle a bien pris ce réglage, faites juste

azure vm static-ip show myvmname

Maintenant vous saurez changer facilement une adresse IP pour vos machines virtuelles Azure depuis le client Azure.

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