Catégories
Developpement Open-source Planet-libre Reseau Web

Installation et test de NGinx sous Ubuntu

NGinx est une des alternative au serveur Web Apache (il est actuellement utilisé par plus de 6% des serveurs Web). Il se targue d’être plus rapide, plus léger et facile à configurer.

Nous allons vérifier tout cela dans ce billet en détaillant une installation de NGinx 0.8.54 (Stable) sur une machine GNU/Linux (Ubuntu Desktop 10.10) avec en bonus le support FastCGI de PHP et de Perl !

Installation de NGinx

On commence par ajouter le dépôt officiel pour la version stable:

sudo add-apt-repository ppa:nginx/stable

sudo aptitude update

Puis on installe la bête (facile non ?):

sudo aptitude install nginx

Remarque: si un serveur Web (Apache ou autre) tourne déjà sur votre machine, l’installation de NGinx se passera normalement, par contre il n’arrivera pas à se lancer car le port HTTP par défaut (TCP/80) sera déjà occupé. La solution la plus propre est de configurer NGinx pour qu’il écoute sur un autre port (TCP/81 par exemple) puis faire vos tests en forcant l’utilisation de ce port dans votre navigateur Internet (en ajoutant :81 aux URL). Une fois Nginx validé, il suffira de supprimer l’autre serveur Web de votre machine, puis de reconfigurer Nginx sur le port par défaut (TCP/80).

Premier contact avec NGinx

Un script de démarrage nommé nginx a été installé dans le répertoire /etc/init.d. On peut voir la liste des commandes accepté par ce script en saisissant la ligne de commande suivante:

sudo service nginx

Usage: nginx {start|stop|restart|reload|force-reload|status|configtest}

On va donc activer la configuration de test:

sudo service nginx configtest

Testing nginx configuration: nginx.

Puis lancer le serveur:

sudo service nginx start

Starting nginx: nginx.

On ouvre un navigateur sur la même machine puis on entre l’UTL suivante: http://localhost/

La page suivante devrait s’afficher:

On peut ensuite arrêter le serveur:

sudo service nginx stop

Stopping nginx: nginx.

Puis passer à l’étape suivante…

Configuration du serveur NGinx

Les fichiers de configuration se trouvent dans le répertoire /etc/nginx. Les habitués d’Apache ne seront pas trop perturbés par la structure de l’arborescence de ce répertoire:

 

drwxr-xr-x 2 root root 4096 2011-01-05 08:26 conf.d/

-rw-r–r– 1 root root 884 2011-01-05 08:04 fastcgi_params

-rw-r–r– 1 root root 2258 2011-01-05 08:04 koi-utf

-rw-r–r– 1 root root 1805 2011-01-05 08:04 koi-win

-rw-r–r– 1 root root 2066 2011-01-05 08:04 mime.types

-rw-r–r– 1 root root 1340 2011-01-05 08:04 nginx.conf

-rw-r–r– 1 root root 465 2011-01-05 08:04 scgi_params

drwxr-xr-x 2 root root 4096 2011-01-05 10:36 sites-available/

drwxr-xr-x 2 root root 4096 2011-01-05 10:36 sites-enabled/

-rw-r–r– 1 root root 497 2011-01-05 08:04 uwsgi_params

-rw-r–r– 1 root root 3071 2011-01-05 08:04 win-utf

On y retrouve (entre autres):

  • nginx.conf: le fichier de configuration central
  • conf.d/: un répertoire contenant des fichiers de configuration additionnels
  • sites-available/: répertoire contenant la liste des fichier de configuration des sites disponibles
  • sites-enabled/: répertoire contenant la liste des fichiers de configuration des sites actifs (liens symboliques vers le répertoire site-availables)

On commence par jeter un coups d’oeil au fichier nginx.conf…. Quel bonheur par rapport à celui d’Apache :).

On passe ensuite au fichier du site par défaut /etc/nginx/sites-available/default (que l’on a activé tout à l’heure par la commande ‘sudo service nginx configtest’):

server {

listen 80

 

root /usr/share/nginx/www;

index index.html index.htm;

 

server_name localhost;

 

location / {

try_files $uri $uri/ /index.html;

}

 

location /doc {

root /usr/share;

autoindex on;

allow 127.0.0.1;

deny all;

}

 

location /images {

root /usr/share;

autoindex off;

}

 

}

On peut donc voir que l’on a un site qui écoute sur le port TCP/80 (listen   80) et sert les pages se trouvant dans le répertoire /usr/share/nginx/www (root /usr/share/nginx/www) à partir de l’URL http://localhost/ (server_name localhost).

Nous allons nous baser sur cet exemple pour construire un nouveau fichier de configuration propre à nos besoins.

On commence par créer l’arborescence qui va héberger nos pages (par exemple /home/labo/www). Si le répertoire n’existe pas il faut le créer et lui donner les bons droits:

mkdir /home/labo/www

Enfin on édite une page de test:

# vi /home/labo/www/index.html

<html><body>Ma page</body></html>

Ensuite on passe à la création du fichier de configuration du site.

sudo vi /etc/nginx/sites-available/monsite

Avec le contenu suivant (à adapter à votre configuration):

# Mon site a moi

 

server {

listen 80;

 

root /home/labo/www;

index index.html index.htm;

 

server_name localhost;

 

location / {

# First attempt to serve request as file, then

# as directory, then fall back to index.html

try_files $uri $uri/ /index.html;

}

 

}

On supprime le site par defaut et on active le notre:

cd /etc/nginx/sites-enabled

sudo rm default

sudo ln -s ../sites-available/monsite

On redémarre le serveur Nginx:

sudo service nginx restart

Restarting nginx: nginx.

Puis  on teste la page: http://localhost/

Pour rendre le site « visible depuis l’extérieur », il faut changer la ligne:

server_name localhost;

Puis la remplacer par:

server_name www.mondomaine.com;

Il faut bien sur que le nom www.mondomaine.com pointe sur l’adresse IP de votre serveur Nginx…

Test des performances

Pour voir ce qu’il a dans le ventre, j’ai installé en Nginx et Apache sur ma machine. Nginx écoutant sur le port TCP/81 et Apache sur le port TCP/80.

J’ai ensuite utilisé le logiciel httperf (disponible dans les dépôts Ubuntu) pour simuler des requêtes sur le serveur.

Test du serveur Apache:

# httperf –client=0/1 –server=localhost –port=80 –uri=/ –send-buffer=4096 –recv-buffer=16384 –num-conns=5000 –num-calls=10

Request rate: 4284.8 req/s (0.2 ms/req)

Puis test du serveur NGinx:

# httperf –client=0/1 –server=localhost –port=81 –uri=/ –send-buffer=4096 –recv-buffer=16384 –num-conns=5000 –num-calls=10

Request rate: 6332.6 req/s (0.2 ms/req)

On a donc un gain d’environ 30% en terme de requêtes supportées par le serveur.

 

 

Request rate / Request number

 

Support du PHP

De nos jours, un serveur Web sans support PHP c’est un peu comme un Ferrari avec des roues de 13 pouces. Dans l’optique d’avoir un serveur performant nous allons donc utiliser le module externe PHP FPM (PHP FastCGI) qui s’occupera de l’exécution des scripts PHP dans un processus indépendant de NGinx (merci à cet article qui m’a bien aidé).

On commence par installer le module:

sudo add-apt-repository ppa:brianmercer/php

sudo aptitude update && sudo aptitude install php5-fpm

Par défaut, le processus PHP-FPM va se mettre en écoute sur le port TCP/9000 et écouté les requêtes venant seulement de la machine locale (localhost).

Il ne reste plus qu’à modifier le fichier de configuration de votre site pour prendre en compte le langage PHP (fichier /etc/nginx/sites-available/monsite):

# Mon site a moi

server {

listen 80;

server_name localhost;

root /home/labo/www;

 

location / {

index index.php index.html;

}

 

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

include /etc/nginx/fastcgi_params;

fastcgi_index index.php;

}

}

Attention de bien avoir configurer la variable root (« root /home/labo/www » dans mon exemple), sinon vous risquez de tomber sur une erreur 404 lors du passage du script PHP vers le process PHP-FPM.

On relance ensuite Nginx:

sudo service nginx restart

Restarting nginx: nginx.

Pour tester que le PHP fonctionne bien, le plus simple est de créer un fichier info.php (à mettre à la racine du site /home/labo/www/) contenant:

<?php

phpinfo();

?>

Puis de pointer votre navigateur Web vers l’URL: http://localhost/info.php

La page suivante devrait s’afficher:

Support de Perl

Tout comme PHP, nous allons utiliser FastCGI pour exécuter les scripts Perl depuis notre serveur NGinx. Le principe est le même. Un processus (fastcgi-wrapper.pl) va se mettre en écoute sur le port TCP/8999 puis attendre les demandes d’exécution envoyées par NGinx.

Contrairement à PHP, il n’existe pas (encore) de package Ubuntu permettant d’automatiser l’installation de ce processus. Il faut donc mettre un peu les mains dans le cambouis (merci à ce blog) !

On commence par installer le module Perl FCGI sur lequel le processus fastcgi-wrapper.pl va se baser:

sudo perl -MCPAN -e ‘install FCGI’

On installe le processus fastcgi-wrapper.pl qui va s’occuper de l’exécution  des scripts Perl:

sudo wget -O /usr/bin/fastcgi-wrapper.pl http://lindev.fr/public/nginx/fastcgi-wrapper.pl

sudo chmod 755 /usr/bin/fastcgi-wrapper.pl

La plupart des tutos que j’ai trouvé sur le Net utilise ensuite un script init.d pas très beau à voir (http://lindev.fr/public/nginx/perl-fastcgi). En effet, pour arrêter le processus on a droit à un beau killall -9 perl ! Autant dire que si vous avez d’autres processus Perl en tache de fond de votre serveur cela risque de poser quelques problèmes :). J’ai donc écrit un nouveau script basée sur celui du wrapper PHP.

On automatise le lancement de ce script au démarrage du serveur:

sudo wget -O /etc/init.d/perl-fastcgi https://raw.github.com/nicolargo/ubuntupostinstall/master/perl-fastcgi

sudo chmod 755 /etc/init.d/perl-fastcgi

sudo update-rc.d perl-fastcgi defaults

Puis on le lance en tache de fond:

sudo service perl-fastcgi start

Il ne reste plus qu’à modifier le fichier de configuration Nginx de votre site pour prendre en compte les scripts Perl:

# Mon site a moi

server {

listen 80;

server_name localhost;

root /home/labo/www;

 

location / {

index index.php index.html;

}

 

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

include /etc/nginx/fastcgi_params;

fastcgi_index index.php;

}

 

location ~ \.pl$ {

fastcgi_pass 127.0.0.1:8999;

include /etc/nginx/fastcgi_params;

fastcgi_index index.pl;

}

}

On relance ensuite Nginx:

sudo service nginx restart

Restarting nginx: nginx.

Pour tester que le Perl fonctionne bien, le plus simple est de créer un fichier info.pl (à mettre à la racine du site /home/labo/www/) contenant:

#!/usr/bin/perl

print « Content-type: text/html\n\n »;

print « <html><body>Hello, world.</body></html> »;

Attention, contrairement au script PHP, les fichier .pl douivent avoir les droits en exécution sous peine de ce trouver devant le message suivant:

Error: No such CGI app – /home/labo/www/info.pl may not exist or is not executable by this process.

On doit donc saisir la commande:

chmod a+x /home/labo/www/info.pl

Puis de pointer votre navigateur Web vers l’URL: http://localhost/info.pl

La page suivante devrait s’afficher:

Optimisation corner !

On passe maintenant à quelques optimisations que l’on peut ajouter à la configuration de son site (merci à @T1B0).

On commence par le fait de ne pas loguer les message 404 sur le fichier favicon.ico (histoire de ne pas surcharger ses logs):

location = /favicon.ico {

access_log off;

return 204;

}

Ensuite on optimise la durée d’expiration des en-tête des fichiers statiques (pour les caches):

location ~* ^.+\.(jpg|jpeg|gif|css|png|js|xml)$ {

expires 30d;

}

Pour aller plus loin, vous pouvez également lire ce billet chez K-Tux. (notamment l’utilisation de memcache qui est intégré à NGinx !).

Conclusion

Vous avez donc à votre disposition un beau serveur Web NGinx avec le support FastCGI PHP & Perl !

Elle est pas belle la vie ?

Catégories
Image Open-source Planet-libre Systeme

Mon desktop 201101

Avant tout bonne année 2011 à vous et à vos proches.
Qu’elle vous apporte bonheur et épanouissement personnel !

On commence l’année par le billet mensuel sur mon desktop. On va aujourd’hui s’intéresser à mon PC portable sous Ubuntu Desktop 10.10 configuré le script post install (ubuntupostinstall.sh).

Un aperçu du résultat:

Les principales caractéristiques

Fond d’écran: De saison vu le temps qu’il fait…
GTKLook des fenêtre Equinoxicônes Faenza
Sur ce bureau: Docky + TerminatorNautilus Elementary

Installer de la combo magique (Equinox + Faenza + Nautilus Elementary)

Je n’ai pas trouvé mieux à mon goût pour le moment. Equinox est clair, les icônes Faenza sont lisibles et facile à reconnaître et  Elementary apporte une certaine légèreté à Nautilus.:

sudo aptitude install gtk2-engines-equinox equinox-theme equinox-ubuntu-theme faenza-icon-theme

nautilus -q

Pour coller un peu plus avec le fond d’écran, j’ai choisi le thème Glass d’Equinox en allant dans le menu “Système > Préférences > Apparences > Thème > Equinox Glass“.

Installation de Docky

Ce dock « à la MacOS X »  est disponible dans les dépôt standard, pour l’installer en ligne de commande:

sudo aptitude install docky

Pour le paramétrage, j’utilise:


Voilà ce que j’ai dedant au moment de l’écriture de ce billet:

Paramétrage de mon tableau de bord

J’utilise l’application NetSpeed pour voir en temps réel les débits sur mon interface réseau. Il faut l’installer avec la ligne de commande suivante:

sudo aptitude install netspeed

Ensuite je configure de la manière suivante:

Et vous cela donne quoi vos desktops en ce moment, à vos screenshots !

Catégories
Open-source Planet-libre Reseau Systeme Web

Comment installer (vraiment) Dropbox 1.0 sous GNU/Linux

Dropbox vient de mettre à jour son client vers la version 1.0. Malheureusement, la procédure d’installation qui est donnée sur le site ne marchait pas pour moi (j’ai fait le test sous Ubuntu 10.10 et Fedora 14).

Voici donc un petit hack pour mettre à jour le client depuis une version 0.7.110 vers la 1.0.10:

1) Arrêter votre client Dropbox

2) Lancer les commandes suivantes dans un terminal:

cd ~

wget http://dl-web.dropbox.com/u/17/dropbox-lnx.x86-1.0.10.tar.gz

mv .dropbox-dist .dropbox-dist.OLD

tar zxvf dropbox-lnx.x86-1.0.10.tar.gz

rm -f dropbox-lnx.x86-1.0.10.tar.gz

Remarque: Si votre PC à une architecture 64 bits, il faut télécharger: dropbox-lnx.x86_64-1.0.10.tar.gz

3) Puis relancer le client Dropbox…

Et voilà le travail ! A vous les joies du Selective Sync !

Catégories
Open-source Planet-libre Reseau Web

Installation et utilisation de LOIC sous GNU/Linux

Depuis que le groupe Anonymous a utilisé Low Orbit Ion Cannon (LOIC) pour attaquer un certain nombre d’entreprises ayant mis des battons dans les roues de Wikileaks et de son patron,  ce logiciel a été mis sur le feux des projecteurs.

Ce logiciel permet en un clic de souris de lancer une attaque de type Deny Of Service (DOS) sur une machine cible. Utilisé par une personne bienveillante, ce logiciel de « script kiddies » peut être utilisé pour tester la réaction d’un de ses serveur par rapport à une telle attaque et également de tester les mécanismes de sécurité associés.

Développé en C# (burk…), LOIC est disponible sous les OS Windows Xp ou supérieur. Il est bien sur possible de l’utiliser également sous GNU/Linux moyennant quelques manipulations…

Installation de LOIC sous GNU/Linux

C’est en lisant ce forum que j’ai trouvé une solution simple et élégante pour installer la dernière version de LOIC sous Ubuntu, Fedora ou Debian (et surement sur toutes distributions GNU/Linux disposant des pré-requis).

On commence par installer les logiciels suivants:

Sous Ubuntu/Debian:

sudo aptitude install git-core monodevelop

Sous Fedora (en root):

yum install git mono-devel

Ensuite on récupére un script SHELL qui va permettre: d’installer, de mettre à jour et de lancer LOIC sur votre distribution GNU/Linux:

mkdir ~loic

cd ~loic

wget https://raw.github.com/nicolargo/loicinstaller/master/loic.sh

chmod a+x loic.sh

Installation de LOIC

On lance la commande suivante:

./loic.sh install

Le script va télécharger la dernière version disponible dans le GIT puis effectuer une installation dans le répertoire ~/loic/LOIC.

Mise à jour de LOIC

On lance la commande suivante:

./loic.sh update

Le script va vérifier l’existence d’une nouvelle version disponible dans le GIT puis effectuer une installation dans le répertoire ~/loic/LOIC.

Lancement de LOIC

On passe au chose sérieuse en lançant le logiciel:

./loic.sh run

La fenêtre suivante devrait apparaitre:

Utilisation de LOIC

Attention à ne pas tester ce logiciel sur un site qui ne vous appartient pas ! En effet, le logiciel ne dispose d’aucun mécanisme pour cacher votre adresse IP et vous serez facilement repéré par le site cible. Cela serait dommage de se faire bannir par les mécanismes de filtrage de votre blog préféré 😉

Comme vous allez le voir, même mon fils de 4 ans et demi peut se servir de ce logiciel. Il suffit de (1) saisir l’URL (ou l’adresse IP) de la machine à attaquer puis (2) de cliquer sur le bouton « Lock on » puis (3) enfin sur le bouton  « IMMA CHARGIN MAH LAZER ».

 

Par défaut, les attaques sont de type flood sont lancées sur le port TCP/80 (mais il est possible de faire des attaques de type UDP ou HTTP). 10 processus sont lancés en parallèle.


La ligne de status devrait se mettre à jour pour voir la progression de l’attaque:

Que fait LOIC ?

En capturant le trafic généré par LOIC à l’aide d’un logiciel comme tshark, on peut voir qu’il génére un grand nombre de requêtes TCP dans le but de saturer la machine cible.

Avec un simple PC bureautique, j’arrive à un débit de requête de l’ordre de 4.5 Mbps. Imaginez le résultat si 1000 personnes font la même chose vers une même cible…

Catégories
Image Open-source Planet-libre Systeme

Mon desktop 201012

On attaque le dernier mois de 2010 avec, comme chaque mois, un nouveau desktop (sous Ubuntu 10.10) qui va m’accompagner jusqu’à la nouvelle année !

Voilà ce que cela donne:

Fond d’écran: Sleepless nights
GTK: Look des fenêtre Equinoxicônes Faenza
Sur ce bureau: Docky + TerminatorNautilus Elementary

Installation des dépôts

On lance un terminal et on saisie les lignes de commandes suivantes:

sudo add-apt-repository ppa:tiheum/equinox

sudo add-apt-repository ppa:am-monkeyd/nautilus-elementary-ppa

sudo aptitude update

sudo aptitude safe-upgrade

Installer de la combo magique (Equinox + Faenza + Nautilus Elementary)

Je n’ai pas trouvé mieux à mon goût pour le moment. Equinox est clair, les icônes Faenza sont lisibles et facile à reconnaître et  Elementary apporte une certaine légèreté à Nautilus.:

sudo aptitude install gtk2-engines-equinox equinox-theme equinox-ubuntu-theme faenza-icon-theme

nautilus -q

On active le tout en allant dans le menu “Système > Préférences > Apparences > Thème > Equinox Evolution“.

Installation de Docky

Ce dock « à la MacOS X »  est disponible dans les dépôt standard, pour l’installer en ligne de commande:

sudo aptitude install docky

Pour le paramétrage, j’utilise:


Voilà ce que j’ai dedant au moment de l’écriture de ce billet:

Paramétrage de mon tableau de bord

J’utilise l’application NetSpeed pour voir en temps réel les débits sur mon interface réseau. Il faut l’installer avec la ligne de commande suivante:

sudo aptitude install netspeed

Ensuite je configure de la manière suivante:

Et vous cela donne quoi vos desktops en ce moment, à vos screenshots !

Catégories
Open-source Reseau Systeme

Utilisation du protocole NFS avec votre NAS

J’ai un NAS Synology DS110+ chez moi pour sauvegarder mes données et comme de serveur DLNA vers ma télévision.

Depuis le début j’avais utilisé le protocole réseau SMB (aka CIFS), installé et configuré par défaut sur le NAS.

Comme je n’étais pas satisfait des performances et de l’intégration de ce protocole sur ma distribution Ubuntu, j’ai décidé d’activer un protocole issu du monde Unix: j’ai nommé NFS.

Activation de NFS sur le NAS Synology DS110+

C’est assez simple en se connectant sur l’interface d’administration Web DSM:

Configuration de Linux comme client NFS

Sous une distribution Debian ou Ubuntu, il suffit d’installer le paquet autofs. Celui-ci prendra en charge nativement le protocole NFS:

sudo aptitude install autofs

Ensuite il faut éditer les deux fichiers suivants:

/etc/auto.master

/media/nas /etc/auto.nfs –ghost,–timeout=60

Ce fichier permet de définir dans quel répertoire de votre machine client GNU/Linux les répertoires partagés par votre NAS seront présentés (/media/nas dans mon cas).

/etc/auto.nfs

video -fstype=nfs,rw,intr 192.168.0.253:/volume1/video

Dans ce second fichier, on défini la liste des répertoires partagés (un répertoire par ligne). Par exemple, nous allons « mounter » le répertoire NFS /volume1/video du serveur NAS (adresse IP 192.168.0.253) vers le répertoir /media/nas/video de notre machine client GNU/Linux.

On relance ensuite le daemon autofs pour prendre en compte ces deux fichiers de configuration:

sudo service autofs restart

A partir de ce moment là, à partir du moment ou vous utiliserez le répertoire /media/nas/video, un montage sera automatiquement effectué vers votre serveur NAS et les fichiers seront visibles localement.

Et au niveau des performances

Outre une intégration parfaite à Linux, j’ai observé un gain non négligeable des performances notamment lors des phases d’écritures de fichiers sur le serveur NAS.

Sources pour la rédacion ce billet:

Catégories
Gstreamer Open-source Planet-libre Video Web

Installation et test de Flumotion 0.8

Flumotion est un serveur de streaming open-source sous licence GPL. Il permet de diffuser à des utilisateurs ne disposant que d’un simple navigateur Web des contenus audio et vidéo.

La dernière version disponible (la 0.8) apporte une fonctionnalité que je trouve intéressante de tester: le support du conteneur WebM et du codec vidéo VP8 que gOOgle à libéré il y a quelques mois.

Nous allons voir dans ce billet comment installer et configurer Flumotion 0.8 sur une distribution GNU/Linux Ubuntu Desktop 10.10.

Compilation de Flumotion 0.8

Récupération des sources:

mkdir ~/src

cd ~/src

wget http://www.flumotion.net//src/flumotion/flumotion-0.8.0.tar.gz

tar zxvf flumotion-0.8.0.tar.gz

cd ~/src/flumotion-0.8.0

Installation des librairies (en plus de mon installation standard d’Ubuntu), j’ai du ajouter:

sudo aptitude install python-all-dev python-kiwi

Configuration et compilation:

./configure

make

sudo make install

sudo mkdir /usr/local/etc/flumotion/

sudo cp conf/default.pem /usr/local/etc/flumotion/

Configuration de Flumotion 0.8

Le serveur Flumotion utilise deux processus: flumotion-manager et flumotion-worker.

Le premier processus (flumotion-manager) à besoin d’un fichier de configuration nommé planet.xml. Je vous propose donc de partir du fichier de configuration fourni avec les sources et de le copier dans un répertoire de votre machine.

mkdir ~/flumotion

mkdir ~/flumotion/conf

cp ~/src/flumotion-0.8.0/conf/managers/default/planet.xml ~/flumotion/conf/

Puis de l’éditer:

gedit ~/flumotion/conf/planet.xml

La ligne vraiment intéressante à modifier est celle-ci:

user:PSfNpHTkpTx1M

Elle défini l’utilisateur user avec le mot de passe par défaut test (encodé).

Remarque: Pour générer un nouveau couple login/password, le plus simple est de ce rendre sur ce site et de remplacer le résultat dans le fichier ~/flumotion/conf/planet.xml.

On lance ainsi le processus avec la commande suivante:

flumotion-manager ~/flumotion/conf/planet.xml &

On vérifie que le processus est bien lancé:

ps auxw | grep flumotion

labo    16352 10.4  0.3  18300 12724 pts/3    S    15:41   0:00 /usr/bin/python /usr/local/bin/flumotion-manager /home/labo/flumotion/conf/planet.xml

Le deuxième processus (flumotion-worker) n’a pas besoin d’un fichier de configuration. Il faut juste passer en paramètre l’utilisateur user avec le mot de passe test (clair) à utiliser pour se connecter au processus flumotion-manager:

flumotion-worker -v -u user -p test

Utilisation de Flumotion 0.8

On va utiliser le programme flumotion-admin pour administrer notre serveur Flumotion:

flumotion-admin &

La fenêtre suivante devrait s’afficher :

Remarque: si vous installez Flumotion sur un serveur sans interface graphique, il faudra utiliser flumotion-admin-text en lieu et place de flumotion-admin.

On clique sur Suivant:

On clique sur Suivant puis on entre le login user et le password test:

Après avoir cliqué sur Suivant, un assistant de configuration (wizard) va s’afficher:

On arrête de cliquer quelques instant pour voir que Flumotion propose deux scénarios:

  • configuration d’un streaming « live » à partir d’une camera / webcam
  • configuration d’un streaming « on demand » à partir d’un fichier

Configuration d’un « streaming live »

Comme un des objectifs de ce billet est de tester la diffusion live en WebM/VP8, on choisi la première option dans la fenêtre suivante:

Si vous n’avez pas de caméra digitale ou de Webcam sur votre machine, vous pouvez utiliser le « test video producer »  qui est en fait une mire de test (je rappelle de Flumotion se base sur GStreamer et cette mire est en fait généré par le plugin videotestsrc).

On configure la mire:

Il est ensuite possible de configurer un texte ou un logo qui sera affiché en overlay sur la vidéo:

On passe ensuite à la configuration de la « mire audio »:

Puis on défini les paramètres du streaming: conteneur, codec vidéo et codec audio:

Au niveau du codec vidéo VP8, on peut soit définir un débit fixe (CBR) ou bien une qualité fixe (VBR). Pour du streaming live, je conseille plutôt du CBR, par exemple à 400 Kbps:

De même pour le codec audio Vorbis:

On défini ensuite si l’on veut streamer sur HTTP (seule option disponible pour l’instant) et/ou sauver le résultat du streaming dans un fichier local sur le serveur (cette option peut être intéressante pour relire la vidéo de manière offline).

Enfin, on défini le point de montage (URL) ainsi que le port TCP à partir duquel le serveur sera accessible. Il est également possible de limiter le streaming (nombre d’utilisateur max, bande passante max…):

On peut également préciser la licence de diffusion de votre streaming:

Et voilà le travail, votre serveur de streaming est opérationnel:

Pour le tester il suffit de ccopier l’URL de l’onglet Statistiques dans (attention pour voir la vidéo depuis une autre machine, il faut remplacer le nom d’hôte avant le :8800 par l’adresse IP de la machine):

  • un navigateur Web compatible WebM/VP8: Chromium
  • un lecteur multimedia compatible WebM/VP8: Totem sous Ubuntu

La vidéo devrait s’afficher:

Pour sauvegarder cette configuration de streaming, il suffit de cliquer sur Connexion > Exporter la connexion puis de sauvegarder le fichier au format XML (Connexion > Importer pour la réimporter dans Flumotion).

Les sources vidéos possibles pour un streaming live sont:

  • la mire (pour les tests)
  • webcam (j’ai rencontré un problème avec la mienne, voir le dernier chapitre de ce billet)
  • TV card
  • Loop video (prend en entrée un fichier OGG et génère une boucle infini à partir de cette vidéo)
  • Firewire

Configuration d’un streaming on-demand (VoD)

Avant de tester la vidéo à la demande, il faut disposer de fichiers vidéos encodés au format WebM (pour la VoD, la version communautaire de Flumotion supporte également le format OGG). Pour produire de tel fichier, je vous conseille la lecture de ce billet. Une fois les vidéos localisées dans un répertoire de votre machine faisant tourner le serveur Flumotion, il suffit de faire appel à l’assistant via le menu Contrôler > Lancer l’assistant de flumotion-admin.

Il faut seulement définir le répertoire ou sont stockées les vidéos:

Puis identifier la liste des vidéos disponibles et leurs URLs dans l’onglet Browser. Là encore, il faut adapter l’adresse en remplaçant le nom logique par l’adresse IP de votre machine Flumotion si vous voulez consulter ces vidéos sur d’autres machines du réseau.

Enfin, vous pouvez ouvrir cette URL soit dans un navigateur Web qui prend en charge WebM (par exemple Chromium):

Soit dans votre lecteur multimédia par défaut (par exemple Totem, ouvrir en utilisant CTRL+L):

Pour une intégration plus « web design compliant » de vos vidéos dans des pages Web (plutôt qu’un bête affichage en full-screen), il faut utiliser le tag HTML5 <video> dont j’ai donné plusieurs syntaxe d’utilisation dans ce billet.

Problèmes rencontrés…

Lors de mes tests, j’ai rencontré un problème lors de la détection de ma WebCam Logitech QuickCam Pro 4000 (qui marche très bien par ailleurs). La détection des informations n’aboutie pas…

Un autre problème est l’ouverture des fichiers VoD à partir de VLC qui supporte pourtant le format WebM. Le son passe correctement mais la vidéo reste désespérément noire…

Catégories
Image Open-source Planet-libre Systeme

Mon desktop 201011

Comme chaque début de mois, voici une actualisation de mon desktop (sous Ubuntu 10.10) qui va m’accompagner en novembre 2011 !

On commence par le résultat:

Fond d’écran: Urban Digital sur DevianArt
GTKLook des fenêtre Equinoxicônes Faenza
Sur ce bureau: Terminator (Htop) + Nautilus Elementary

Installation des dépôts

On lance un terminal et on saisie les lignes de commandes suivantes:

sudo add-apt-repository ppa:tiheum/equinox

sudo add-apt-repository ppa:am-monkeyd/nautilus-elementary-ppa

sudo aptitude update

sudo aptitude safe-upgrade

Installer de la combo magique (Equinox + Faenza + Nautilus Elementary)

Puis on installe le thème:

sudo aptitude install gtk2-engines-equinox equinox-theme equinox-ubuntu-theme faenza-icon-theme

nautilus -q

On active le tout en allant dans le menu “Système > Préférences > Apparences > Thème > Equinox Evolution“.

Installation de Docky

Ce dock « à la MacOS X »  est disponible dans les dépôt standard, pour l’installer en ligne de commande:

sudo aptitude install docky

Pour le paramétrage, j’utilise:

Paramétrage de mon tableau de bord

J’utilise l’application NetSpeed pour voir en temps réel les débits sur mon interface réseau. Il faut l’installer avec la ligne de commande suivante:

sudo aptitude install netspeed

Ensuite je configure de la manière suivante:

Et vous cela donne quoi vos desktops en ce moment, à vos screenshots !

Catégories
Open-source Planet-libre Systeme

Profiter de sa Dropbox sur son serveur GNU/Linux

Depuis quelques mois, j’utilise le service Dropbox (gratuit jusqu’à 2 Go) pour sauvegarder, partager et synchroniser les fichiers entre mes différentes machines. Souhaitant pouvoir également mon serveur VPS (Ubuntu Server 10.04 LTS) dans ce « cloud » et ainsi permettre la sauvegarde de certains fichiers de mon serveur dans ma Dropbox, il a fallu que je passe outre la limitation du client Dropbox de fonctionner sans un environnement graphique (no-gui…).

Pour tester cette procédure, il faut disposer:

  • d’un compte Dropbox (même un compte gratuit suffit)
  • d’un serveur avec un accès SSH et les droits admin (j’ai validé cette procédure sur un Ubuntu Server 10.04 LTS mais elle doit fonctionner sur d’autre distribution avec quelques adaptations)

Installation du daemon Dropbox

On commence par récupérer le daemon GNU/linux Dropbox sur notre serveur:

cd

wget -O ~/dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86

tar zxvf dropbox.tar.gz

rm -f ~/dropbox.tar.gz

L’archive va être décompressé dans le répertoire ~/.dropbox-dist. Il faut ensuite lancer le programme dropboxd qui va permettre d’associer votre serveur avec votre compte Dropbox.

.dropbox-dist/dropboxd

This client is not linked to any account…

Please visit https://www.dropbox.com/cli_link?host_id=c241bed09af0ae77383c4d89310b08cf to link this machine.

Il faut donc lancer un navigateur Web (depuis votre PC) puis visiter l’URL précédente.

Il se peut que le message suivant s’affiche:

/bin/sh: xdg-open: not found

Il n’a aucun impact sur le bon fonctionnement du daemon dropboxd.

Le programme va ensuite créer votre répertoire ~/Dropbox et y copier le contenu de votre Dropbox (personnellement, j’ai déplacé le répertoire Dropbox vers un disque virtuel attaché à mon VPS puis j’ai créé un lien symbolique entre ce répertoire et mon répertoire ~/Dropbox). Il va également générer un répertoire ~/.dropbox avec un cache et des informations sur votre compte Dropbox.

Une fois terminé, on peut ensuite quitter le programme d’installation avec un CTRL-C.

Automatisation du lancement de Dropbox

On commence par récupérer le script suivant:

http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall/UbuntuStartup

Ensuite on fait un copier/coller du script dans le fichier /etc/init.d/dropbox . On édite ce fichier et on change la première ligne en mettant la liste des utilisateurs Dropbox sur notre serveur. Par exemple, pour un seul utilisateur nommé nicolargo:

DROPBOX_USERS= »nicolargo »

Puis on change les propriétés du fichier:

sudo chmod a+rx /etc/init.d/dropbox

Et on automatise le lancement:

sudo update-rc.d dropbox defaults

Enfin on essaye une séquence stop / startpour vérifier que le script fonctionne correctement:

/etc/init.d/dropbox stop

Stopping dropbox…

/etc/init.d/dropbox status

dropboxd for USER nicolargo: not running.

/etc/init.d/dropbox stop

Stopping dropbox…

/etc/init.d/dropbox status

dropboxd for USER nicolargo: running (pid 10996)

Test de la Dropbox

Le plus simple est de copier un fichier dans le répertoire ~/Dropbox et de voir si il est bien copié dans votre Dropbox (attendre quelques secondes/minutes selon la taille de votre fichier)…

touch ~/fichiertest.txt

… à l’inverse, si vous supprimé ce fichier de votre Dropbox, il devrait également être supprimé de votre répertoire ~/Dropbox.

Sur mon serveur VPS Gandi, cela marche du tonnerre 🙂

Aller plus loin avec la ligne de commande

Dropbox propose un script en Python (sous licence libre GPL v3) permettant d’administrer sa Dropbox à partir de la ligne de commande cotre serveur. Pour récupérer et installer la dernière version du script, il faut saisir les commandes suivantes:

cd

wget -O dropbox.py http://www.dropbox.com/download?dl=packages/dropbox.py

chmod a+rx dropbox.py

sudo mv dropbox.py /usr/local/bin/

On lance le script sans paramètre pour voir la liste des fonctions disponibles:

/usr/local/bin/dropbox.py

Dropbox command-line interface

commands:

status       get current status of the dropboxd

help         provide help

puburl       get public url of a file in your dropbox

filestatus   get current sync status of one or more files

ls           list directory contents with current sync status

Les plus intéressantes:

dropbox.py status: affiche ce que le daemon Dropbox est en train de faire (exemple: « Downloading 62 files (630.8 KB/sec, 1 hr left) »).

dropbox.py  puburl ~/Dropbox/Public/conky-faenza-nicolargo.tar.gz: affiche l’URL publique de votre fichier.

Maintenir le bouzin à jour

Rien de bien compliqué, une fois la configuration faite, elle restera en mémoire même en cas de mise à jour. La séquence de commande suivante devrait faire l’affaire:

sudo /etc/init.d/dropbox stop

cd

wget -O ~/dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86

tar zxvf dropbox.tar.gz

rm -f ~/dropbox.tar.gz

sudo /etc/init.d/dropbox start

wget -O dropbox.py http://www.dropbox.com/download?dl=packages/dropbox.py

chmod a+rx dropbox.py

sudo mv dropbox.py /usr/local/bin/

Des remarques, questions ? Les commentaires sont là pour ça !

Sources utilisées pour la rédaction de ce billet:

Catégories
Open-source

BitTorrent – Les liens vers les ISO Ubuntu

Ceci est un petit billet à usage interne pour retrouver rapidement les liens torrents des dernières distributions Ubuntu. Je maintiendrai donc ce billet à jour à chaque publication d’une nouvelle version d’Ubuntu.

Pour rappel il faut distinguer chez Ubuntu les « releases » standards (support de 2 ans) des « releases » LTS (Long Time Support – support de 3 ans pour les versions Desktop et 5 ans pour les versions Server).

Je conseille d’utiliser les versions standards pour les PC Desktop/Netbook et les versions LTS pour les serveurs.

Tableau mis à jour en avril 2012

Distribution Architecture Version Lien téléchargement
Ubuntu Desktop 32 bits 12.04 LTS Torrent
Ubuntu Desktop 64 bits 12.04 LTS Torrent
Ubuntu Alternate 32 bits 12.04 LTS Torrent
Ubuntu Alternate 64 bits 12.04 LTS Torrent
Ubuntu Server 32 bits 12.04 LTS Torrent
Ubuntu Server 64 bits 12.04 LTS Torrent