SPDY (appelé "SPeeDY") est un protocole réseau dont le but est d'accélérer le web. Créé par Google, c'est une alternative au protocole HTTP mais aussi un candidat au protocole HTTP/2.0. SPDY "booste" HTTP en accélérant les connexions par multiplexage et compression des demandes multiples et des en-têtes en une seule connexion. Il y a quelques jours je vous en ai parlé brièvement dans l'article annonçant que Google arrêtait False Start.
Accélération potentielle avec mod_spdy
Avant tout, pour utiliser SPDY, vous aurez besoin d'un serveur web et du module Apache open-source mod_spdy qui ajoute le support pour le protocole SPDY au serveur Apache HTTPD. Dans ce tutoriel, je vais vous montrer une installation typique du mod_spdy avec Apache 2 sur Debian Squeeze.
SPDY fonctionne sur le protocole HTTPS, nous avons donc besoin d'un site web HTTPS pour le tester. A noter que si le navigateur de l'utilisateur ne prend pas en charge le protocole SPDY, celui-ci utilisera le protocole par défaut ce qui n'affectera pas votre installation.
Pour la suite, je suppose que vous déjà une configuration de type LAMP sur votre serveur.
A des fins de test, il vous faudra Chrome ou une version récente de Firefox.
Ici je vais activer simplement le mode SSL par défaut (vous n'avez pas besoin de le faire si vous avez déjà le SSL activé sur votre site) en entrant ces deux commandes :
root@server:~# a2enmod ssl root@server:~# a2ensite default-ssl
Redémarrez ensuite votre serveur Apache :
root@server:~# /etc/init.d/apache2 restart
Ouvrez votre navigateur (ici Chrome) et entrez l'URL vers le site web SSL par défaut (ici www.example.com) et testez si ça fonctionne. Ici j'utilise un certificat signé par défaut, c'est pourquoi j'ai un avertissement mais ça n'a pas d'effet sur l'utilisation de SPDY.
Passons à l'installation de SPDY. Google fournit les packages Debian pour mod_spdy. Il faut simplement télécharger le bon en fonction de l'architecture de votre serveur (32 bits ou 64 bits).
64 bits :
root@server:~# cd /tmp root@server:~# wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_amd64.deb
32 bits :
root@server:~# cd /tmp root@server:~# wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_i386.deb
Lançons l'installation :
root@server:~# dpkg -i mod-spdy-*.deb root@server:~# apt-get -f install
La ligne suivant ajoutera mod_spdy de Google aux sources apt afin de maintenir celui-ci à jour :
root@server:~# cat /etc/apt/sources.list.d/mod-spdy.list
### THIS FILE IS AUTOMATICALLY CONFIGURED ### # You may comment out this entry, but any other modifications may be lost. deb http://dl.google.com/linux/mod-spdy/deb/ stable main
Redémarrez votre serveur Apache :
root@server:~# /etc/init.d/apache2 restart
Le truc sympa avec mod_spdy c'est qu'il n'y a pas besoin de fichier de configuration ou de modifier son serveur Apache. Il fonctionne out of the box comme on dit
Bon d'accord il y a le fichier de configuration /etc/apache2/mods-available/spdy.conf mais les paramètres par défaut sont suffisants.
root@server:~# cat /etc/apache2/mods-available/spdy.conf
# Turn on mod_spdy. To completely disable mod_spdy, you can set # this to "off". SpdyEnabled on # In order to support concurrent multiplexing of requests over a # single connection, mod_spdy maintains its own thread pool in # each Apache child process for processing requests. The default # size of this thread pool is very conservative; you can override # it with a larger value (as below) to increase concurrency, at # the possible cost of increased memory usage. # #SpdyMaxThreadsPerProcess 30 # Memory usage can also be affected by the maximum number of # simultaneously open SPDY streams permitted for each client # connection. Ideally, this limit should be set as high as # possible, but you can tweak it as necessary to limit memory # consumption. # #SpdyMaxStreamsPerConnection 100
Il y a plus de détails sur l'installation et la configuration sur le site du module.
Maintenant nous allons tester si SPDY fonctionne bien. Nous avons besoin d'un navigateur compatible comme Chrome dans cet exemple. Rechargez la page web vers le site SSL par défaut et ouvrez un nouvel onglet avec en URL chrome://net-internals/#spdy
Si tout s'est bien passé, votre vhost SSL devrait maintenant être répertorié dans le tableau de cette page :
Voilà si vous avez des questions, n'hésitez pas!
Edit: Si votre serveur Apache renvoie ce genre d'erreurs :
[Tue Apr 17 15:12:07 2012] [error] [client 127.0.0.1] [13173:13173:ERROR:mod_spdy.cc(470)] Speculative read failed with status 20014: Internal error [Tue Apr 17 15:12:23 2012] [error] [client 127.0.0.1] [13172:13172:ERROR:mod_spdy.cc(470)] Speculative read failed with status 20014: Internal error [Tue Apr 17 15:12:24 2012] [error] [client 127.0.0.1] [12652:12652:ERROR:mod_spdy.cc(470)] Speculative read failed with status 20014: Internal error
Placez Listen 80 qui se trouve normalement dans le fichier /etc/apache2/ports.conf à la fin du fichier /etc/apache2/apache2.conf et ça devrait rouler!
MISES A JOUR DE L'ARTICLE |
Bonjour,
J'arrive pas vraiment à saisir l'utilité, car si les personnes sont obligé de naviguer avec le protocole https et que l'on doit installer un certificat valide sur toutes nos machines web ça n'a pas d’intérêts.
Mais je suppose que ne n'ai pas tout compris à son utilisation dans cette exemple.
Pourriez vous m'éclairer.
Cdlt
Livingdead
Merci pour le tuto
EN SSH la commande DPKG est pas connue par mon serveur.
Gentoo 64 bits (OVH release 2)
une astuce ?