Catégories
Blog Open-source Planet-libre Web

Configurer Piwik pour les sites à fort trafic

Nous avons vu dans un précédant billet comment installer et configurer Piwik comme une alternative libre à Google Analytics. Un des commentaire m’a conduit vers une page du Wiki officiel de Piwik ou il est expliqué que pour un site qui génère plus de quelques centaines de visites pas jour (drôle de définition d’un site à fort trafic :)), une configuration complémentaire est nécessaire.

De base, Piwik traite dynamiquement les données quand vous accédez à l’interface Web. L’idée est de forcer automatiquement cette génération toute les heures pour disposer d’un affichage plus rapide des rapports.

Mise en place du traitement automatique des données

Nous allons utiliser la crontab système pour lancer toutes les heures le traitement des informations stockés dans la base de donnée MySQL. Si vous avez suivi mon tutoriel sur l’installation de Piwik, le script permettant traiter les informations devrait se trouver dans le répertoire suivant: /var/www/piwik/misc/cron/archive.sh.

On commence par vérifier les droits de ce fichier et l’utilisateur a qui il appartient:

ls -alF  /var/www/piwik/misc/cron/archive.sh

-rwxr-xr-x 1 www-data www-data 3832 Mar 29 03:24 /var/www/piwik/misc/cron/archive.sh*

Il est bien en lecture et exécution (rx) pour l’utilisateur www-data.

On peut donc configurer la crontab de l’utilisateur www-data en ajoutant les deux lignes suivantes (je rappelle que pour éditer la crontab  il faut saisir la commande « sudo crontab -u www-data -e »):

MAILTO= »USER@DOMAINE.COM »

5 * * * * /var/www/piwik/misc/cron/archive.sh > /dev/null

Il faut bien sûr remplacer USER@DOMAINE.COM par une adresse mail valide qui sera utilisé en cas de problème pour vous prévenir.

Configurer l’interface Web

Une fois le crontab mis en place, il faut dire à l’interface Web de ne plus traiter automatiquement les données quand vous accédez à un rapport. Pour cela, il faut se rendre dans le menu Paramètres > Onglets Paramètres Généraux:

On demande à Piwik de ne pas traiter les données à partir de l’interface Web (1) puis on configure le délais de 3600 secondes (1 heure) entre deux générations de rapport (2).

Et voili, vous devriez avoir un Piwik qui boost même avec un trafic important !

Catégories
Open-source Planet-libre Reseau

Ziproxy re-compresse les images lors de vos surfs

Ziproxy est un proxy HTTP spécialisé dans la compression des données. Il permet par exemple de convertir les images des sites Web visités dans une qualité inférieure. Il permet également de compresser au format GZip les données de type pages HTML, CSS, JS ou autres.

Ce genre de proxy (qui ne fait pas de « caching ») a un sens dans les architectures réseau ou l’utilisateur final (l’utilisateur du navigateur Web) est relié à un site central (disposant d’une liaison haut-débit vers Internet) par une liaison de faible débit (par exemple accès VPN ou 3G pour les itinérants).

Nous allons donc dans ce billet installer, configurer (sans et avec Squid) puis tester un serveur Ziproxy.

Installation depuis les sources

La version disponible dans les dépôts Ubuntu/Debian est assez ancienne (2.7.2 au moment de l’écriture de ce billet). Nous allons donc compiler Ziproxy depuis les sources.

Avant de commencer, un certain nombre de pré-requis (notamment le support de JPEG 2000 et la création d’un utilisateur dédié pour lancer le daemon Ziproxy) doivent être installés:

sudo aptitude install libjasper-dev libgif-dev libungif4-dev libjpeg-dev libpng-dev libsasl2-dev zlib1g-dev

sudo adduser –shell /bin/noshell –no-create-home –disabled-login ziproxy

Compilation de la version 3.2.0 depuis les sources à récupérer sur le site Sourceforge.

tar jxvf ziproxy-3.2.0.tar.bz2

cd ziproxy-3.2.0

Compilation:

./configure –with-jasper

make

Installation:

sudo make install

Mise en place des fichiers de configuration et de lancement automatique:

sudo ln -s /usr/local/bin/ziproxy /usr/bin/ziproxy

sudo mkdir /etc/ziproxy

sudo mkdir /var/log/ziproxy

sudo chown ziproxy:ziproxy /var/log/ziproxy

sudo cp etc/ziproxy/ziproxy.conf /etc/ziproxy/

sudo cp etc/init.d/ziproxy /etc/init.d/

Le script de démarrage ayant été créé pour Fedora, voici le script que j’utilise sur un serveur Ubuntu Server 10.04:

#!/bin/bash

#

# Startup script for Ziproxy

#

# chkconfig: – 86 14

# description: Ziproxy

# Copyright (c)2005-2010 Daniel Mealha Cabrita

PROGNAME= »Ziproxy »

# source function library

# . /etc/init.d/functions

rc_done= » done »

rc_failed= » failed »

return=$rc_done

PID_FILE=/var/run/ziproxy.pid

ZIPROXY=/usr/bin/ziproxy

ZIPROXY_CONF=/etc/ziproxy/ziproxy.conf

RUN_AS_USER=ziproxy

case « $1 » in

start)

printf « Starting %s:  » « ${PROGNAME} »

${ZIPROXY} -d -u ${RUN_AS_USER} -c ${ZIPROXY_CONF} -p ${PID_FILE}

if [ $? != 0 ]; then

printf « %s » « ${rc_failed} »

else

printf « %s » « ${rc_done} »

fi

echo

;;

stop)

printf « Stopping %s:  » « ${PROGNAME} »

${ZIPROXY} -k -u ${RUN_AS_USER} -c ${ZIPROXY_CONF} -p ${PID_FILE}

if [ $? != 0 ]; then

printf « %s » « ${rc_failed} »

else

printf « %s » « ${rc_done} »

fi

echo

;;

restart|reload)

$0 stop

$0 start

;;

*)

printf « Usage: %s {start|stop|restart}\n » « ${PROGNAME} »

exit 1

esac

On teste que le daemon démarre et s’arrête correctement:

sudo /etc/init.d/ziproxy start

Starting Ziproxy: done

ps auxw | grep ziproxy

ziproxy 5429 0.0 0.0 3260 660 ? Ss 14:42 0:00 /usr/bin/ziproxy -d -u ziproxy -c /etc/ziproxy/ziproxy.conf -p /var/run/ziproxy.pid

sudo /etc/init.d/ziproxy stop

Stopping Ziproxy: done

Configuration en mode proxy simple

Peu de chose à modifier dans le fichier de configuration /etc/ziproxy/ziproxy.conf:

Port = 8080

Address = 192.168.0.253

# DebugLog = « /var/log/ziproxy/debug.log »

ErrorLog = « /var/log/ziproxy/error.log »

AccessLog = « /var/log/ziproxy/access.log »

## ****** THESE OPTIONS ARE EXPERIMENTAL ******

# ProcessHTML = false

# ProcessCSS = false

# ProcessJS = false

On relance ensuite le serveur pour prendre en compte la configuration:

sudo /etc/init.d/ziproxy restart

Il faut ensuite configurer son navigateur Web pour utiliser ce serveur comme proxy. Par exemple si votre serveur à l’adresse IP 192.168.0.253 et que Ziproxy est configuré sur son port découte par défaut (TCP/8080), il faut configurer le proxy de la manière suivante (exemple sous navigateur Web Chromium):

Test de Ziproxy

Une fois votre navigateur configuré, vous pouvez surfer sur le Web. Les pages s’affichent « normalement ». Nous allons comparer la qualité des images affichées avec et sans Ziproxy et regarder d’un peu plus près le gain en terme de volume de données transmises sur le réseau.

Taille de la page sans Ziproxy: 1.2 Mo (dont 592 Ko d’images)

Taille de la page avec Ziproxy: 0.9 Mo (dont 247 Ko d’images)

On a donc un gain d’environ de 25% en terme de taille. Selon les sites, ce gain varie entre 15 et 35%.

Pour mieux juger la qualité des images recompressés en JPEG voici un zoom à 500%:

Sans Ziproxy

Avec Ziproxy

JPEG 2000…

… ou l’histoire d’un format qui a du mal à prendre…

Pour activer le support de la compression au format JPEG-2000, il faut ajouter l’option suivante dans le fichier de configuration:

ProcessJP2 = false

ProcessToJP2 = true

ForceOutputNoJP2 = false

AnnounceJP2Capability = true

Malheureusement ce format d’image n’est pas pris en compte par les navigateur Web que j’ai testé (dernière version de Chromium et de Firefox…). Un plugin expérimental est disponible sous Firefox pour le support des images JP2 mais pas dans ma configuration (Ubuntu 10.04 + Firefox 3.6.10):

C’est bien dommage car le facteur de compression aurait été plus important…

Configuration en mode proxy secondaire de Squid

Ziproxy ne met pas en cache les données. C’est pour celà qu’il peut être intéressant de le coupler avec un serveur Squid. Voici la configuration cible (avec Squid et Ziproxy hébergés sur la même machine):

Configuration de Ziproxy en éditant le  fichier /etc/ziproxy/ziproxy.conf (attention configuration non complète):

Port = 8080

Address = « 127.0.0.1 »

TransparentProxy = false

ConventionalProxy = true

Puis on ajoute les lignes suivante dans la configuration du serveur Squid pour prendre en charge Ziproxy

cache_peer localhost parent 8080 0 no-query no-digest

never_direct allow all

Il faudra re-configuer vos clients pour  utiliser Squid comme proxy (et non plus Ziproxy). Le port TCP par défaut en écoute du serveur Squid est le 3128.

On peut trouver d’autres exemples de configurations sur cette page.

Catégories
Blog Open-source Planet-libre

Architecture pour un blog optimisé

Hier, j’ai passé une grande partie de ma journée dans les aéroports, j’en ai profité pour résumer dans un schéma quelques techniques d’optimisations que l’on peut actuellement mettre en place pour booster son blog.

Depuis que Saint Google prend en compte le temps de chargement des pages dans ses algorithmes, le sujet est devenu très à la mode. AntoineJérôme et moi même avont abordé récemment  le sujet dans nos blogs respectifs.

J’aimerai que l’on échange sur cette architecture afin que je puisse faire évoluer ce schéma.

Vous pouvez également récupérer le schéma au format Dia.

Catégories
Open-source Systeme

Comment optimiser OpenOffice

Voici une petite astuce afin d’optimiser OpenOffice (mais également NeoOffice) sur une machine récente (avec au minumum 1 Go de RAM).

Pour cela il se rendre dans le menu Outils/Options (Preferences dans NeoOffice), puis dans le sous menu Java:

Décocher la case « Use a java runtime environment »

cliquer ensuite sous le menu Memory:

Saisir les valeurs suivantes:

  • Number of steps: 30
  • Use for Open Office: 128
  • Memory per Object: 20
  • Number of Objects: 20

Puis relancer le logiciel. Vous devriez constater une amélioration lors du lancement de l’application mais également lors de l’utilisation !

Source: Downloadsquad