Passage au combo Nginx, Php-fpm, Mariadb pour mon site personnel

closeCet article a été publié il y a 6 ans 9 mois 24 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

L’été c’est souvent l’occasion de faire des travaux repoussés tout le restant de l’année. C’est le cas pour la machine virtuelle qui hébergeait ce site. Côté système d’exploitation j’étais encore en Debian 6 avec le traditionnel combo : Apache, PHP, MySQL. J’aurais pu me lancer dans une « simple » mise à jour de Debian. Elle aurait probablement était complexifiée par le fait que cette machine virtuelle héberge également la messagerie familiale ainsi que des logiciels comme StatusNet à la configuration pour le moins alambiqué.

Je suis donc parti sur du neuf avec une machine virtuelle vierge montée en Debian 7. Au passage je fais tourner tout cela sur un serveur dédié avec la solution de virtualisation Proxmox. Les machines virtuelles sont des containers OpenVZ.

Et tant qu’à faire autant changer un peu les fondements. Le passage d’Apache à Nginx, cela fait longtemps que je l’avais prévu pour ce site. Couplé à Php-fpm, le résultat est bien plus léger qu’Apache ou peut-être de ce que je suis capable de configurer avec Apache. J’utilise ce combo pour le site d’Open-DSI et de Solutions Informatique pour les  TPE depuis déjà pas mal de temps ainsi que des sites web d’autres personnes/associations que j’héberge ou dont je gère les sites (bénévolat quand tu nous tiens…).

Pour faire bonne mesure et me comporter en bon libriste que je ne suis pas, je me suis dit qu’il me fallait désormais abandonner MySQL. Me former sur PostgreSQL n’étant pas à l’ordre du jour, la solution évidente était de tenter le passage à MariaDB. On m’avait à plusieurs reprises vanté la simplicité de migration et la transparence d’utilisation par rapport à MySQL.

Pour Debian l’installation est on ne peut plus simple. Il suffit d’aller sur l’espace de téléchargement dédié aux dépôts et de suivre l’assistant qui se chargera de vous indiquer la marche à suivre. J’installe ensuite PhpMyadmin qui clairement n’y voit que du feu. Bref simple pour l’administrateur système bricoleur que je suis, pas de compilation ou autres manipulations exotiques. La suite de la migration se déroule de façon totalement transparente. Export côté Mysql et import côté MariaDB, pas le moindre souci, que du bonheur 🙂 .

Pour faire bonne mesure, j’ai installé PHP APC. Son installation est suffisamment simple et rapide par rapport au gain apporté. Un constat que j’ai pu faire récemment sur un serveur à bout de souffle écrasé par les processus d’Apache. Le simple ajout d’APC a permis de réduire de façon drastique la charge.

J’ai du coup également remplacé l’extension WP-Supercache que j’utilisais jusqu’à présent par W3 Total Cache. Il permet notamment d’utiliser les fonctions d’APC pour gérer le cache de WordPress.

Une rapide comparaison des charges des deux machines virtuelles montre un avantage net pour le combo Nginx/Php-fpm/MariaDB avec une réduction de 30% de la charge CPU et  une réduction de l’empreinte mémoire du même niveau.

Au-delà de ce site, c’est aussi l’instance de Piwik et mon site (provisoirement ?) fermé de micro-bloging qui ont été migrés sur cette nouvelle architecture. Reste le thème de ce site que j’aimerais changer, mais pour l’instant, retour aux affaires comme on dit 🙂  ! Si quelqu’un connaît un thème WordPress simple à mettre en œuvre permettant de conserver une page d’accueil similaire à l’actuelle (c’est à dire affichant les derniers articles par catégories) je suis preneur.

Philippe Scoffoni

Je barbote dans la mare informatique depuis 30 ans (premier ordinateur à 16 ans, un ORIC ATMOS) et je travaille à mon compte au travers de ma société Open-DSI. J'accompagne les associations, TPE et PME dans leurs choix et dans la mise en oeuvre se solutions informatiques libres.

11 réponses

  1. Grummfy dit :

    Hello,
    a noter que sur php 5.5 (et 5.4 en chipotant un peu) tu l’extension zend_opcache disponible pour mettre en cache l’opcode php et acceer drastiquement les process de celui-ci.

  2. Deimosfr dit :

    Il ne te manque plus que Varnish 🙂

  3. Philippe dit :

    Je l’attendais celui-là 🙂 . Varnish m’a toujours fait un peu peur en terme de configuration. Actuellement j’ai une vm avec proxy web (nginx toujours) devant la vm de mon site. Varnish pourrait venir remplacer nginx en tant que proxy web (plus sa fonction de cache) ?

  4. Greg dit :

    Bonjour,

    si tu as déjà Nginx, tu n’as pas besoin de Varnish et autres proxy. Nginx sait faire ça très bien lui-même (à configurer).

    Je vais peut être aussi passer de MySQL à MariaDB… et essayer deux trois trucs de ton article.

    A+

  5. Philippe dit :

    @Greg : un lien vers un tuto pour la fonction de cache de Nginx ?

  6. Guillaume dit :

    Bonjour,

    Je crois que @Greg voulait parler du cache FastCGI : https://www.guillaume-leduc.fr/gestion-caches-nginx-php-fpm.html

  7. Philippe dit :

    Merci Guillaume pour le lien. Je vais le mettre en place !

  8. Seboss666 dit :

    J’envisage de migrer aussi mon blog (entre autres) sur Nginx au lieu d’Apache (j’ai déjà opéré le changement de mod-php5 à php-fpm). Que faut-il faire pour gérer les différences (par exemple, au niveau de l’url_rewriting) ? Y’a-t-il quelque chose de particulier à installer pour éviter de fusiller les url (ou le reste d’ailleurs) ?

  9. Philippe dit :

    Ben pour les URL cela dépend de ton CMS et de la façon dont elles étaient gérées avant. En principe c’est transparent. Si tu avais de l’url rewriting avant, tu peux en avoir après. Reste à voir comment il était techniquement réalisé. Sous Apache c’est souvent via un .htaccess. Cela n’existe pas sous cette forme pour nginx, ce sont des directives au niveau des fichiers de configuration des sites. C’est cette traduction qui peut parfois être délicate. Pour un CMS comme wordpress, tu trouves facilement les directives pour la réécriture pour nginx.

  10. Seboss666 dit :

    C’est bien WordPress que j’utilise, d’où la question. Sinon oui le rewriting est activé par le .htaccess par défaut avec lui.

  11. Philippe dit :

    Pour WordPress si tu n’as pas bidouillé le rewriting, la migration est transparente vers nginx. Avec la doc tu dois pouvoir t’en sortir. http://codex.wordpress.org/Nginx
    Je t’envoi par mail ma conf 😉