dimanche 6 mars 2011

INSTALLATION DE NGINX – LE SERVEUR WEB HAUTES PERFORMANCES

INSTALLATION DE NGINX – LE SERVEUR WEB HAUTES PERFORMANCES


Nginx fait partie des outils à considérer très sérieusement aujourd’hui dans lesarchitectures Web performantes. Nginx peut jouer plusieurs rôles : reverse proxy,load balancer ou encore serveur Web complet.

Nginx est particulièrement réputé pour ses performances, et il est vrai que la consommation des ressources CPU et RAM de nginx s’affole rarement.
Par le passé, j’utilisais nginx uniquement pour servir directement les fichiers statiques (CSS, images) et en tant que reverse proxy d’Apache pour les pages dynamiques (PHP).
Mais aujourd’hui, je l’utilise en tant que serveur Web principal en l’associant à PHP5-FPM. Et les performances sont au rendez-vous, je ne regrette pas l’abandon d’Apache2.
Voyons comment installer Nginx, en le compilant directement depuis la source, les versions disponibles sur les dépôts Debian étant plutôt anciennes (même si les choses se sont arrangées avec Debian Squeeze).

Préparatifs et téléchargement de nginx

La compilation de nginx nécessite quelques pré-requis que voici :
apt-get -y install libpcre3-dev build-essential libssl-dev
On crée ensuite les répertoires destinés à accueillir les fichiers de nginx :
mkdir /etc/nginx
mkdir /etc/nginx/conf.d
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
mkdir /var/log/nginx
mkdir -p /var/lib/nginx/body
mkdir /var/lib/nginx/proxy
mkdir /var/lib/nginx/fastcgi
mkdir -p /var/cache/nginx/tmp
mkdir -p /var/cache/nginx/cached
On note au passage la création de deux répertoires : sites-available et sites-enabledpour respecter la même structure que sur Apache2 pour l’activation et la désactivation des sites (qui est plutôt pratique).
On se place ensuite dans un répertoire temporaire pour télécharger la dernière version de nginx :
mkdir -p /tmp/nginxinstall
cd /tmp/nginxinstall
Et on lance le téléchargement des sources :
wget http://sysoev.ru/nginx/nginx-0.8.54.tar.gz -O nginx.tar.gz

Compilation de nginx

On décompresse l’archive et on se place dans le répertoire décompressé :
tar zxvf nginx.tar.gz
cd /tmp/nginxinstall/nginx-*
On configure alors les paramètres de compilation :
./configure \
--prefix=/usr \
--conf-path=/etc/nginx/nginx.conf \
--http-log-path=/var/log/nginx/access_log \
--error-log-path=/var/log/nginx/error_log \
--pid-path=/var/run/nginx.pid \
--user=www-data \
--group=www-data \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--with-md5=/usr/lib \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_flv_module \
--with-pcre \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--with-debug
On note ici que l’on choisit les répertoires des fichiers de configuration, des logs… et les modules à intégrer ou à ignorer. Vous pouvez consulter la liste des modules standards et ceux disponibles en supplément ici : http://wiki.nginx.org/Modules.
Si un des modules vous intéresse, pensez à l’intégrer dès maintenant, après il vous faudra recompiler nginx pour y avoir accès.
Ici, j’ai désactivé les modules de mail que je n’utilise pas.
On peut ensuite lancer la compilation :
make
make install
Nginx devrait alors être installé.

Script de démarrage

Il manque encore quelques éléments pour que l’installation soit pleinement fonctionnelle, notamment un fichier de démarrage.
Copier le contenu suivant dans le fichier /etc/init.d/nginx :
#! /bin/sh
 
### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO
 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/nginx
NAME=nginx
DESC=nginx
 
test -x $DAEMON || exit 0
 
# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
 . /etc/default/nginx
fi
 
set -e
 
case "$1" in
  start)
 echo -n "Starting $DESC: "
 start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
  --exec $DAEMON -- $DAEMON_OPTS || true
 echo "$NAME."
 ;;
  stop)
 echo -n "Stopping $DESC: "
 start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
  --exec $DAEMON || true
 echo "$NAME."
 ;;
  restart|force-reload)
 echo -n "Restarting $DESC: "
 start-stop-daemon --stop --quiet --pidfile \
  /var/run/$NAME.pid --exec $DAEMON || true
 sleep 1
 start-stop-daemon --start --quiet --pidfile \
  /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
 echo "$NAME."
 ;;
  reload)
      echo -n "Reloading $DESC configuration: "
      start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
          --exec $DAEMON || true
      echo "$NAME."
      ;;
  *)
 N=/etc/init.d/$NAME
 echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
 exit 1
 ;;
esac
 
exit 0
Donner ensuite les droits au script, et le configurer pour le démarrage :
chmod 755 /etc/init.d/nginx
chown root:root /etc/init.d/nginx
/usr/sbin/update-rc.d -f nginx defaults

Rotation des logs

Il faut également prévoir la configuration de logrotate pour la rotation des logs (sinon la taille des fichiers pourrait vite devenir trop importante).
Copier le contenu suivant dans le fichier /etc/logrotate.d/nginx :
/var/log/nginx/*.log {
 daily
 missingok
 rotate 52
 compress
 delaycompress
 notifempty
 create 640 root adm
 sharedscripts
 postrotate
  [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
 endscript
}
On attribut les droits au script :
chown root:root /etc/logrotate.d/nginx

Scripts d’activation et de désactivation des sites

Dernière chose : vous connaissez peut-être les commandes a2ensite et a2dissite qui permettent d’activer et désactiver les sites sous Apache2. Pour faire la même chose sous nginx, vous trouverez sur cette page les scripts nginx_ensite et nginx_dissite qu’il faudra copier dans /usr/bin :
cp nginx_ensite /usr/bin
ln -s /usr/bin/nginx_ensite /usr/bin/nginx_dissite
Le script nginx_dissite est en fait un lien vers le script nginx_ensite.
Pour pouvoir utiliser ces deux scripts correctement, on ajoute également la complétion automatique sous bash qui nous proposera les sites disponibles en appuyant sur la touche « tab » du clavier à la suite de la commande :
cp bash_completion.d/nginx-ensite /etc/bash_completion.d/
Il faudra également prendre en compte le chemin /etc/nginx/sites-enabled dans la configuration de nginx. Editer le fichier /etc/nginx/nginx.conf et y rajouter la ligne suivante dans le bloc http :
include /etc/nginx/sites-enabled/*.conf;
Et voilà! Vous avez tout ce qu’il faut pour commencer à travailler sur nginx. Nous verrons dans l’article suivant comment installer et utiliser PHP5-FPM à travers notamment les balises comme fastcgi_pass sous nginx.
Navigation«Installation d’Apache 2 et PHP5

Cacher un conteneur TrueCrypt dans une vidéo

Cacher un conteneur TrueCrypt dans une vidéo


Martin Fiedler, un allemand portant le pseudo KeyJ a mis en ligne sur son blog, une méthode permettant d’intégrer dans une vidéo MP4, un conteneur TrueCrypt. TrueCrypt propose pour la protection des données 2 types de conteneurs. Les classiques et les conteneurs cachés, qui sont des conteneurs dans les conteneurs. Ces conteneurs cachés disposent de 2 niveaux de mot de passe. Si vous entrez le premier mot de passe, vous accédez au premier conteneur et si vous entrez le second, vous arriverez directement dans le conteneur caché. Impossible pour un « attaquant » de savoir si un volume truecrypt contient un conteneur caché, et si on vous force à donner le mot de passe de déchiffrement de votre conteneur, vous pouvez vous contenter de donner uniquement le premier mot de passe, en jurant qu’il n’y a pas de conteneur caché en plus.
Mais le truc, c’est qu’avoir un conteneur sur son ordinateur n’est pas très discret. On voit vite que vous avez du matériel chiffré sur l’ordinateur, ce qui peut rapidement attirer les curieux. D’où le besoin de le planquer dans un fichier vidéo.
Avant de commencer, il faut trouver un MP4 ou un MOV qui soit crédible pour le transport. C’est à dire un film qui soit suffisamment bien encodé et de bonne qualité, pour qu’une augmentation de sa taille n’éveille pas les soupçons. Une série de 500 Mo que vous ferez grimper à 700 Mo pourra faire l’affaire si la qualité est au rendez-vous. Je vais utiliser pour ma part, un fichier MP4 de 18,2 Mo pour mon test.
Créez ensuite un volume TrueCrypt en prenant bien soin de cocher la case qui dit « Hidden Volume » (Volume caché en français). Donnez lui ensuite le nom d’une vidéo qui colle avec votre vidéo initiale. Comme chez moi il s’agit d’une vidéo de la navette spatiale americaine, je vais l’appeler SpaceShuttle.mp4. Choisissez ensuite le chiffrement que vous voulez, puis donnez une taille au conteneur qui soit égale à l’augmentation probable de votre fichier vidéo. Par exemple, j’ai une vidéo de 18,2 Mo… sa qualité est moyenne mais si elle faisait 25 Mo, ça ne serait pas flagrant. 25 – 18,2 = 6,8 Mo.
cap 2011 02 28 à 09.01.20 Cacher un conteneur TrueCrypt dans une vidéo
Comme je n’ai pas le droit aux décimales et que je souhaite juste y planquer un petit fichier texte, je met 6 MB (attention aux conversions. Si vous ne voulez pas arrondir, vous pouvez aussi entrer cette taille de fichier en KB voire en Bytes directement) et je mets en mot de passe « 1234″ mais je vous recommande de mettre quelque chose de beaucoup plus long et complexe. Ensuite, TrueCrypt passe à la création du conteneur caché. Même chose, vous remettez une taille max (par exemple 5 MB, ce qui laissera 1 MB sur le premier conteneur), et un mot de passe différent du premier. J’ai mis « 123456″.
tcsteg7 Cacher un conteneur TrueCrypt dans une vidéo
Votre conteneur spaceshuttle.mp4 est créé. Ne le montez pas tout de suite sur votre ordinateur. Nous allons le fusionner avec la vidéo. Pour cela, KeyJ a créé un petit script python qui se lance comme ceci :
python tcsteg.py vraievideo.mp4 monconteneur.mp4
Ce qui pour moi, donne :
python tcsteg.py media.mp4 spaceshuttle.mp4
Et voilà… Mon conteneur SpaceShuttle.mp4 :
  • pèse maintenant presque 25 Mo
  • est lisible dans VLC ou tout autre player supportant les .mov
  • peut être monté comme un volume TrueCrypt. (je peux donc y mettre des infos)
La question maintenant c’est : Est ce que c’est détectable ?
En théorie oui mais c’est très très difficile. Pour cela, il faudra vraiment se lancer dans une analyse du bitrate de la vidéo pour se rendre compte qu’il y a des incohérences et que son niveau de compression ne correspond pas à sa taille réelle. Le script python de KeyJ est capable de traiter des fichiers d’une taille maximum de 4 Gb. Vous pouvez donc facilement faire des conteneurs de 3 Gb couplés à des vidéos de 1 Gb de bonne qualité.
Toutes les explications sont décrites ici. Mon fichier vidéo est disponible ici, si vous voulez décoder le message secret qui se trouve à l’intérieur. (mot de passe : 123456)
Merci à Dot_Com pour l’info

Comment ajouter les commentaires Facebook sur un blog Wordpress ?

Comment ajouter les commentaires Facebook sur un blog Wordpress ?

Facebook a mis à jour hier son système de commentaires qui peut s’intaller sur n’importe quel site ou blog. Ce gestionnaire de discussions est loin de faire l’unanimité, car une personne ne peut plus commenter de façon anonyme et elle doit passer par Facebook (elle commente avec son compte facebook), en attendant que le réseau social se décide à intégrer d’autres points d’entrée comme un compte Twitter ou Google par exemple.
Maintenant ce script de commentaires déportés n’a pas que des désavantages, bien au contraire, car il peut apporter plus de trafic sur un blog. En effet le commentaire avec l’URL du post apparait à la fois sur le profil de l’utilisateur et sur son mur si le blogueur a activé la publication sur facebook.
Avec ses « plus » et ses « moins », le plugin social Comments Box risque de mettre un peu de temps avant d’envahir le web… ou pas (techcrunch.com l’a déjà mis par exemple).
Maintenant si vous avez un blog wordpress, et que vous souhaitez avoir ce système de commentaires, comment faire pour l’installer ?
Il y a deux façons: soit avec le plugin wordpress Facebook Comments (explications détaillées ci-dessous), soit directement avec le code fourni ici (mais vous aurez besoin de quelques ajustements; voir *[2è méthode]vers le bas de cet article).
1. Première étape, vous devez télécharger le plugin Facebook Comments for WordPress. Vous pouvez le faire par FTP ou bien directement depuis l’administration de votre blog, dans « Extensions », puis « Ajouter ». Recherchez « Facebook Comments for WordPress » puis cliquez sur « installer maintenant ».
Activez l’extension.
2. Deuxième étape. Allez dans Réglages. Vous avez besoin de paramètres pour pouvoir commencer à utiliser le plugin : l’application ID et le code secret de l’application. (voir image ci-dessous)
reglages
Pour obtenir ces deux clés, vous allez devoir créer une application facebook en allant surfacebook.com/developpers ou facebook.com/developers/apps.php et cliquer sur « Set Up New App«  en haut à droite.
Vous arrivez sur cet écran :
create new app
Entrez dans « App Name » le nom que vous voulez pour votre application, par exemple « Boite Commentaires« .
Vous arrivez ensuite sur la page de paramétrage de votre application. Entrez français pour la langue, votre email comme contact, puis les administrateurs de votre choix (pratique pour une entreprise) :
app comments
N’appuyez pas sur enregistrer en bas mais allez plutôt dans l’onglet (à gauche) « Facebook Intégration« . Là se trouvent les deux informations dont vous avez besoin. Copiez-collez les et ensuite enregistrer votre app.
facebook integration
Allez dans les réglages du plugin WordPress : Entrez vos deux codes, puis effectuez quelques réglages simples comme le choix de la langue, la largeur de la boite de commentaires (500 pixels par défaut), le nombre par défaut (10 commentaires est pas mal) et arrangez le titre de votre Comments Box, par exemple « Commentaires Facebook ».
Voilà c’est gagné ! (vous devriez voir la boite facebook ci-dessous ; notez qu’on peut laisser les commentaires natifs de wordpress plus bas pour avoir les deux systèmes en parallèle ou même supprimer l’ancien système de commentaires). J’ai testé ce plugin sur un premier blog et ca fonctionne super bien, sans code à ajouter manuellement. Mais ce n’est pas le cas sur celui-ci, rien ne se passe…. Grrrr là je suis dégoûté car le plugin est beaucoup mieux et a plus d’options…. J’essaie une diversion en intégrant manuellement le code dans single.php (vu sur le site de l’auteur du plugin) mais non ca ne marche pas plus…
*[2è méthode] [c'est celle qui est en place ci-dessous en attendant] Si pour vous c’est pareil, alors on peutajouter le code à la main en laissant de côté le plugin mais vous aurez néanmoins besoin de vous créer une App ID pour votre site. Attention si vous mettez le code manuellement dans single.php par exemple, mettez dans le champ « URL to comment on » non pas l’adresse de votre blog mais plutôt qui récupèrera automatiquement l’URL de votre article.
Commentaires facebook
Modération des commentaires :
Pour accéder à la modération des commentaires et définir certains paramètres comme les mots à bannir, les modérateurs, l’approbation des commentaires automatique ou contrôlée, la correction grammaticale, … c’est ici (image ci-dessous) : developers.facebook.com/tools/comments
moderation tool