Tester la qualité des emails envoyés par votre serveur

Voici un outil pratique pour tester la qualité des emails qui sont envoyés par votre serveur : https://www.mail-tester.com/

Mail tester

Cet outil teste les différents paramètres dont :

  • SPF
  • Sender ID
  • DKIM
  • Blacklists les + connues

Et il donne également les solutions pour corriger les différents problèmes de manière rapide.
Pour ma part je suis passé de 2.1 à 9 🙂

Pas de commentaires

Prestahop console : nouvelle version

Je viens de sortir la nouvelle version de mon module console pour prestashop 🙂

Celle-ci simplifie encore les choses puisqu’il suffit de télécharger un seul fichier phar à la racine de votre site pour bénéficier des fonctionnalités de la console 🙂
Pour rappel le précédent article : Console prestashop

Télécharger la console

wget https://github.com/nenes25/prestashop_console/raw/master/bin/prestashopConsole.phar

Ajouter les droits d’éxécution au fichier

chmod +x prestashopConsole.phar

Lancer la console

./prestashopConsole.phar
Pas de commentaires

Optimisez vos connaissances en serveurs dédiés avec AWS

Un petit post rapide pour parler de l’offre actuellement en cours chez Amazon Web Services ( AWS ) qui offre des ressources gratuites pendant un an.
L’offre est disponible pendant un an : https://aws.amazon.com/fr/free/

Ce n’est certes pas suffisant pour héberger gratuitement un site internet, mais en revanche c’est vraiment pratique si vous souhaitez parfaire vos connaissances en administration serveur, et mettre un pied dans le cloud.

Cette offre comprends entre autre un accès aux services suivants :

  • Amazon EC2
  • Amazon S3
  • Amazon RDS

J’ai souscris à cette offre il y’a quelques jours , j’essayerais de faire quelques retours si je rencontre des problématiques intéressantes.

Pas de commentaires

Alternative à wampserver : windows bash

La sortie de la mise à jour Anniversary pour windows 10 au début du mois d’aout, apporte une nouveauté majeure pour les développeur webs ( sous windows bien sur ^^), à savoir l’apparition d’un sous-système linux directement intégré dans windows.

Je ne vais pas vous détailler comment l’activer vous pouvez trouver comment faire cela sur google.

La distribution proposée est Ubuntu 14.04.

Pour pouvoir développer en local il est donc nécessaire d’installer le stack lamp (Apache/Mysql,Php) , les instructions sont donc exactement les mêmes que sur un ubuntu classique, je vous renvoie donc
vers mon article sur le sujet : Ubuntu Server 14.04 « Trusty Tahr » : Installation d’apache, php et mysql ( lamp)

L’unique point à retenir est que les partitions windows sont montées dans /mnt/x/votre-dossier ( ou x correspond à la lettre de votre disque dur)
Il faut donc faire pointer vos vhosts apache vers ces dossiers.

A noter également que j’ai voulu installer nginx sans succès, pour l’instant cela ne fonctionne pas.

Console :
La console windows, reste relativement basique, voici comment utiliser cmder plutôt.
Créer un type de console « Bash windows » avec le script de démarrage suivant « cmd /k bash »

 

Questions performances alors ?

Pour l’instant je développais essentiellement dans des machines virtuelles vagrant, basées  sur l’image scotchbox

On va donc comparer les temps de chargement sur les plateformes e-commerce Prestashop et Magento
( Si quelqu’un à l’occasion de comparer avec wampserver, n’hésitez pas à donner vos impressions )

Comparaison Vagrant scotchbox (V) Vs lamp windows bash(W) :

Prestashop : ( version 1.6.1.6 cache désactive, rafraichissement des templates modifiés uniquement)

  • homepage
    V 4.05s / W 2.74s
  • categorie « Femmes »
    V 5.16s / W 2.62
  • fiche produit
    V 3.45s / W : 1.67s

Magento : (version 1.9.2.4 tous les caches désactivés)

  • homepage
    V 7.05s/ W 3.15s
  • catégorie standard avec 5 produits
    V 5.06s / W 4.04s
  • fiche produit :
    V 5.84s / W 3.51s

Verdict :
Je suis relativement satisfait de cette solution pour mes développements locaux, et je pense remplacer l’utilisation des vms vagrant par ce stack.
Les temps de chargements sont légèrement plus rapides qu’avec une machine virtuelle.
Pour l’instant je n’ai pas encore fait face à des problèmes bloquants ou a des cas particuliers, mais il y en aura surement.

Je vous ferais certainement des retours plus complets d’ici quelques mois après une utilisation plus intensive.

Pas de commentaires

Serveur dédiés : Créer un disque réseau via un tunnel ssh

Nous allons voir ensemble comment mettre en place un disque dur réseau sur votre serveur dédié.
C’est à dire monter un dossier d’un serveur distant (SD) , vers notre serveur de travail (ST)
Ceci peut être pratique si vous souhaitez partager facilement des informations entre plusieurs serveurs, ou pour ajouter facilement de l’espace de stockage sur des serveur VPS.

Au préalable pour faciliter les échanges il sera nécessaire de mettre en place un accès via une clé ssh du serveur de travail vers le serveur, ceci évitera la saisie de mots de passe.

Pour rappel vous pouvez générer la clé via la commande suivante

ssh-keygen -t rsa -b 4096 -C "Cle disque reseau"

Insérez ensuite le contenu de votre clé publique dans le fichier authorized_keys sur le SD.

Installer sshfs ensuite sur le serveur sur lequel vous souhaitez monter le disque reseau

sudo apt-get install sshfs

Puis créer le dossier de votre point de montage , nous l’appellerons ici « share »

sudo mkdir /mnt/share

Puis créer le point de montage :

sudo sshfs -o allow_other,,IdentityFile=~/.ssh/id_rsa user@xxx.xxx.xxx.xxx:/ /mnt/share

Et voila votre disque réseau est en place ( jusqu’au prochain redémarrage)

Si vous souhaitez arrêter le partage réseau il faut saisir la commande suivante :

 

Monter le disque de manière permanente

Si vous souhaitez ajouter ce montage de manière permanente, il faut éditer le fichier /etc/fstab et rajouter la ligne suivante :

[email protected]:/ /mnt/share

Le changement sera pris en compte lors du prochain redémarrage de votre serveur.

Pas de commentaires

Sortie de mantis bugtracker 1.3 : Mise à jour de mes plugins

La version 1.3.0 de mantis bugtracker est sortie depuis le 9 juillet dernier.

Cette version apporte de nombreux changements, dont certains impactent les plugins développés comme :

  • L’intégration native de Jquery et de Jquery Ui
  • Le passage au html 5
  • Nouvelle politique des Content-Security-Policy (CSP) qui interdit l’utilisation de css ou de javascript inline
  • Interdiction de l’appel des pages php des plugins via leur url directe

Pour l’occasion j’ai donc remis à jour l’ensemble de mes plugins mantis avec les nouveaux prérequis.

Voici la liste exhaustive :

Upload File :
Permets de rajouter plusieurs pièces jointes à la fois à un bug en drag & drop
https://github.com/nenes25/mantisbt_uploadfiles

Agenda :
Affichage des dates d’échéances, et du temps passé sur les bugs dans un calendrier.
https://github.com/nenes25/mantisbt_agenda

Email File :
Ajout de pièces jointes à un bug via l’envoi d’un email
https://github.com/nenes25/mantisbt_EmailFile

Reminder :
Envoi d’un email récapitulatif à chaque développeur avec les bug à traiter les X prochains jours
https://github.com/nenes25/mantisbt_reminder

AutoChange Status :
Changement automatique du statut d’un bug après X jours.
https://github.com/nenes25/mantisbt_autochangestatus

Multiple File Download :
Possibilité de télécharger toutes les pièces jointes d’un bug dans une archive en un clic
https://github.com/nenes25/mantisbt_MultipleFileDownload

AutoSuggest :
Suggestion automatique des utilisateurs ou des bugs mantis dans les relations
https://github.com/nenes25/mantisbt_autosuggest

 

Pas de commentaires

Optimisation des performances Magento : configuration des sessions et du cache

Afin d’optimiser les performances de notre site magento, nous allons mettre en place les optimisations suivantes :

  • stockage des sessions dans memcache
  • stockage du cache dans redis

Cette solution  est modulable et applicable à une configuration multi-serveurs.( En centralisant les sessions sur un serveur spécifique, dans ce cas il suffit de replacer l’ip 127.0.0.1, par l’ip du serveur )

Pour commencer il faut installer les services memcached et redis sur votre serveur si ce n’est pas déjà fait

sudo apt-get install redis-server
sudo apt-get install memcached

installer également les librairies memcache pour php

sudo apt-get install php5-memcached php5-memcache

vous pouvez ensuite configurer le fichier local.xml avec les informations suivantes :

Pour la gestion des sessions dans memcache :

<!-- Stockage des sessions dans memcache -->
<session_save><![CDATA[memcache]]></session_save>
<session_save_path><![CDATA[tcp://127.0.0.1:11211?persistent=1&weight=2&timeout=10&retry_interval=10]]></session_save_path>

Les avantages du stockage dans memcache des sessions sont les suivants :

  • accès très rapide aux informations car stockées dans la mémoire vive
  • partage des sessions facile entre plusieurs serveurs

Puis pour la gestion du cache dans Redis :

<!-- Stockage du cache dans redis -->
<cache>
<backend>Mage_Cache_Backend_Redis</backend>
<backend_options>
<server>127.0.0.1</server>              <!-- or absolute path to unix socket or ip -->
<port>6379</port>
<persistent></persistent>               <!-- Specify a unique string like "cache-db0" to enable persistent connections. -->
<database>0</database>
<password></password>
<force_standalone>0</force_standalone>  <!-- 0 for phpredis, 1 for standalone PHP -->
<connect_retries>1</connect_retries>    <!-- Reduces errors due to random connection failures -->
<read_timeout>10</read_timeout>         <!-- Set read timeout duration -->
<automatic_cleaning_factor>0</automatic_cleaning_factor> <!-- Disabled by default -->
<compress_data>1</compress_data>        <!-- 0-9 for compression level, recommended: 0 or 1 -->
<compress_tags>1</compress_tags>        <!-- 0-9 for compression level, recommended: 0 or 1 -->
<compress_threshold>20480</compress_threshold>  <!-- Strings below this size will not be compressed -->
<compression_lib>gzip</compression_lib> <!-- Supports gzip, lzf and snappy -->
</backend_options>
</cache>

Redis vous permets également de gagner en performances par rapport à un stockage standard du cache dans les fichiers.

Une fois ces solutions en place, votre instance de magento devrait tourner plus rapidement 🙂

Pas de commentaires

EicmsLinks : nouvelles fonctionnalités.

Une nouvelle version de mon module prestashop « EicmsLinks » est disponible.
Pour rappel ce module rajoute des liens dynamiques dans l’éditeur de texte tinyMce pour les contenus cms ( pages cms, descriptions produits, descriptions catégories)

  • pages cms
  • catégories
  • produit ( lien produit, ou ajout au panier)

Pour la description complète vous pouvez lire la page suivante : http://www.h-hennes.fr/blog/prestashop-liens-dynamiques-dans-lediteur-tinymce/

Cette nouvelle version instaure une nouvelle notion de « widgets » qui peuvent également être inséré directement dans la page cms.

Pour l’instant les widgets implémentés sont les suivants :

formulaire de login : permets d’afficher le formulaire de login dans n’importe quelle page cms

Widget login

liste de produits : permets d’afficher une liste de produits dynamique

Widget produits

Plusieurs options sont disponibles pour ce widget :
-type (new|category|price_drop) : Type de produits à afficher
-nb_products : nombre de produits à afficher
-id_category : dans le cas d’un affichage de produit d’une catégorie, identifiant prestashop de la catégorie.

L’ajout de cette fonctionnalité a été réalisée de manière à pouvoir rajouter très facilement des nouveaux widgets.
Nous allons voir ensemble comment procéder.

1) Exemple minimal : sans variables spécifiques

Pour commencer il faut créer une nouvelle classe WidgetName.php dans le dossier « classes » avec le contenu suivant

class WidgetName extends Widget{
 
//Nom du fichier template à utiliser pour l'affichage ( à créer dans view/widgets)
public $template = 'template.tpl';
 
//Fonction nécessaire uniquement si vous souhaitez assigner des variables smarty
/**
* Préparation du contenu
*/
public function initContent() {
parent::initContent();
 
$this->context->smarty->assign('test_var','contenu de ma var de test');
}
}

Créer ensuite votre fichier de template ( view/widgets/template.tpl)

<p>Affichage de mon widget de test</p>
<p>{$test_var}</p>

Votre widget est ensuite bien listé, et lors de son insertion votre contenu est intégré 🙂

2) Exemple plus complet : Utilisation de variables

Les widgets permettent également de définir des variables personnalisées.
Celle-ci doivent être intégrée manuellement dans le code.

Voici quelques exemples pour le widget des produits :

{{widget name="WidgetProducts" nb_products="8" bad_attribute="test"}}
{{widget name="WidgetProducts" nb_products="3" type="price_drop"}}
{{widget name="WidgetProducts" nb_products="6" type="category" id_category="8"}}

Dans le code voici comment gérer ces options,( en partant du meme exemple que précédement)

class WidgetName extends Widget{
 
//Listes des paramètres autorisés pour votre widget, les options non autorisées ne seront pas traitées.
protected static $_allowed_params = array('option1','option2');
 
//Nom du fichier template à utiliser pour l'affichage ( à créer dans view/widgets)
public $template = 'template.tpl';
 
//Fonction nécessaire uniquement si vous souhaitez assigner des variables smarty
/**
* Préparation du contenu
*/
public function initContent() {
parent::initContent();
 
//Les options du widget sont automatiquement disponibles dans la variable de classe $_datas;
//Vous pouvez faire tous les traitements souhaités
if ( $this->_datas['option1']){
//Faire traitement spécifique
}
 
$this->context->smarty->assign('test_var','contenu de ma var de test');
}
}

Voici comment appeller ce widget :

{{widget name="WidgetName" option1="maVar" option2="test"}}
{{widget name="WidgetName" option1="maVar" option2="test" option3="test"}} <!-- Dans ce cas option3 ne sera pas traitée car pas authorisée -->

Le module est toujours dispo sur github : https://github.com/nenes25/prestashop_eicmslinks

Pas de commentaires

Autoriser un utilisateur à redémarrer apache ou nginx

Dans le cadre de l’hébergement de sites web, il peut être intéressant de donner la possibilité à l’utilisateur de recharger la configuration ou de redémarrer le serveur web.
Ceci lui permets d’être autonome dans l’ajout ou le changement de ses noms de domaines.

La procédure est relativement simple, voici comment procéder avec Ubuntu pour autoriser par exemple l’utilisateur herve a éxécuter ces commandes.

Connectez vous en root et exécuter la commande suivante :

visudo

Dans le fichier édité rajouter la ligne suivante :

Pour apache :

herve ALL=(ALL) /usr/sbin/service apache2 reload,/usr/sbin/service apache2 restart

Pour nginx :

herve ALL=(ALL) /usr/sbin/service nginx reload,/usr/sbin/service nginx restart

Votre user peut à présent exécuter ces commandes directement depuis son compte sous la forme :

sudo service apache2 restart

Les autres commandes restent bien inaccessibles à l’utilisateur :

Sorry, user test is not allowed to execute '/bin/su'
Pas de commentaires

Créer des utilisateurs virtuels avec proftpd

Si vous hébergez plusieurs sites sur votre serveur, il peut être utile de créer des utilisateurs ftp spécifiques pour chacun d’entre eux.
Ces utilisateurs ne nécessitent pas d’avoir un compte user linux sur le serveur, nous allons donc utiliser la fonctionnalité de création d’user virtuel de proftdp.
( Tout en conservant l’authentification des users linux standard) avec ubuntu 14.04

Pour commencer il faut éditer le fichier /etc/proftdp/proftdp.conf

Rechercher la ligne Authorder et saisir les informations suivantes :

Authorder mod_auth_file.c mod_auth_unix.c #Connexion via fichier utilisateur et utilisateurs linux
AuthUserFile /etc/proftpd/ftpd.passwd #Nom du fichier des mots de passe

Nous allons ensuite créer ce fichier ftpd.passwd et lui mettre les droits adéquats

sudo touch /etc/proftdp/ftpd.passwd
sudo chmod 440 /etc/proftdp/ftpd.passwd
sudo chown proftdp:root /etc/proftdp/ftpd.passwd

Redémarer ensuite proftdp pour vérifier que tout est bon

sudo service proftdp restart

Voici ensuite comment créer un nouvel utilisateur

Dans mon cas pour des raisons de droits je souhaites qu’il appartienne au groupe www-data (apache)
Pour récupérer son id il faut saisir la commande suivante

id www-data

qui renvoie un resulat du type :

uid=33(www-data) gid=33(www-data) groupes=33(www-data)

L’identifiant du groupe www-data est donc 33

Voici la commande pour créer un compte :

sudo ftpasswd --passwd --name=webmaster --uid=33 --gid=33 --home=/var/www/my-website/ --shell=/bin/sh

Le mot de passe du compte vous sera ensuite demandé.

Vous pouvez maintenant créer tous les utilisateurs nécessaires en répétant cette commande 🙂

Pas de commentaires
Modules Prestashop
Compte Github