Catégories
Open-source Planet-libre

10 blogs en Anglais sur l’open-source

Pour ma veille technologique sur l’open-source, en plus des blogs Francophones et des comptes Twitter traitant de ce sujet, j’utilise également des blogs Anglophones.

Voici donc une liste de quelques sites que j’aimerai partager avec vous:


Sujets abordées
Linux in detail’s blog Logiciels libres
OMG! Ubuntu Distribution Linux Ubuntu
Web Upd8 Distribution Linux Ubuntu
Ubuntu Geek Distribution Linux Ubuntu
OStatic Actualité sur le libre
Chromium La source libre de Google Chrome
The Red Devil Linux & Co
MDLog:/Sysadmin Distribution Linux Debian
UbuntuX Distribution Linux Ubuntu
Yet Another Linux Blog Linux & Co


Si vous avez dans vos bookmarks/lecteur RSS de petites perles, merci de laisser les adresses et descriptions dans les commentaires.

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
Blog Nagios Open-source Planet-libre

Le forum de Nicolargo n’est plus. Mais…

En janvier 2009, j’avais lancé le forum de Nicolargo. Un forum pour les lecteurs de ce blog, un lieu virtuel pour continuer les discussions engagées dans les commentaires. Suite au hack de mon serveur, je me suis posé la question de l’avenir de ce site.

Au fil du temps ce forum est devenu un lieu d’échange vivant et actif, notamment grâce à la contribution de certains lecteurs (ils se reconnaîtront). Cependant, les discussions se sont trop focalisées, à mon gout, sur le petit monde de la supervision système et réseau. Or le Blog de Nicolargo n’est pas un blog sur Nagios. Je publie d’ailleurs de moins en moins de billet sur ce sujet.

A partir de ces constatations, j’ai décidé de fermer le forum (c’est à dire de ne pas le ré-ouvrir).

Cependant tout n’est pas perdu, je suis en entré en contact avec Romuald, administrateur du forum Monitoring-Fr. Dès son retour de congés (octobre 2010), il s’occupera d’importer dans ce forum tout les utilisateurs et discussions du forum de Nicolargo. Ainsi rien de vos discussions ne sera perdu !

De mon coté, je vais me focaliser sur le blog qui me prend déjà beaucoup (trop ?) de temps.

Catégories
Open-source Planet-libre Systeme

Mon desktop 201009

Voici mon desktop (Ubuntu 10.04) pour le mois de septembre 2010:

Fond d’écran: http://www.flickr.com/photos/52375768@N00/2516327980/

GTK: Look des fenêtre Equinox et icônes Faenza

Pour installer la combo magique (Equinox + Faenza)

On ajoute le dépôt suivant:

sudo add-apt-repository ppa:tiheum/equinox

sudo aptitude update

Puis on installe:

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

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

Et vous cela donne quoi vos desktops en ce moment ?

Catégories
Open-source Planet-libre Web

20 comptes Twitter à suivre sur l’open-source

Voici une liste (loin d’être exhaustive) de 20 comptes Twitter Français à suivre si vous êtes sensible à l’actualité open-source. J’ai tout simplement repris le classement Wikio de septembre 2010 et cherché les comptes Twitter ou Identi.ca associés.

Si vous avez d’autres comptes, les commentaires sont là pour ça !

Twitter Identica.ca
Framablog Twitter Identi.ca
Web Dev On Linux Twitter Identi.ca
Tux Planet Twitter Identi.ca
Toolinux Twitter Identi.ca
Philippe Scoffoni.net Twitter Identi.ca
Rom’s blog Identi.ca
Ubuntu party Twitter Identi.ca
Le blog de Nicolargo Twitter Identi.ca
Devil505’s blog Twitter Identi.ca
Le Weblog de Frederic Bezies Twitter Identi.ca
OpenSyd Twitter Identi.ca
No Life Club Twitter Identi.ca
L’Admin sous GNU/Linux Twitter Identi.ca
Clapico’s blog Twitter Identi.ca
Le mad blog Twitter Identi.ca
Le colibri libre Twitter
Le blog de Mandriva Twitter
Monitoring-Fr Twitter
Phollow Twitter Identi.ca
Mandriva-Fr Twitter Identi.ca


Bonne lecture et à bientôt sur Twitter ou Identi.ca !

Catégories
Blog Open-source Planet-libre Web

Analyser les logs de votre serveur Web avec AWStats

L’analyse des logs des sites Web est de plus en plus externalisé sur des services en ligne dans la veine de Google Analytics. Bien que ces services soient très bien fait, il peut être utile, pour des raisons techniques ou de confidentialité, de faire cette analyse directement sur vos serveurs. Nous allons donc dans ce billet mettre en place le logiciel AWStats pour qu’il analyse les logs générés par un serveur Apache.

La procédure est faire sur une distribution Ubuntu Server 9.04 mais pourra très bien être adapté sur d’autre versions/distributions.

Installation de AWStats

AWStats existe sous la forme de package Debian like (sinon vous pouvez toujours télécharger et compiler à partir des sources):

sudo aptitude install awstats

Les fichiers de configuration se trouvent dans le répertoire /etc/awstats. On va partir du template awstats.conf pour générer le fichier de configuration pour notre serveur (monbeaudomaine.com).

sudo cp /etc/awstats/awstats.conf /etc/awstats/awstats.monbeaudomaine.com.conf

Puis on édite ce fichier, notamment les lignes suivantes:

LogFile= »/var/log/apache2/monbeaudomaine-access.log »

LogFormat=1

SiteDomain= »monbeaudomaine.com »

On finalise l’installation en générant la base de données (stockée dans le répertoire /var/lib/awstats):

sudo /usr/lib/cgi-bin/awstats.pl -config=monbeaudomaine.com -update

Attention: cette étape peut prendre un certain temps selon la taille du fichier de log.

Puis on automatise la mise à jour (toutes les 10 minutes) de cette base en éditant le fichier crontab /etc/cron.d/awstats (il faut adapter la ligne de commande à votre nom de domaine):

0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.monbeaudomaine.com.conf -a -r /var/log/apache2/monbeaudomaine-access.log ] && /usr/lib/cgi-bin/awstats.pl -config=monbeaudomaine.com -update >/dev/null

Il faut bien vérifier que www-data a les droits:

  • en exécution sur le script /usr/lib/cgi-bin/awstats.pl
  • en lecture sur le fichier /etc/awstats/awstats.monbeaudomaine.com.conf
  • en lecture sur le fichier /var/log/apache2/monbeaudomaine-access.log

Les nouveaux fichiers de log (générés par logrotate) ne seront pas créés avec les bons droits, il faut donc modifier le fichier /etc/logrotate.d/apache2:

create 640 root www-data

Et vérifier que les répertoire et fichiers existant on les bons droits:

chmod 2755 /var/log/apache2/

chgrp -R www-data /var/log/apache2/

Avant d’accéder à l’interface Web de vos stats, il faut ajouter le fichier de configuration /etc/apache2/conf.d/awstats.conf à Apache:

Alias /awstatsclasses « /usr/share/awstats/lib/ »

Alias /awstats-icon/ « /usr/share/awstats/icon/ »

Alias /awstatscss « /usr/share/doc/awstats/examples/css »

ScriptAlias /awstats/ /usr/lib/cgi-bin/

<Directory « /usr/lib/cgi-bin/ »>

Options ExecCGI

AllowOverride None

AuthName « AWStats Access »

AuthType Basic

AuthUserFile /etc/awstats/htpasswd.users

Require valid-user

</Directory>

Puis on relance le serveur:

sudo /etc/init.d/apache2 restart

Utilisation de AWStats

Si l’installation c’est bien passé, une navigation vers la page http://localhost/awstats/awstats.pl?config=monbeaudomaine.com devrait afficher vos statistiques.

Si vous avez le message d’erreur suivant:

Error: SiteDomain parameter not defined in your config/domain file. You must edit it for using this version of AWStats.

Setup (‘/etc/awstats/awstats.conf’ file, web server or permissions) may be wrong.

Check config file, permissions and AWStats documentation (in ‘docs’ directory).

C’est que vous avez surement mal saisi l’URL http://localhost/awstats/awstats.pl?config=monbeaudomaine.com. Il faut bien vérifier que monbeaudomaine.com correspond au fichier de configuration /etc/awstats/awstats.monbeaudomaine.com.conf.

Sources:

Catégories
Nagios Open-source Planet-libre

Installation et configuration de Pnp4Nagios en « mode bulk »

Hier, j’ai installé un nouveau serveur Nagios en utilisant mon script automatique. J’ai ensuite voulu lui ajouter Pnp4Nagios, le plugin permettant de générer des graphes sur les hosts et services surveillés par Nagios. Malheureusement, la procédure que j’avais écrite à l’époque pour la version 0.4.x de Pnp4Nagios n’est plus valable pour la version 0.6.x.

Voici donc un billet permettant l’installation de Pnp4Nagios 0.6.6 (dernière version disponible aujourd’hui) sur un serveur Nagios opérationnel (procédure validée pour Nagios 3.2.2).

Installation de pré-requis système

Sous un serveur « Debian like », il faut installer les librairies suivantes:

sudo aptitude install rrdtool librrds-perl php5-gd

On doit avant l’installation configurer une variable posant problème dans le module PHP d’apache en éditant le fichier /etc/php5/apache2/php.ini:

; Magic quotes for incoming GET/POST/Cookie data.

magic_quotes_gpc = Off

Compilation de Pnp4Nagios

On récupère l’archive de la version 0.6.6 puis on lance la configuration:

wget https://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.6.tar.gz

tar zxvf pnp4nagios-0.6.6.tar.gz

cd pnp4nagios-0.6.6

./configure

On doit obtenir le résumé suivant (si ce n’est pas le cas, il doit y avoir d’autres dépendances système à installer):

General Options:

————————- ——————-

Nagios user/group: nagios nagios

Install directory: /usr/local/pnp4nagios

HTML Dir: /usr/local/pnp4nagios/share

Config Dir: /usr/local/pnp4nagios/etc

Location of rrdtool binary: /usr/bin/rrdtool Version 1.3.1

RRDs Perl Modules: FOUND (Version 1.3001)

RRD Files stored in: /usr/local/pnp4nagios/var/perfdata

process_perfdata.pl Logfile: /usr/local/pnp4nagios/var/perfdata.log

Perfdata files (NPCD) stored in: /usr/local/pnp4nagios/var/spool

Web Interface Options: ————————- ——————-

HTML URL: http://localhost/pnp4nagios

Apache Config File: /etc/apache2/conf.d/pnp4nagios.conf

Puis on compile/installe:

make all

sudo make install

sudo make install-webconf

sudo make install-config

sudo /etc/init.d/apache2 restart

Configuration de Nagios pour prendre en compte Pnp4Nagios

On commence par éditer le fichier /usr/local/nagios/etc/nagios.cfg:

process_performance_data=1

service_perfdata_file=/usr/local/nagios/var/service-perfdata

service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNA

ME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\t

SERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYP

E::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTAT

ETYPE$

service_perfdata_file_mode=a

service_perfdata_file_processing_interval=15

service_perfdata_file_processing_command=process-service-perfdata-file

host_perfdata_file=/usr/local/nagios/var/host-perfdata

host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$H

OSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHO

STSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$

host_perfdata_file_mode=a

host_perfdata_file_processing_interval=15

host_perfdata_file_processing_command=process-host-perfdata-file

Puis on prends en compte le répertoire des plugins Pnp4Nagios en ajoutant la ligne suivante (à adapté si USER2 est déjà configuré) dans le fichier /usr/local/nagios/etc/objects/resource.cfg:

# Sets $USER2$ to be the path to the PNP4Nagios plugins

$USER2$=/usr/local/pnp4nagios/libexec

Enfin on configure le plugin dans le fichier /usr/local/nagios/etc/objects/commands.cfg (attention il y à deux – avant le bulk… Wodpress n’en affiche qu’un…):

# PNP4nagios

define command{

command_name process-service-perfdata-file

command_line $USER2$/process_perfdata.pl –bulk=/usr/local/nagios/var/service-perfdata

}

define command{

command_name process-host-perfdata-file

command_line $USER2$/process_perfdata.pl –bulk=/usr/local/nagios/var/host-perfdata

}

On relance enfin Nagios pour prendre en compte la configuration:

sudo /etc/init.d/nagios restart

Configuration de Pnp4Nagios

La configuration se fait en accèdant à l’URL suivante: http://monserveurweb.com/pnp4nagios/

Le script install.php devrait être executé. Il fait un check de votre configuration. Si tout est vert, tout est ok 🙂

Dans ce cas, il est prudent de supprimer ce script:

sudo rm /usr/local/pnp4nagios/share/install.php

Utilisation de Pnp4Nagios

On accède à Pnp4Nagios à partir de la même URL: http://monserveurweb.com/pnp4nagios/

Après quelques minutes, les graphes devrait se mettre à jour.

Que faire en cas de problème ?

Pnp4Nagios fourni un outil pour investiguer les erreurs éventuelles de configuration. Il suffit de lancer la commande suivante:

/usr/local/pnp4nagios/libexec/verify_pnp_config.pl -e -m bulk

Et voili, que les graphes soient !

Catégories
Blog Open-source Systeme

TweetDeck sous Ubuntu avec Twitter et Identi.ca

Depuis que Twitter a basculer son système d’authentification sur OAuth, le client de micro-blogging Pino que j’utilisais sur mon PC Ubuntu ne fonctionne plus (à ce sujet je viens de lire ce billet de Web8 qui propose une bidouille pour refaire marcher Pino 0.2 avec Twitter)…

A la recherche d’un nouveau client de micro-blogging, je me suis dans un premier temps retourné vers Gwibber (le client standard sous Ubuntu 10.04). Mais j’ai beau faire des efforts, je n’arrive pas à trouver ce logiciel plaisant à utiliser. Le le trouve lourd, peu lisible… bref je n’accroche pas.

Lors d’une discussion avec un lecteur, je suis tombé sur TweetDeck: un client de micro-blogging complet mais non-libre et utilisant Adobe Air (il partait pas super bien dans mon échelle de valeurs…).

Après quelques jours d’utilisations, je pense cependant l’adopter en attendant de trouver (enfin) une solution libre alternative (peut être Pino 0.3…).

Installation de TweetDeck sous Ubuntu

On doit commencer par installer Adobe Air avec la commande suivante:

sudo aptitude install adobeair

Après un redémarrage de votre navigateur Web, il suffit de ce rendre sur la page suivante et de cliquer sur le bouton « Download now, it’s free ».

Puis de suivre l’installation graphique…

Configuration de TweetDeck pour votre compte Twitter

TweetDeck permet de configurer des comptes Twitter, Facebook, LinkedIn, Foursquare, Buzz et Myspace.

La configuration de votre compte Twitter est des plus simple, il faut aller dans le menu Setting > Accounts, puis cliquer sur le bouton Add new account > Twitter et enfin renseigner les informations sur votre compte:

Configuration de TweetDeck pour votre compte Identi.ca

TweetDeck ne supporte pas Identi.ca par défaut. Heureusement, Identi.ca utilise une interface standard de communication. Il est donc possible d’ajouter un compte Identi.ca.

il faut aller dans le menu Setting > Accounts, puis cliquer sur le bouton Add new account > Twitter (oui oui il faut bien cliquer sur le bouton Twitter) et enfin renseigner les informations sur votre compte. Avant de cliquer sur le bouton Verify details, il faut cliquer sur le lien Advanced Options (Alpha) puis saisir l’URL: http://identi.ca/index.php/api/

Et voilà, une solution non-libre en attendant Pino 0.3 !

Vous utilisez quoi comme client de micro-blogging ?

Catégories
Blog Open-source Systeme Web

12 étapes pour optimiser les performances de son blog WordPress

Lorsque l’on choisi d’héberger son blog WordPress (sur un serveur dédié ou virtuel), la problématique des performances vient assez vite sur le tapis. En effet, l’optimisation du blog permet non seulement de réduire le temps de chargement des pages (et donc d’être bien vu par seigneur gOOgle) mais également de dimensionner au plus juste son serveur: gain de temps d’un coté, gain d’argent de l’autre.

Nous allons donc dans ce billet parcourir une liste non exhaustive de techniques d’optimisations:

  • ETAPE 1: Hardware
  • ETAPE 2: Noyau Linux
  • ETAPE 3: Mise à jour du système d’exploitation
  • ETAPE 4: MemCached
  • ETAPE 5: Les modules Apache
  • ETAPE 6: Configuration d’Apache
  • ETAPE 7: XCache (PHP)
  • ETAPE 8: MySQL
  • ETAPE 9: WP-DBManager
  • ETAPE 10: W3 Total Cache
  • ETAPE 11: Thème WordPress
  • ETAPE 12: Tester/Surveiller

Les commentaires seront bien sur là pour nous faire partager vos solutions !

Le hardware

ETAPE 1) C’est un peu le serpent qui se mort la queue… En effet il est assez difficile de dimensionner le hardware d’un serveur sans avoir fait les optimisations est sans connaitre précisément le trafic du blog (surtout vrai pour les nouveaux blog).

C’est en partie pour ces raisons qui j’ai choisi un serveur VPS de chez Gandi. En effet il est possible d’augmenter ou de diminuer les « parts » affectées à son serveur de manière dynamique (une « part » correspond à une ressource CPU, mémoire et disque).

J’ai actuellement « 3 parts » sur le serveur du Blog de Nicolargo mais je m’en sers également pour d’autres besoins (je pense que pour ce blog, un serveur avec « 2 parts » suffirait largement). Pour une première expérience dans le monde du blogging, un serveur « 1 part » devrait convenir (environ 12€ HT par mois).

Je n’entrerai pas dans les discussions sur le coups relativement élevé de cette solution par rapport à un serveur dédié comme l’offre Dedibox de Online.net.

Le système d’exploitation

L’optimisation du système d’exploitation dépend bien sûr de la distribution Linux utilisée. Lors de la création de mon serveur j’ai choisi d’utiliser Ubuntu Server 8.04 que j’ai fait évolué en 9.04. Pourquoi cette distribution GNU/Linux ? Tout simplement car c’est celle que je connais le plus…

ETAPE 2 ) On commence par optimiser le noyau Linux . Je passe rapidement sur les explications. Il existe de nombreux article sur le net détaillant ces configurations. La configuration donnée est celle de mon serveur VPS (3 parts, 1 Go de RAM), elle doit être adaptée à votre configuration hardware.

Il faut éditer/modifier le fichier /etc/sysctl.conf (disponible sur GitHub):


Puis on applique:

sudo sysctl -p

Sources:

ETAPE 3) La première chose à faire quand on administre un serveur est bien entendu de le maintenir à jour au niveau des logiciels systèmes et applicatifs. Pour cela je m’aide d’un petit logiciel nommé cron-apt. Ce dernier permet de m’avertir par mail quand une mise à jour est disponible (par exemple une nouvelle version d’Apache ou une librairie PHP). En plus de corriger des failles de sécurités, les mises à jours permettent souvent d’obtenir de meilleures performances (que ce soit en rapidité ou en consommation de ressources).

L’installation est des plus simple:

sudo aptitude install cron-apt

Configuration en éditant le fichier /etc/cron-apt/config, notamment les lignes suivantes:

MAILTO= »nom@domaine.com »

MAILON= »always »

Un mail sera automatiquement envoyé à l’adresse nom@domaine.com, tout les matins à 4:00. Voici un exemple:

On peut voir qu’une mise à jour est disponible. Il ne reste plus qu’a se connecter en SSH sur le serveur et faire un:

sudo aptitude safe-upgrade

Il est possible de faire automatiquement les mises à jour mais je pense cela risqué si quelque chose se passe mal…

On critique souvent les serveurs VPS pour leurs faibles performances disque. Bien que je trouve celle des VPS Gandi plutôt acceptable (environ 6 Mo/s pour l’écriture et 24 Mo/s pour la lecture de petits fichiers type script PHP), il est intéressant de mettre en place un cache mémoire sur notre serveur. Ainsi, les applications compatibles pourront lire et écrire les données en RAM et non plus sur disque.

ETAPE 4) Nous allons donc installer MemCached, un cache mémoire libre.  On commence par installer le cache ainsi que la librairie Perl associée (qui sera utilisée par WordPress):

sudo aptitude install libcache-memcached-perl php5-memcache memcached

Par défaut, le cache écoute sur l’adresse 127.0.0.1 et sur le port TCP/11211. La taille du cache mémoire est de 64 Mo. J’ai gardé ces paramètres pour mon utilisation.

On peut obtenir des statistiques sur l’utilisation de MemCached en utilisant la commande:

# echo « stats » | nc localhost 11211

STAT pid 2806

STAT uptime 698465

STAT time 1283351366

STAT version 1.2.2

STAT pointer_size 32

STAT rusage_user 31.829989

STAT rusage_system 123.891742

STAT curr_items 12834

STAT total_items 1394993

STAT bytes 48830599

STAT curr_connections 11

STAT total_connections 16845

STAT connection_structures 31

STAT cmd_get 4012823

STAT cmd_set 1394993

STAT get_hits 2547543

STAT get_misses 1465280

STAT evictions 5694

STAT bytes_read 10561103955

STAT bytes_written 37908972470

STAT limit_maxbytes 67108864

STAT threads 1

END

Apache & PHP

On continue ensuite avec l’optimisation du serveur Apache (version 2.xx au moment de l’écriture de ce billet).

ETAPE 5) Apache se base sur un système de modules pour ajouter de nouvelles fonctions à votre serveur Web. Sous Ubuntu Server, la liste des modules actifs se trouvent dans le répertoire /etc/apache2/mods-enabled. Un petit ls dans ce répertoire vous donne donc la liste. L’optimisation consiste à supprimer les modules non utilisés. Je vous conseille la lecture de ce billet qui donne la liste des modules nécessaires au fonctionnement de WordPress. Attention, si votre serveur héberge d’autres sites Web que votre blog, il faut vérifier de ne pas supprimer un module utile…

Voici la liste de mes modules sur mon serveur:

alias.conf autoindex.conf dir.conf negotiation.load

alias.load autoindex.load dir.load php5.conf

auth_basic.load cgi.load env.load php5.load

authn_file.load dav.load expires.load rewrite.load

authz_default.load dav_svn.conf headers.load setenvif.conf

authz_groupfile.load dav_svn.load mime.conf setenvif.load

authz_host.load deflate.conf mime.load status.conf

authz_user.load deflate.load negotiation.conf status.load

ETAPE 6) On configure ensuite la manière dont les processus Apache sont lancés et gérés en mémoire et d’autres paramètres. Il faut éditer la section suivante dans le fichier /etc/apache2/apache2.conf (ou httpd.conf sur d’autre distribution GNU/Linux). Pour une description des paramètres, merci de lire le billet suivant:

<IfModule mpm_prefork_module>

StartServers 5

MinSpareServers 5

MaxSpareServers 10

MaxClients 40

MaxRequestsPerChild 2000

</IfModule>

# KeepAlive: Whether or not to allow persistent connections

KeepAlive On

# MaxKeepAliveRequests: The maximum number of requests to allow

MaxKeepAliveRequests 200

# KeepAliveTimeout: Number of seconds to wait for the next request

KeepAliveTimeout 5

# Timeout: The number of seconds before receives and sends time out.

Timeout 50

J’ai également modifier le fichier /etc/apache2/conf.d/optimization pour gagner quelques précieux  points aux tests Yslow et Page Speed:

Header unset ETag

FileETag None

On applique la configuration en relançant Apche:

sudo /etc/init.d/apache2 restart

Sources:

ETAPE 7) WordPress se base sur le langage PHP qui est connu pour être flexible mais pas très performant. C’est pour cela qu’il est nécessaire d’installer un cache PHP sur votre serveur Web WordPress. En gros, il permet de mettre en cache le code PHP déjà compilé. J’utilise personnellement XCache.

L’installation est simple:

sudo aptitude install php5-xcache

On configure ensuite le fichier/etc/php5/conf.d/xcache.ini (à adapter à votre configuration):

xcache.size = 64M

On relance le serveur Web:

sudo /etc/init.d/apache2 restart

Source:

MySQL

Souvent décriée, MySQL reste à l’heure actuelle la base de donnée officielle supportée par le moteur de blogging WordPress. Nous allons donc étudier quelques techniques d’optimisation.

ETAPE 8) On commence par éditer le fichier de configuration /etc/mysql/my.cnf pour ajuster la taille des caches (encore une fois les valeurs sont à adapter en fonction de votre audience/configuration):

query_cache_type = 1

query_cache_limit = 2M

query_cache_size = 32M

ETAPE 9) On installe ensuite le plugin WordPress WP-DBManager. Ce dernier permet de maintenir une base de données optimisée à travers le temps. En plus des fonctions de sauvegarde (manuelle ou automatique) et de restauration de votre base de données WordPress, ce plugin permet de d’optimiser et réparer cette même base.

Source:

WordPress

ETAPE 10) L’installation standard de WordPress (la fameuse installation en 5 minutes) ne tient pas en compte de l’optimisation. Nous allons voir comment configurer l’utilisation parallèle de XCache et Memcached (préalablement installé dans les étapes n°3 et n°5). Pour cela nous allons utiliser l’indispensable plugin W3 Total Cache.

Après l’installation du plugin, il faut se rendre dans le menu Performance > General setting de la page d’administration de WordPress puis cliquer sur le bouton Compatibility check pour vérifier que XCache et Memcached sont bien détectés:

Opcode cache: XCache

Memcache extension: OK

Ensuite on configure WordPress pour utiliser Memcached en activant toutes le fonctions de cache (CDN mis à part) et en utilisant le démon Memcached. Exemple de configuration pour les pages:

Dans le menu Page cache settings j’active toutes les fonctions sauf pour les pages 404:

Dans le menu suivant (Minify settings), j’active toutes les fonctions. Cela à pour but d’optimiser les pages, css et js avant d’être envoyés vers les lecteurs (attention, certains JS n’aiment pas beaucoup ces optimisations, à tester donc…).

Enfin, dans le menu Browser Cache setting, j’active toutes les fonctions et les expires header lifetime à:

  • 3600 secondes pour JS / CSS
  • 3600 secondes pour le HTML
  • 2592000 secondes pour les autres fichiers

A l’heure actuelle, le trafic généré par mon blog ne nécessite pas l’utilisation de caches réseau répartis (CDN). Mais c’est une optimisation à prendre en compte pour les « gros » sites.

Sources:

ETAPE 11) Rien ne sert d’avoir un kernel Linux, un serveur Web, un moteur PHP et un WordPress optimisés si le thème de votre blog est mal développé. Il est important de tester ce thème et notamment les plugins utilisées. Ces derniers utilisent souvent des JavaScripts qui peuvent pénaliser fortement le temps de chargement de vos pages. Rien de tel que des mesures de type YSlow et Page Speed pour mettre en évidence ce qui ne va pas.

Sources:

Tester/surveiller son serveur

ETAPE 12) Pour tester les optimisations mise en place, j’utilise l’outil  GTMetrix qui donne les valeurs YSlow et Page Speed (avec un archivage vous permettant de voir l’évolution des performances de votre blog à travers le temps).

De manière locale et surtout pour valider la configuration de votre serveur Web (Apache dans ce document), vous pouvez utiliser la commande suivante:

ab -t30 -c5 http://blog.mondomaine.com/

La ligne intéressante donnant le nombre maximal de requête par seconde que votre blog peut supporter est la suivante:

Requests per second: 158.19 [#/sec] (mean)

A un niveau plus bas, la commande Linux netstat permet de donner pas mal d’informations sur l’état des sockets:

netstat -tan | grep ‘:80 ‘ | awk ‘{print $6}’ | sort | uniq -c

Enfin, pour surveiller l’activité de MySQL, j’utilise la commande MySqlReport.

Autres optimisations possibles

D’autres optimisations sont possibles, pour vous donner un exemple, je suis tombé l’autre jour sur le première article d’une série en cours sur le blog d’Antoine Benkemoun qui propose d’utiliser Squid pour booster les performances de votre site. C’est une technique très intéressante mais qui nécessite, pour être vraiment efficace, l’utilisation deux deux machines différentes. Une servant de reverse proxy-cache et une autre hébergeant votre blog.

Il est aussi possible de se passer du serveur Web Apache (il est vrai un peu lourd à administrer) pour se pencher vers des serveurs plus légers comme NGinx ou Cherookee. Update: Ou bien d’utiliser NGinx comme serveur Web pour les pages statiques et Apache pour les pages dynamiques (voir exemple de configuration ici). L’avantage d’une telle configuration est un gain non négligeable en terme de consommation mémoire.

Il existe un nombre incalculable d’optimisations possibles, j’espère d’ailleurs en découvrir de nouvelles dans vos commentaires…

Catégories
Nagios Open-source Reseau

Nagios 3.2.2 est disponible, les scripts Nicolargo aussi !

C’est la rentrée des classes dans le mini-monde de la supervision: en bon élève Nagios sort une nouvelle version de son coeur (Nagios Core 3.2.2). Pour une liste complète des nouveautés et corrections de bugs, je vous conseille la lecture de cette page.

En parallèle j’ai modifié les scripts d’installation et de mise à jour de Nagios pour qu’il prenne en compte cette nouvelle version.

Si vous avez suivi mon tutoriel d’installation de Nagios (ou que vous avez utilisé le script), il suffit de saisir les commande suivantes pour effectuer une mise à jour de votre serveur:

wget http://svn.nicolargo.com/nagiosautoinstall/trunk/nagiosautoupdate-ubuntu.sh

chmod a+x nagiosautoupdate-ubuntu.sh

sudo ./nagiosautoupdate-ubuntu.sh

Attention: cette méthode de mise à jour ne fonctionnera pas si vous avez installé Nagios à partir des dépôts officiels de votre distribution.

Et hop !