Optimisation des exports de bases de données pour mise à jour d’environnement de développement

En tant que développeur il est souvent nécessaire de faire des dumps de base de données pour mettre à jour les environnements de développements ( qu’ils soient locaux ou sur le serveur ).
Cependant les tables de productions sont souvent très lourdes et comportent des données qui ne sont pas forcément nécessaire pour développer.

Voici un petit script qui va vous faire gagner du temps dans l’export / import de ces bases de données.
La logique est relativement simple .

Pour les tables dont les données ne sont pas importantes, on va exporter uniquement la structure.
Puis nous excluons ces tables de l’export global.

 #!/bin/bash
 
#Variables de la base de données
host="localhost"
user="root"
pass="root"
dbname="dbname"
 
#Stockage de ces tables à ignorer dans une variables ( separer les noms par un espace)
ignoreTables="table1 table2 "
 
#Dump de la structure de ces tables
echo "Export de la structure des tables ignorées"
mysqldump -d -h $host -u $user -p$pass $dbname $ignoreTables > backup-structure.sql
 
#Construction de la chaine d'exclusion
ignoreTablesString=""
for table in $ignoreTables
do
ignoreTablesString="$ignoreTablesString --ignore-table $dbname.$table "
done
 
#dump gzipé de la base sans ces tables
echo "Export des données de la bdd ( sans les tables à ignorer )"
mysqldump -h $host -u $user -p$pass $dbname $ignoreTablesString --single-transaction | gzip > backup-data.sql.gz

Il vous suffit ensuite d’importer les 2 fichiers.
Sur certaines bases de données magento ce script fait économiser des gigas de données 🙂

Pas de commentaires

Monitorer et optimiser son application web avec New Relic

A la suite de mon précédent article qui présentait uptime Robots, voici un outil très pratique dans la gestion de votre site web.

New Relic est un service hébergé en saas qui vous permets de monitorer votre application web.
Il est en revanche destiné uniquement aux possesseur de serveurs dédiés, et les droits root sont nécessaires pour installer les agents de monitoring. ( Je ne vous détaille pas l’installation , leurs documentations sont très complètes )

Mais de mon point de vue sa grande plus-value est la possibilité de suivre, et de déboguer votre code, en analysant l’ensemble des transactions effectués sur votre serveur.

Comme vous pouvez le voir sur la capture suivant, lors de l’affichage d’une page, l’ensemble des appels à la base de données sont listés, et le temps de chacun est affiché.

Ex transaction new relic

Ceci m’a déjà notamment permis d’identifier le code qui ralentissait l’application.

Je ferais sans doute des articles plus détaillés dans les prochaines semaines pour détailler l’utilisation de ce service 😉

Pour toutes les infos ça se passe par ici : https://newrelic.com/

Pas de commentaires

Suivez l’état de vos sites avec Uptime Robot

Voici un service très utile pour monitorer vos sites webs : uptime robots.
https://uptimerobot.com/

Celui-ci va tester toutes les 5 minutes que celui-ci répond bien , et vous envoie un email en cas de problème.
C’est basique mais très pratique ! :-), et gratuit !

Uptime robot
Pour ceux pour qui l’intervalle de 5 minutes est trop important il est possible de prendre des formules payantes.
Pour tout ceux qui n’ont pas de serveur dédié, c’est une solution hébergée très pratique.

Pour ceux qui ont un serveur dédié, j’avais fait un article sur nagios, qui permet de suivre plus finement : https://www.h-hennes.fr/blog/2015/08/04/monitorer-sites-mutualises-avec-nagios/

Pas de commentaires

Prestashop : Ne pas afficher la colonne de droite ou de gauche sur un controller

Un petit tip rapide si vous ne souhaitez pas afficher la colonne de gauche et/ou la colonne de droite dans un controller prestashop.

Pour cela rendez-vous dans la fonction initContent() du controller souhaité et ajoutez les lignes suivantes.

$this->display_column_left = false;
$this->display_column_right = false;

Les colonnes ne seront ainsi plus affichées 🙂

Attention je précise tout de même que pour les controllers du coeur de Prestashop faites cette modification via une surcharge et non directement dans les fichiers !

Pas de commentaires

Utiliser plusieurs version de php avec Apache

Un petit article pour présenter comment installer plusieurs versions de php en simultané sur votre serveur dédié.
Ceci peut notamment être utile si vous hébergez plusieurs sites sur votre serveur dédié et qu’ils n’ont pas les mêmes prérequis techniques.

En utilisant apache et php-fpm et c’est très facile et rapide à mettre en place.
Pour notre exemple je souhaite installer php 5.6 et php 7.0 en simultané.

#Pour commencer installer apache
apt-get install apache2 libapache2-mod-fastcgi
 
#Activativation des mode actions fastcgi et alias pour apache2
a2enmod actions fastcgi alias
 
#Ajouter le ppa Ondrej
add-apt-repository ppa:ondrej/php
 
#Update des packet
apt-get update
 
#Installer PHP 7 + extensions de base
apt-get install php7.0-fpm php7-xml php7-gd php7-mcrypt php7-mysql php7-pdo
 
#Installer PHP 5.6 + extensions de base
apt-get install php5.6-fpm php5.6-xml php5.6-gd php5.6-mcrypt php5.6-mysql php5.6-pdo

Partant du principe que la version par défaut sera php 7.0,
On va ensuite configurer phpfpm 5.6 pour une exécution à la demande en éditant son fichier de configuration

vim /etc/php/5.6/fpm/pool.d/www.conf

changer la ligne pm comme ceci :

pm = ondemand

La base est à présent installée, maintenant vous pouvez éditer vos fichiers de configuration de la manière suivante.

#Editer le fichier de configuration pour tester le fonctionnement
<VirtualHost *:80>
 
ServerName www.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/html
 
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
#PHP7 ( Actif )
<IfModule mod_fastcgi.c>
        AddHandler php7-fcgi .php
        Action php7-fcgi /php7-fcgi virtual
        Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
        FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization
</IfModule>
 
#Décommenter pour activer PHP 5.6
#<IfModule mod_fastcgi.c>
#AddHandler php5.6-fcgi .php
#Action php5.6-fcgi /php5.6-fcgi virtual
#Alias /php5.6-fcgi /usr/lib/cgi-bin/php5.6-fcgi
#FastCgiExternalServer /usr/lib/cgi-bin/php5.6-fcgi -socket /var/run/php/php5.6-fpm.sock -pass-header Authorization
#</IfModule>
 
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
 
</VirtualHost>

Vous pouvez ensuite en fonction de vos besoins spécifier la version de php à utiliser sur chacun de vos vhosts.

Redémarrer apache2 pour prendre en compte la configuration

service apache2 restart
1 commentaire

Magento : Sécuriser l’accès à l’administration

Les attaques sont de plus en plus nombreuses sur la plateforme magento, pour éviter les accès non autorisés à votre administration voici comment la sécuriser :

  • Changer le chemin par défaut de l’administration.

Dans le fichier app/etc/local.xml , définissez un nom d’administration personnalisé, par exemple mycustomadmin

 <routers>
 <adminhtml>
 <args>
 <frontName><![CDATA[mycustomadmin]]></frontName>
 </args>
 </adminhtml>
 </routers>
  • Restreindre l’accès à l’administration par adresse ip

Avec apache : rajouter la ligne suivante entre les balises

RewriteCond %{REMOTE_ADDR} !^xx.xx.xx.xx
RewriteRule ^(index.php/)?mycustomadmin/ - [L,R=403]

Avec nginx :

location ~ ^/mycustomadmin/ {
    allow xx.xx.xx.xx;
    deny all;
    try_files $uri $uri/ /index.php;
}
location ~ ^/index.php/?mycustomadmin/ {
    allow xx.xx.xx.xx;
    deny all;
    try_files $uri $uri/ /index.php;
}

Une fois ces restrictions en place, l’administration de votre site magento sera plus sécurisée 🙂

Pas de commentaires

6 ans pour le blog :-)

Un petit article non technique pour une fois pour signaler ce jour les 6 ans de ce blog 🙂
Conformément à mes prévisions de l’époque ( cf. article https://www.h-hennes.fr/blog/2010/11/04/bienvenue-sur-mon-blog/ ) les audiences n’ont pas été très importantes lors de mes débuts… mais au fil des années j’ai tout de même continué à écrire des articles qui intéressent un public de niche orienté développement web.
Essentiellement sur les plateformes Prestashop et Magento sur lesquelles je me suis spécialisé.

A ce jour vous êtes prêt de 60 000 personnes à avoir visité ce blog et consulté près de 100 000 pages pour les 214 articles que compte ce blog ^^ 🙂
Merci à tous ! Ceci a été l’occasion de nombreux échanges techniques !

Pour l’instant j’ai toujours la motivation pour écrire des articles et faire vivre ce blog, je croise donc les doigts pour que cela continue encore pour quelques années.

De nouveaux articles viendront dans les prochains temps, toujours sur Prestashop et Magento pour lesquels je vais également m’orienter vers les nouvelles versions majeures ( PS 1.7 et magento 2 )

 

Pas de commentaires

Magento : Gérer les balises meta Robots

Pour optimiser le référencement de votre site Magento, il sera sans doute nécessaire de jouer avec les balises meta robots.

Ceci vous permettra de choisir les pages qui devront être indexées et/ou suivies, ainsi que celles qui ne le seront pas.
La bonne nouvelle est que ceci est géré nativement dans magento, et que cela ne demande aucun développement.

Configuration générale

Dans la configuration de magento, il est possible de définir directement les balises qui seront appliquées à l’ensemble des pages.
Pour cela rendez-vous dans  » Système / Configuration / Design / Entête HTML  »
Vous pouvez ensuite configurer les meta robots à mettre en place par défaut :

Balise meta robots

( Il est possible de le configurer pour chaque boutique de votre site )

Le fonctionnement est le même pour un produit ou une catégorie : (cf. mon article précédent :
Magento : Empêcher l’indexation d’une catégorie ou d’un produit )

Changer la balise meta d’une page CMS

Si vous souhaitez passer une page cms en No-Index, c’est très facile, il vous suffit de copier le code suivant dans le champ « XML de mise à jour d’agencement » de l’onglet design, et puis d’enregistrer votre page.

<reference name="head">
 <action method="setRobots"><value>noindex, nofollow</value><name>robots</name></action>
</reference>

 

Changer la balise meta d’un controller particulier

Si vous souhaitez faire de même pour un controller particulier, ce ne sera pas possible de le faire directement dans l’administration. il est nécessaire d’utiliser les fichiers de layout de votre thème.
Par exemple si vous souhaitez passer le formulaire de contact en no index, vous pouvez rajouter les lignes suivantes dans le fichier local.xml de votre thème

<contacts_index_index>
<reference name="head">
 <action method="setRobots"><value>noindex, nofollow</value><name>robots</name></action>
</reference>
</contacts_index_index>
Pas de commentaires

Tester la sécurité de votre site magento avec MageReport

Les sites e-commerces basés sur des plateformes open-sources seront inévitablement soumis tôt ou tard à l’apparition de failles de sécurité. C’est pourquoi il est important de bien tenir son site à jour et d’appliquer dès que possible les patchs de sécurité.

Pour évaluer les risques de votre site e-commerce magento, il existe un outil très utile qui va analyser les failles potentielles de votre site.

Pour cela rendez-vous sur le site https://www.magereport.com/

Magereport

Celui-ci va détecter l’ensemble des failles les plus connues et vous donner les solutions pour les corriger.
Un site à bookmarker et à consulter régulièrement pour tous les possesseurs de boutiques magento ! 🙂

Pas de commentaires

Passer au https avec letsencrypt

Si il était conseillé auparavant l’utilisation du protocole https est maintenant une nécessité.
Ce paramètre est même pris en compte par google pour l’indexation de votre site.

Pour ceux qui font tourner une boutique de taille raisonnable et qui ne souhaitent pas de garantie étendue ( ou qui n’ont tout simplement pas le budget ), il existe une possibilité d’obtenir des certificats https gratuitement via letsencrypt : https://letsencrypt.org/

Le seul point à prendre en compte est que le certificat est valide pour une durée de 3 mois, il sera donc nécessaire de le renouveler régulièrement.

L’installation et la génération des certificats sont très rapide et pratique , nous allons voir comment procéder pour installer ces certificats sur notre serveur dédié avec Ubuntu 14.04

(Un accès root ou sudo est nécessaire )

#Telechargement du robot de certification
wget https://dl.eff.org/certbot-auto
#Mise à jour des droits
chmod a+x certbot-auto

Pour un serveur avec apache2

#Execution avec la configuration apache
$ sudo ./certbot-auto --apache

Vous pouvez ensuite choisir les domaines pour lesquels vous souhaitez un certicat https

Certbot choisir domaine

Il faut ensuite choisir si vous souhaitez que https soit obligatoire ou optionnel ( laisser en optionnel par défaut )

Certbot apache mode
Les certificats sont ensuite générés, il vous suffit de recharger la configuration d’apache et tout fonctionne 😉

sudo service apache2 reload

Pour renouveler votre certificat vous pouvez par exemple mettre une tache cron tous les lundi comme ceci

0 10 * * 1 ./path/to/certbot-auto renew --quiet --no-self-upgrade

Pour un serveur avec nginx :

Pour nginx , c’est un peu plus « compliqué » car il n’existe pas d’installation automatique.
Mais ça reste tout de même très accessible.

Pour commencer il faut générer les certifications

$ sudo ./certbot-auto certonly --webroot -w /var/www/example -d example.com -d www.example.com

L’option -w correspond à l’emplacement du site sur le serveur
L’option -d correspond aux noms de domaines qui y sont associés ( 1 ou plusieurs )

Les certificats sont ensuite générés dans l’emplacement /etc/letsencrypt/live/example.com/

Il vous suffit ensuite de les rajouter dans la configuration nginx ( et de rajouter l’ecoute sur le port 443 )

server {
        listen 80;
        listen 443 ssl;
 
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
 
        root /var/www/example;
 
      #Your configuration
       ...
}

Pour finir reloader la configuration nginx :

sudo service nginx reload

Vos sites seront ensuite accessibles via le protocole https 🙂

Pas de commentaires
Magento certified developper
Modules Prestashop
Compte Github