Ce guide est découpée en plusieurs parties, chacune présentant une fonctionnalité de notre futur service
- installer le serveur Web
- installer le module de streaming
- utiliser Flowplayer pour lire les vidéos
- sécuriser les urls
- gérer la bande passante
- suivre la santé de notre serveur
Première partie : installer le serveur Web
Nous considérons que vous avez une machine toute propre avec une distribution debian fraîchement installée.
1.1 Installer apache
Plusieurs serveurs http sont connus pour leur vélocité à servir du contenu statique (dans notre cas des vidéos), on pense notamment à Lighttpd et à NGinx.
Mon choix s’est pourtant tourné vers Apache, dans sa version MPM-Worker.
Les performances sont en effet tout aussi honorables comparées aux autres solutions et cela nous donne accès aux nombreuses librairies utilisables avec apache.
Cette version d’apache a la particularité d’instancier des threads dans un espace mémoire partagé pour gérer les requêtes (à défaut de créer des processus). C’est plus rapide mais l’inconvénient est qu’il est impossible d’utiliser des modules non thread safe. En effet les plus taquins d’entre vous me feront remarquer qu’utiliser un module PHP5 avec MPM-Worker est de manière directe impossible. Certes ! mais ici point besoin de PHP, on sert du fichier statique ma bonne dame !
L’avantage se retrouve par contre au niveau des performances, dans une configuration par défaut on double quasiment le nombre de requêtes http servies (http://www.camelrichard.org/apache-prefork-vs-worker).
Dans un premier temps nous mettons à jour notre distribution Debian:
apt-get update
puis nous installons apache mpm-worker
Un petit coup d’oeil sur http://127.0.0.1 (remplacer cette adresse par l’adresse IP de votre serveur) nous montre que l’installation s’est bien déroulée.
Nous créons l’arborescence de notre projet dans le répertoire « opt » situé à la racine
mkdir tuto_video
mkdir tuto_video/log
mkdir tuto_video/www
chown -R www-data tuto_video
Nous venons de créer le répertoire /opt/tuto_video/www , c’est ici que nous stockerons les videos, ce sera aussi le répertoire racine de notre site web.
Quant à /opt/tuto_video/log , il servira à stocker les fichiers log.
Sur la dernière ligne, la commande chown nous permet d’attribuer de manière récursive le répertoire tuto_video et tout ce qu’il contient à l’utilisateur www-data (autrement dit apache).
Nous allons maintenant créer un hôte virtuel afin d’associer un nom de domaine à notre service de streaming.
1.2 Configuration du virtual host
Comme vous le savez sans doute un hôte virtuel (Virtual host) permet à un serveur http de gérer les requêtes provenant de différents noms de domaine avec une configuration spécifique.
Pour les tests nous allons donc créer un vhost permettant de gérer les requêtes provenant de http://video.screenworks.fr
nous nous déplaçons dans le répertoire où sont stockées les configurations des sites hébergés par le serveur:
Nous créons ensuite un fichier de configuration pour notre service, avec l’éditeur nano (si vous êtes toujours taquin vous me reprocherez sans doute de ne pas utiliser Vi).
On supposera dans ce guide que les vidéos seront hébergées sur le sous domaine suivant: video.screenworks.fr
ServerName video.screenworks.fr
DocumentRoot /opt/tuto_video/www/
<Directory /opt/tuto_video/www/>
Options -Indexes FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /opt/tuto_video/log/tuto-error.log
CustomLog /opt/tuto_video/log/tuto-acces.log full
</VirtualHost>
CTRL+O pour enregistrer puis CTRL+X pour sortir
Nous venons donc d’indiquer à apache que la racine du site http://video.screenworks.fr se situe dans le répertoire /opt/tuto_video/www/
Nous avons également indiqué que les logs d’erreur et les logs d’accès seront stockées dans /opt/tuto_video/log (et là vous venez de comprendre que c’est plus pratique d’avoir des logs découpés par projet plutôt qu’un seul fichier de log fourre-tout).
Nous activons notre nouvelle configuration en tapant la commande
Pour rappel la commande a2ensite nous permet d’activer le fichier de configuration de notre site.
En fait elle se contente juste de copier le fichier /etc/apache2/sites-available/tuto_video.conf vers le répertoire /etc/apache2/sites-enabled/
Pratique non ? comment ça non…
Nous rechargeons la config d’apache
La racine de notre site est désormais accessible via l’url http://video.screenworks.fr
Hourra !
Dans la prochaine étape nous installerons les modules nécessaires au streaming des videos encodées au format H.264


9 février 2010 - 12 h 02 min
Très bon article !
P.S. : J’ai particulièrement aimé la phrase : « [...]les plus taquins d’entre vous[...]« .
9 février 2010 - 14 h 07 min
Petite critique de lisibilité dans le plan, tu annonces :
1. installer le serveur Web
2. installer le module de streaming
3. utiliser Flowplayer pour lire les vidéos
etc.
Et à la lecture on a :
1) Installer apache
2) Configuration du virtual host
…
Je pense que respecter ta notation de départ, quitte à faire un plan du style
1.1 Installer Apache
1.2 Config …
Ensuite, je modifierai la 2ème partie de la manière suivante :
ServerName video.screenworks.fr
DocumentRoot /opt/tuto_video/www/
ErrorLog /var/log/apache/vhost/video_scrwk_error_log
Options -Indexes FollowSymLinks
AllowOverride All
On retrouve de cette façon les balises (ce qui est plus propre à mon goût ^^) et un log d’erreur propre à ton vhost, ce qui evite d’avoir à éplucher un log où tout est jeté pèle-mèle
Pour le reste, rien à redire, c’est super clair.
Vivement la suite !
9 février 2010 - 14 h 11 min
Note sur mon comment du dessus : les balises n’apparaissent pas
WordPress empêche l’affichage du HTML, même avec la balise
je vais le refaire avec des espaces, et il suffira de copier-coller
pas la peine de valider les 2 comments
ServerName video.screenworks.fr
DocumentRoot /opt/tuto_video/www/
ErrorLog /var/log/apache/vhost/video_scrwk_error_log
Options -Indexes FollowSymLinks
AllowOverride All
9 février 2010 - 14 h 11 min
bonne remarque pour la numérotation
je vais également ajouter la gestion des logs dans le vhost
9 février 2010 - 14 h 14 min
rhaaaa
(
Bon désolé de polluer
( je mets des accolades à la place
{ VirtualHost $IP_du_site:* }
ServerName video.screenworks.fr
DocumentRoot /opt/tuto_video/www/
ErrorLog /var/log/apache/vhost/video_scrwk_error_log
{ Directory « /opt/tuto_video/www/ }
Options -Indexes FollowSymLinks
AllowOverride All
{ / Directory }
{ / VirtualHost }
16 février 2010 - 11 h 31 min
Ah, mais si on a le droit de pinailler : tu devrais mettre le numéro de la partie dans le titre de l’article.
- Créer un serveur de streaming vidéos H.264 – PART 1 – Installer le serveur Web
- Créer un serveur de streaming vidéos H.264 – PART 2 – Installer le module de streaming
- Etc.
J’adore les titres d’articles qui contiennent le numéro-de-la-partie. Et du coup il faudrait que tu maintiennes aussi la liste des liens en début de chaque partie.
Meta-blogging FTW !
16 février 2010 - 13 h 28 min
bonne remarque c’est effectivement plus lisible