Nouveau serveur Kimsufi SSD pour un hébergement Nginx, PHP-fpm, Varnish et Memcached

Mes sites ont migré sur un nouveau serveur Kimsufi SSD de OVH et les performances sont bien sympathiques grâce à Nginx et Varnish.

Petite évolution du serveur hébergeant feub.net et plusieurs autres sites qui reste chez Kimsufi d’OVH mais en version SSH cette fois-ci. Cela me titillait depuis un moment car il faut bien l’avouer le SSD lorsqu’on en goûte on ne peut plus s’en passer, côté desktop mais coté serveur aussi. Mais il fallait bien avouer que le boulot de la migration me faisait renoncer, je n’avais pas trop envie de passer des heures devant un terminal lorsque je passe déjà mes journées au boulot devant des lignes de code. Après moult réflexion donc, maintenant c’est fait, un Kimsufi moins cher (9.99€/mois) que celui d’avant, avec un couple processeur/mémoires similaire, mais aussi 20% de moins d’espace disque, passant d’1Tb à 40Gb.

Je reste fidèle à Fedora, en passant à la version 23, et le serveur web d’enfer Nginx se voit désormais épaulé par l’accélérateur d’applications web Varnish que je commence à apprivoiser et Memchached pour la mise en cache d’objets PHP. Belle petite équipe qui ne demande qu’à être optimisée ^.^

Je ne vais pas m’attarder sur le détail de mes configurations, mais ce sera certainement l’objet de prochains billets sur ce blog. Pour le moment ça roule, peut-être y’a-t-il quelques couacs à droite à gauche, alors n’hésitez surtout pas à me faire part de tout problème ou anomalie.

Les packages que j’utilise avec l’éditeur Atom de GitHub

Liste régulièrement mise à jour des packages (paquets) que j’utilise avec l’éditeur de texte multiplate-forme Atom de GitHub.

J’ai longtemps utilisé le génial éditeur de texte Sublime Text, mais comme son développement semble vraiment prendre du retard, et comme il n’est pas gratuit, je me suis tourné vers le prometteur Atom. Tout comme avec Sublime Text, je liste dans ce billet les différents packages et thèmes que j’utilise au quotidien pour mes développements.

Packages

Project Manager

Si vous ne travaillez que sur un unique projet, Atom out-of-the-box est amplement suffisant, mais dès lors que vous maintenez plusieurs projets, il est clair qu’un gestionnaire de projets est un outil manquant. C’est ce que fait ce paquet, et il le fait plutôt bien.
https://atom.io/packages/project-manager



Minimap

Les habitués de Sublime Text connaissent cette petite bande sur la droite de l’éditeur représentant l’intégralité du fichier courant et qui permet de très rapidement naviguer / scroller dedans.
https://atom.io/packages/minimap

linter

Atom à la base est un éditeur texte, point, pour lui ajouter des fonctionnalités avancées, il faut utiliser des paquets (plugins) externes. Linter permet de surligner des erreurs de frappe et d’avoir des informations supplémentaires.
https://atom.io/packages/linter

linter PHP

Linter étant une API globale, il faut ajouter le langage à linteriser.
https://atom.io/packages/linter-php

Less Than-Slash

Un simple paquet mais sympa pour ceux qui aiment, il permet juste de fermer une balise dès que l’on frappe inférieur à et slash (</).
https://atom.io/packages/less-than-slash

Git-Plus

Pour les utilisateurs de GIT ce paquet est indispensable et bien fichu.
https://atom.io/packages/git-plus

file-icons

Ce paquet ajoute des (jolies) icônes aux noms de fichiers suivant leur type.
https://atom.io/packages/file-icons

open-recent

Encore un plugin bien sympa pour une fonctionnalité qui semble de base : avoir une liste des derniers fichiers récemment fermés afin de pouvoir les ré-ouvrir rapidement. Par défaut Atom permet de ré-ouvrir le dernier fichier seulement.
https://atom.io/packages/open-recent

color-picker

Comme son nom l’indique, en une rapide combinaison de touche, on peut choisir une couleur facilement.
https://atom.io/packages/color-picker

Highlight Line Package

Certainement le paquet le plus simple qui soit, en effet il surligne la ligne courante du curseur. Personnellement, un gros plus visuellement.
https://atom.io/packages/highlight-line

Todo Show Package

Découverte récente, ce paquet dresse la liste des TODO éparpillés dans les fichiers de votre projet.
https://atom.io/packages/todo-show



Thème

J’utilise le thème Monokai de kevinsawicki
https://atom.io/themes/monokai

Voilà les principaux packages qui me plaisent, faites-moi part des vôtres!

Création d’un module Magento de formulaire d’abonnement Mailjet

Cet article explique comment créer un module Magento de formulaire d’abonnement à une newsletter pour Mailjet.

Le module Feub Mailjetform dans l'interface d'admin de Magento
Le module Feub Mailjetform dans l’interface d’admin de Magento

Cette semaine j’ai du effectuer une migration (c’est un bien grand mot) de Mailchimp vers Mailjet, le leader européen en matière de service pour l’emailing marketing, principalement pour des raisons de coût, car il faut l’avouer, il n’y a pas photo avec Mailchimp qui est vite cher pour des petits/moyens volumes.

Bref, après la configuration du back office, une des choses les plus naturelles à faire est d’intégrer un formulaire d’abonnement, et bien qu’elle ne fut pas ma surprise de ne rien trouver du côté de Mailjet. Il existe bien un petit générateur de widget très minimaliste qui crée un bout de code iframe à insérer dans son code, un peu léger car pas moyen de personnaliser l’apparence du formulaire. L’autre solution, c’est de taper dans l’API et d’écrire son propre code.

J’ai donc cherché pas mal en ligne pour trouver un module pour Magento, en vain. Je me suis rabattu sur du PHP lambda à intégrer, un bout de code pour ajouter un banal formulaire de souscription à une newsletter Mailjet. Rien, même après plusieurs heures.

J’ai donc décidé que j’allais écrire mon propre module Magento en utilisant l’API de Mailjet.

Continue reading « Création d’un module Magento de formulaire d’abonnement Mailjet »

Ma configuration Nginx

Les pages de ce site sont désormais servies par Nginx depuis quelques semaines, et j’en suis totalement ravi. Au début il y a eu une période d’incertitude et de petite frayeur du au fait de basculer d’Apache que je maitrise relativement bien, vers une plateforme toute nouvelle avec d’autres habitudes à prendre, d’autres conventions, un style différent (mais pas tant que ça). D’ailleurs en parlant de petite frayeur, avant-hier les sites hébergés sur le Kimsufi ont été indisponibles durant environ 4 heures, j’ai bataillé et sué fort pour trouver mon erreur, ma foi comme souvent, un peu bête (*).

Ce billet fait un peu le point sur ma configuration actuelle de Nginx. J’ai essayé de la faire le plus modulaire possible en créant des blocs relatifs à certains environnements qui sont ou non inclus dans les server blocks (le nom des virtual hosts chez Nginx). Par exemple, j’ai un morceau de code pour les spécificités de WordPress, de Koken ou pour ajouter la gestion HTTPS (SSL).

Configuration

Avec Fedora, la configuration de Nginx se situe sous /etc/nginx, j’y ai créé 2 autres répertoires /etc/nginx/global et /etc/nginx/vhosts. Dans le premier je place tous les blocs de code possiblement redondants – ceux cités plus haut – et dans le second sont placés tous les server blocks, personnellement je crée un fichier par domaine, par exemple j’ai /etc/nginx/vhosts/feub.net.conf pour feub.net.
Le fichier lu par Nginx est /etc/nginx/nginx.conf, je ne l’ai pour ainsi dire pas touché, j’ai juste ajouté un include vers mon répertoire de vhosts, prenant en compte les fichiers se terminant par .conf uniquement :

include /etc/nginx/vhosts/*.conf;

Et voici un exemple de fichier de configuration pour le domaine feub.net :

server {
	listen          80;
	server_name     www.feub.net;
	
	rewrite ^(.*) 	http://feub.net$1 permanent;
}

server {
	listen          80;
	server_name     feub.net;

	root            /var/www/websites_root/feub.net/www/html;
	index           index.php index.html index.htm;

	access_log      /var/log/nginx/feub.net.access.log;
	error_log       /var/log/nginx/feub.net.error.log;

	location / {
		try_files 	$uri $uri/ /index.php?$args;
	}

	include global/php.conf;
	include global/wordpress.conf;
	include global/things_not_logged.conf;
}

Continue reading « Ma configuration Nginx »