Papy Geek

Un blog différent sur tous les bons trucs du Web

Archive pour la catégorie ‘WordPress

Plugin WordPress inutile donc indispensable : fortune

stats  lectures.

En lisant les Chuck Norris Facts dernièrement, je me suis dit “tiens ça serait sympa de les intégrer sur le blog”. Aussitôt dit, aussitôt fait et voilà donc un petit plugin WordPress permettant d’intégrer des citations de type “fortune” dans votre blog.

papy-geek-fortune

Mais fortune, c’est quoi ?

fortune est un programme simple qui affiche un message au hasard provenant d’une base de données de citations. La plupart des distributions de fortune comprennent des fichiers de citations de personnalités célèbres, de phrases telles que celles des fortune cookies (d’où le nom), et d’autres messages humoristiques. Fortune se trouve principalement sur les systèmes UNIX, mais des clients pour d’autres plateformes existent également. Souvent les utilisateurs de terminaux Unix en mode texte placent cette commande dans leurs fichiers .profile et/ou .logout pour les afficher à la connexion et à la déconnexion, respectivement.

C’est donc un format très connu, et vous trouverez des tas de fichiers de fortunes à travers le Web comme sur Fortunes-FR.

Pour installer le plugin, il vous suffit de télécharger et décompresser l’archive ci-dessous dans wp-content/plugins :

pg_fortune.zip
» 829.1 KiB - 46 téléchargements - 30 juin 2008
PapyGeek Fortune : le plugin de Citations pour WordPress.

Vous pouvez ensuite copier des fichiers fortune dans le dossier “wp-content/plugins/pg_fortune/fortunes“. Ces fichiers sont composés de citations séparés par des lignes comprenant le caractère “%”. Les citations des Chuck Norris Facts et de BashFR sont intégrées.

Rendez-vous ensuite dans les options du plugin où vous pourrez choisir le fichier de citations à utiliser.

papy-geek-papygeek-fortune-wordpress

Au menu des options avancées, la possibilité de remplacer un mot dans les citations, pour par exemple transformer “Chuck Norris a déjà compté jusqu’à l’infini. Deux fois.” en “PapyGeek a déjà compté jusqu’à l’infini. Deux fois.

Pas prétentieux.

Il existe également une option désactivée par défaut permettant d’afficher les citations via JavaScript pour que celles-ci changent à chaque rafraichissement de page même si les pages sont en cache avec WP Super Cache par exemple.

Si vous voulez que les citations soient en cache, activez votre plugin de cache et décochez cette case. Le plugin utilisera alors simplement du HTML/PHP.

Pour intégrer les citations dans votre thème, il suffit d’utiliser le code suivant :

<!-- A ajouter dans votre thème-->
    <?php if ( function_exists('PGfortune') ) { PGfortune(); }?>
<!-- Fin -->

Vous pouvez voir dans les options du plugin si tout fonctionne bien dans la section “Exemple” comme sur la capture ci-dessus.

Au passage, si vous voulez un autre plugin hyper utile, vous pouvez tester celui de Defaite qui vous permettra de recevoir des messages de vos visiteurs directement sur Twitter ou par SMS via un petit formulaire à ajouter sur votre blog (pourquoi pas dans la page de contact).

plugin-wordpress-def-sms-defaitefr

Bon allez, je vous laisse bricoler votre WordPress

WordPress 2.6 : les nouveautés à venir

stats  lectures.

WordPress 2.6 vient d’être publié dans sa version beta 1 que vous pouvez télécharger ici.

wordpress-gears

A première vue, vous ne remarquerez peut-être pas beaucoup de changements entre la version 2.5.1 et la version 2.6. Il y a tout de même deux nouvelles fonctionnalités importantes : le suivi des modifications pour les articles et l’utilisation de Google Gears pour les pages d’administration.

post-revisions

Voici le détail des nouveautés attendues :

  • Mise en cache des fichiers statiques avec Google Gears pour accélérer le chargement des pages d’administration,
  • Une boîte de dialogue nouvelle et améliorée pour la manipulation des images dans les articles offrant beaucoup de possibilités,
  • Un aperçu des thèmes à la WordPress.com,
  • L’affichage du nombre de mots dans l’éditeur,
  • La possibilité de désactiver la publication à distance pour la sécurité,
  • Utilisation de l’API XML-RPC pour changer les options du blog,
  • Un meilleur support du SSL pour l’administration,
  • Une vision hiérarchique dans la section “Gérer” des pages et des catégories,
  • La possibilité de déplacer le répertoire de votre contenu,
  • La possibilité de déplacer le fichier wp-config.php en dehors de la racine de vos pages Web,
  • Des galeries triables par drag-and-drop,
  • La personnalisation de l’avatar par défaut qui supporte désormais MonsterID, Wavatar et Identicon,
  • L’activation, la désactivation et la suppression des plugins par lot. Les plugins actifs et inactifs étant maintenant séparés,
  • Les sélections multiples dans les menus avec des cases à cocher en maintenant la touche Shift pour sélectionner un intervalle,
  • TinyMCE 3.1.0.1 avec de nombreuses corrections de bugs,
  • jQuery 1.2.6 avec des performances améliorées,
  • jQuery UI 1.5,
  • De nombreux bugs corrigés ainsi qu’une amélioration des performances.

avatar-options

Pour tester cette version sans provoquer trop de dommages sur votre blog, vous pouvez vous rendre sur cette page de démo avec l’utilisateur “admin” et le mot de passe “demo“.

Vous pouvez également jeter un coup d’oeil à Trac pour les tickets fermés et ceux encore ouverts et planifiés pour la version 2.6.

WordPress est souvent au coeur du débat en ce qui concerne ses performances.
En tant que lecteur, vous avez sûrement rencontré quelques pages affichant des erreurs 500 ou MySQL sur un blog WordPress.

En tant que blogueur, vous étiez enfin parvenu à obtenir un lien depuis Digg ou Presse Citron, et manque de chance, votre blog s’effondre à ce moment là.

Pire encore, vous êtes devenu un hardcore-blogueur et trustez depuis peu les classements Wikio et Google Trends, mais votre site affiche une page blanche une fois sur deux.

Alors que faire ? Vous pouvez toujours pester sur “le-code-dégueulasse-de-WordPress, DotClear-c’est-vachement-plus-propre-et-écolo” ou chercher une solution.
Ca tombe bien, il en existe un certain nombre.

wordpress

Premièrement, et avant d’aller plus loin, pas la peine d’espérer absorber un trafic “monstre” sur un hébergement mutualisé. Un moment ou à un autre, les problèmes vont arriver et vous ne pourrez que faire durer un peu le plaisir en optimisant votre blog. Mais puisque vous êtes gentils, on va tout de même en parler un peu.

Les systèmes de cache sur disque

Cache fichier simple

Vous ne le savez peut-être pas, mais WordPress intégrait un système de cache sur disque depuis sa version 2.0. Ce cache s’activait en ajoutant dans son fichier wp-config.php la ligne suivante :

define('ENABLE_CACHE', true); // Enable the WordPress Object Cache

Les performances de ce cache étant plutôt décevantes, il fut désactivé dans la version 2.1 de WordPress pour finalement être supprimé dans la version 2.5. Pas la peine de courir sur votre fichier wp-config.php donc.

Pour ceux désireux de retrouver cette option de cache sur disque, les petits gars de chez NeoSmart ont développé un plugin réintrégrant cette fonctionnalité.

L’avantage d’un tel système de cache est qu’il est compatible a priori sur tous les environnements : aucune extension particulière n’est nécessaire, ce qui en fait donc un candidat intéressant pour les hébergements mutualisés.

Pour le téléchargement, ça se passe ici. Décompressez ensuite le fichier et transférez le sur votre hébergement dans wp-content.
Ce qui donne directement depuis le serveur pour ceux ayant une connexion SSH :

cd /var/www/votresuperblog/wp-content
wget http://neosmart.net/downloads/software/WordPress/Plugins/object-cache/file-object-cache_1.0.zip
unzip -p file-object-cache_1.0.zip > object-cache.php.filebased

N’oubliez pas de donner les bons droits au fichier (à personnaliser évidemment) :

chown www-data:www-data object-cache.php.filebased

Puis, pour activer le cache, il suffira de faire :

cp -p object-cache.php.filebased object-cache.php

Le super cache : WP Super Cache

C’est le système de cache le plus connu pour les blogs sous WordPress.
Il est une amélioration du plugin WP-Cache 2 qui s’occupait déjà de créer des fichiers de cache des objets du blog.

WP Super Cache va plus loin : il crée pour chaque page appelée un fichier HTML (ou même html.gz) de la page. Vous aurez donc une copie complète de votre blog au format HTML sous wp-content/cache/supercache. Au niveau performances, elles seront excellentes puisque seul apache sera utilisé pour transférer les pages à vos visiteurs, et PHP/MySQL périodiquement pour rafraichir les pages.

Il existe même une fonction permettant de résister à la plupart des Digg Effect : le “Lock Down” qui permet de verrouiller les fichiers de cache et donc de ne pas les régénérer quand un nouveau commentaire est publié.

Pour utiliser WP Super cache, il faudra que votre hébergement supporte la réécriture d’URL via le fichier htaccess présent à la racine du blog. C’est un facteur qui peut être bloquant sur certains hébergements mutualisés.

Pour ceux en hébergement dédié, c’est le module rewrite qui est utilisé, et qui peut s’activer sous Apache 2 facilement avec un :

a2enmod rewrite

Vous devrez également utiliser une structure d’URL autre que celle par défaut (Réglages->Permaliens dans l’administration de WordPress).

Pour le reste, je vous laisse suivre la procédure d’installation.

Cache mémoire ou accélérateur PHP

Il existe plusieurs extensions WordPress permettant d’utiliser un système de cache mémoire ou certains accélérateurs PHP.

Ils nécessiteront tous une configuration particulière de PHP et/ou l’installation de binaires supplémentaires sur le système, ce qui en fait une solution réservée aux hébergement dédiés ou privés.

Dans tous les cas, l’installation sera la même : il suffira de copier un fichier object-cache.php dans wp-content.

XCache

XCache est un cache d’opcode, c’est à dire un cache permettant de stocker les fichiers générés par PHP juste avant leur exécution.
XCache est développé par le créateur de lighttpd (lighty), un serveur Web très performant utilisé par exemple par YouTube, Wikipedia et Mininova. Il est souvent utilisé pour distribuer le contenu statique (images, vidéos, CSS...).

Avant d’installer le plugin XCache pour WordPress, il vous faudra installer XCache pour PHP.
Si votre système ne date pas de la guerre (vous n’utilisez plus Firefox 1 n’est-ce pas ?), la commande suivante devrait faire l’affaire :

apt-get install php5-xcache

Il faudra ensuite légèrement modifier la configuration d’XCache dans /etc/php5/conf.d/xcache.ini en modifiant certaines variables comme ci-dessous :

; to disable: xcache.size=0
; to enable : xcache.size=64M etc (any size > 0) and your system mmap allows
xcache.size  =                64M
 
...
 
; same as aboves but for variable cache
xcache.var_size  =            16M

Les valeurs sont données à titre indicatif, elles doivent seulement être non nulles.

N’oubliez pas de rédémarrer apache :

/etc/init.d/apache2 restart

Pour vérifier le bon chargement d’XCache, il suffit de créer un fichier phpinfo.php avec le contenu :

<?php
phpinfo();
?>

En accédant à cette page via le navigateur, une section XCache devrait apparaître :

phpinfo-xcache

Il ne vous restera plus qu’à télécharger le plugin XCache pour WordPress disponible sur cette page.

Ou directement depuis votre serveur :

cd /var/www/votresuperblog/wp-content
wget http://neosmart.net/downloads/software/WordPress/Plugins/object-cache/xcache-object-cache_0.6.zip
unzip -p xcache-object-cache_0.6.zip > object-cache.php.xcache

On donne les bons droits au fichier :

chown www-data:www-data object-cache.php.xcache

Et une petite copie pour activer le cache :

cp -p object-cache.php.xcache object-cache.php

Pour surveiller le travail d’XCache, il faut paramétrer l’accès à la page d’administration. Pour cela, dans /etc/php5/conf.d/xcache.ini, paramétrez les variables “xcache.admin.user” et “xcache.admin.pass“.

Pour la variable xcache.admin.pass, il faut donner le md5 de votre mot de passe, vous pouvez l’obtenir en tapant :

echo -n "montmotdepasse" | md5sum

Modifiez ensuite la configuration d’apache en ajoutant la ligne :

Alias /xcache-admin/ /usr/share/xcache/admin/

(En supposant que les pages d’admin d’XCache se situent dans /usr/share/xcache/admin/. La commande “locate xcache” devrait vous aider à trouver le bon répertoire.)

Visitez la page /xcache-admin/ dans votre navigateur pour observer l’activité d’XCache :

xcache-122-administration

MemCached

MemCached est un système distribué de cache d’objets en mémoire. Vous pouvez donc très bien installer le système de cache mémoire sur une autre machine que celle hébergeant votre site, et même multiplier les machines de cache.
Pour information, Facebook utilise plus de 800 serveurs Memcache. Twitter les utilise massivement aussi.

Pour installer memcached, il faudra donc deux choses : le service en lui-même ainsi que les modules et librairies nécessaires. Ce qui donne :

apt-get install memcached php5-memcache
a2enmod mem_cache

Puis, rajouter à la fin de la configuration de PHP (/etc/php5/apache2/php.ini et/ou /etc/php5/cli/php.ini ) :

extension=memcache.so

Un petit démarrage de memcached et un redémarrage d’Apache et tout devrait fonctionner :

/etc/init.d/memcached start
/etc/init.d/apache2 restart

Pour vérifier tout ça, jetez un coup d’oeil à phpinfo comme au dessus qui devrait afficher une section memcache :

phpinfo-memcache

Il faut enfin installer le plugin memcached pour WordPress téléchargeable ici.
Soit en ligne de commande :

cd /var/www/votresuperblog/wp-content
wget http://dev.wp-plugins.org/browser/memcached/branches/1.0/memcached-client.php?format=raw -O memcached-client.php
wget http://dev.wp-plugins.org/browser/memcached/trunk/object-cache.php?format=raw -O object-cache.php.ryan

On donne les bons droits aux fichiers :

chown www-data:www-data memcached-client.php object-cache.php.ryan

Et une petite copie pour activer le cache :

cp -p object-cache.php.ryan object-cache.php

Et voilà!

MemCached + BatCache

BatCache est un nouveau venu dans le monde des plugins de cache WordPress. Son nom était “supercache” pendant le développement mais comme “Super” était déjà pris, il a fallu trouver autre chose à la sortie du plugin. Je vous laisse imaginer d’où vient le “Bat”...

Le plugin utilise MemCached en backend pour sauvegarder les pages qui sont accédées plus de X fois en Y secondes et les stocke pendant Z secondes. X, Y et Z sont bien sûr paramétrables.

Vous ne pourrez pas utiliser WP Super Cache et BatCache en même temps, à vous donc de choisir entre un cache mémoire et un cache sur disque comme WP Super Cache.

Le créateur du plugin BatCache prétend que son activation réduit de 40 fois le temps de génération des pages de WordPress.

L’installation est détaillée sur cette page, le plugin étant tout jeune, il évoluera certainement dans les mois qui viennent. A suivre donc.

APC

APC est un cache d’opcode au même titre qu’XCache.

L’installation est très proche de celle d’XCache, soit à peu de choses près :

apt-get install php-apc
echo '
extension=apc.so' >> /etc/php5/apache2/php.ini
/etc/init.d/apache2 restart

Le plugin WordPress APC doit lui être copié dans wp-content sous le nom object-cache.php.

eAccelerator

C’est exactement la même chose avec eAccelerator qui est encore un autre cache d’opcode.

Pour l’installation, je vous laisse chercher sur Google pour quelques documentations. C’est relativement simple et rapide.

Le plugin s’installe ensuite comme les autres :

cd /var/www/votresuperblog/wp-content
wget http://neosmart.net/downloads/software/WordPress/Plugins/object-cache/eaccelerator-object-cache_0.6.zip
unzip -p http://neosmart.net/downloads/software/WordPress/Plugins/object-cache/eaccelerator-object-cache_0.6.zip > object-cache.php.eaccelerator
chown www-data:www-data object-cache.php.eaccelerator
cp -p object-cache.php.eaccelerator object-cache.php

Quelle solution choisir ?

En termes de performances, les caches d’opcode se valent. Certains donnent tout de même à XCache une légère longueur d’avance.

Si vous avez déjà un système de cache tel qu’XCache, Memcache, APC ou eAccelerator installé sur votre hébergement, le plus simple est certainement d’utiliser le plugin WordPress correspondant.

Quant à WP Super Cache, il permettra d’éviter la plupart des traitements coûteux, allégeant largement le serveur. La charge répercutée sur les disques (I/O) sera souvent insignifiante vu les volumes échangés. Attention tout de même sur les hébergements mutualisés : vous ne pourrez pas monopoliser les ressources disques du serveur sans vous attirer des problèmes.

WP Super Cache est donc de loin la solution de cache la plus efficace pour un blog WordPress.

Seuls les problèmes d’installation ou les inconvénients de son activation peuvent être bloquants. On peut citer l’incompatibilité avec les plugins générant du contenu dynamique sur une page (par exemple en fonction du referer comme avec landing sites), ou les problèmes avec certains compteurs ou plugins de statistiques.

Je conseillerai personnellement l’utilisation combinée de WP Super Cache + XCache, les deux solutions étant compatibles. WP Super Cache pourra être activé en permanence ou au besoin.

N’hésitez pas à apporter vos retours quant à la solution qui pour vous paraît la plus efficace.

Allez plus loin ?

L’utilisation d’un plugin de cache n’est qu’un moyen parmi d’autres d’optimiser son blog WordPress. Si vous avez entièrement la main sur votre hébergement, optimiser Apache/PHP et MySQL est tout aussi important (et laborieux). Voici quelques pistes souvent évoquées dans ce cadre.

MySQL

Parfois controversée, le cache sur les requêtes SQL peut aider à réduire la charge sur votre base de données. Dans /etc/mysql/my.cnf :

#
# * Query Cache Configuration
#
query_cache_type        = 1

Pour alléger MySQL, la meilleure solution reste de réduire le nombre de plugins utilisés et surtout d’éviter ceux très gourmands pour la base : compteurs de visites, WP-Stats et autres plugins générant une ou plusieurs requêtes par visiteur. Il est préférable d’utiliser des équivalents externes en JavaScript : Google Analytics, WordPress.com Stats, etc. Autant alourdir les bases de Google ou de WordPress.com plutôt que la votre.

Apache

La configuration d’Apache est plutôt compliquée et dépend fortement de votre matériel.
Extrait d’un fichier /etc/apache2/apache2.conf :

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 30
 
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On
 
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100
 
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 8
 
##
## Server-Pool Size Regulation (MPM specific)
##
 
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       8
    MaxSpareServers      50
    MaxClients          250
    MaxRequestsPerChild   500
</IfModule>
 
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
    StartServers          15
    MaxClients          250
    MinSpareThreads      10
    MaxSpareThreads      100
    ThreadsPerChild      100
    MaxRequestsPerChild   1000
</IfModule>

A vous de tester et de rechercher la meilleure configuration pour votre machine. Les forums d’OVH ou de Dedibox ne manquent pas de discussions sur le sujet.

Si votre site est encore peu utilisé, vous pouvez faire quelques modifications puis les tester en utilisant Apache Bench :

apt-get install apache2-utils
ab -n 1000 -c 10 http://www.monserveur.com/mapagedetest.php

La variable “Requests per second” vous indiquera le nombre de requêtes auxquelles votre serveur pourra répondre chaque seconde (pour la page testée).

PHP

Pour PHP, pensez à désactiver certaines fonctionnalités parfois pénalisantes en terme de performances (et surtout très mauvaises pour la sécurité) :

register_globals = Off
register_long_arrays = Off
register_argc_argv = Off
 
 
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off

Vous pouvez également modifier les limitations en termes de ressources :

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
 
max_execution_time = 60     ; Maximum execution time of each script, in seconds
max_input_time = 30 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M      ; Maximum amount of memory a script may consume (128MB)
...
; Maximum allowed size for uploaded files.
upload_max_filesize = 6M

Voilà quelques pistes qui j’espère vous aiderons à optimiser votre blog et donc à économiser quelques euros pour votre hébergement. Maintenant la page blanche ne devrait plus venir de votre serveur mais seulement de vous, alors au boulot

L’interface d’administration de WordPress 2.5 (qui devrait sortir la semaine prochaine) ne plait pas forcément à tout le monde, tout comme l’ancienne interface de WordPress. Certains s’étaient habitués à l’utilisation de thèmes alternatifs comme WP Tiger. Seulement, celui-ci ne fonctionne plus avec la version 2.5 de WordPress, d’où l’arrivée du thème Fluency.

Le thème s’installe facilement (comme un plugin) et donne le résultat suivant :

Tableau de Bord :

Fluency Dashboard

Écrire un Article :

Fluency Ecrire

Plugins :

Fluency Plugins

Pas de doute, c’est plus sobre que l’original. Si le style vous plait, le téléchargement se passe ici :

Fluency Admin 1.0

Photo Dropper = WordPress + Flickr + Creative Commons

stats  lectures.

Photo Dropper est un plugin WordPress très intéressant, permettant d’enrichir facilement ses billets avec des photos de Flickr sous licence Creative Commons.

Lire la suite »

Si vous cherchez à optimiser votre blog sous WordPress pour les moteurs de recherche, le livre blanc “SEO for WordPress Blogs” peut être une ressource intéressante.

Lire la suite »

Plugins WordPress

stats  lectures.

On me pose souvent la question par mail des plugins WordPress que j’utilise sur le blog. Pour éviter d’avoir à répondre à chacun individuellement, et comme je suis un mec super sympa, voici la liste des plugins installés sur papygeek.com avec à chaque fois une petite description du plugin en français.

Lire la suite »

WordPress dans sa nouvelle version 2.3.2 permet de créer une page personnalisée en cas d’erreur de connexion à la base de données.
Pour cela, il suffit de créer un fichier db-error.php dans le dossier wp-content (wp-content/db-error.php).

Lire la suite »

RSS : flux complets ou flux tronqués ? Les deux!

stats  lectures.

C’est un débat qui revient continuellement dans la blogosphère : faut-il utiliser des flux RSS complets ou tronqués ? Les flux tronqués ont l’avantage de faire venir les abonnés RSS sur votre blog mais peuvent aussi en faire fuire certains.

Lire la suite »

Ext JS Wordpress Theme

stats  lectures.

Ext JS Wordpress Theme est un thème WordPress utilisant le framework Javascript ExtJS. Le résultat est plutôt convaincant et original pour un thème WordPress, Ajax étant mis à contribution notamment pour le chargement des entrées.

Lire la suite »

Apartés

  • Niko Bellic plus vrai que nature...

    niko-bellic

    - #
  • Le Googolopoly.

    googolopoly

    - #
  • Enfin un disque dur pour la Wii :

    wiihd

    - #
  • Web 1.0 versus Web 2.0...

    web-10-versus-web-20

    - #
  • Noël 2009, c'est le pouvoir d'achat!

    noel-2009

    - #