2012-05-12 17:01

Expérience prestashop

Intro

J'ai récemment mis en place prestashop pour la création du site e-commerce de ma copine et me suis décidé à vous présenter son installation, sa configuration, bref de partager l'expérience ;). Je vous invite également à visiter le site mis en place à l'adresse sweetcocon.com (surtout si vous êtes fan de décoration intérieure et de tables de saisons ^_^).

Préparation de l'environnement

Pour la suite de l'article j'admetterai que vous utilisez debian. Certains raccourcis seront effectués, vous veillerai notamment à vous assurer de la sécurité et l'usage de mots de passe complexes ;).

Commençons sans plus tarder par l'installation du serveur web et de la base de données:

aptitude install apache2 apache2-mpm-prefork mysql-server
Ainsi que de php et librairies php (certains sont optionnelles ;)
aptitude install php5 php5-mysql libapache2-mod-php5 php5-gd php5-mcrypt
Nous utiliserons également memcached pour optimiser le temps de réponse du site; pour rappel memcached est un système de cache.
aptitude install memcached php5-memcached
Notez qu'il existe une librairie "php5-memcache", celle-ci est plus ancienne et propose moins de fonctionnalités (ici ça ne changerait rien :p), je vous invite à lire l'échange à ce sujet sur stackoverflow si vous souhaitez en savoir plus.

Création du vhost et de la base de donnée

J'admettrai que vous déployez votre site dans le répertoire /var/www/prestashop

La création du vhost n'a rien de particuliers, je vous la livre brute de décoffrage:

<VirtualHost *:80>
        ServerAdmin admin@sweetcocon.com

        DirectoryIndex index.php
	ServerName sweetcocon.com

        DocumentRoot /var/www/prestashop

        <Directory />
                Options -FollowSymLinks -ExecCGI
                order deny,allow
                deny from all
                AllowOverride None
        </Directory>

        <Directory /var/www/prestashop/>
                Options -Indexes +FollowSymLinks -MultiViews -ExecCGI
                Order allow,deny
                allow from all
                AllowOverride All
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>>
Quant à la création de la base de données:
mysql> create database 'prestashop';
mysql> create user 'prestashop'@'localhost' identified by 'PASSWORD';
mysql> grant all on prestashop.* to 'prestashop'@'localhost';

Déploiement de prestashop

Récupérer l'archive sur le site de prestashop http://www.prestashop.com/fr/ et décompressez-la dans le répertoire de votre vhost et mettez les droits qui vont bien sur l'ensemble du contenu:

chown -R www-data. /var/www/prestashop
Puis rendez-vous sur la page d'installation de prestashop (http://votresite/install), acceptez le crontrat, vérifiez que tout est ok et vous devriez tomber sur la page de configuration de la base de données où vous aurez à saisir les identifiants mysql créés précédemment:
  • serveur: localhost
  • nom de la base de données: prestashop
  • identifiant de la base de données: prestashop
  • mot de passe de la base de données: PASSWORD
  • type de la base de données: je vous recommande myisam pour la facilité de sauvegarde
Une fois l'étape de la configuration passée, supprimez le répertoire install et renommez le répertoire admin en quelque chose d'un peu plus... secret ;).

Derniers éléments

Rendez-vous dans l'interface d'administration pour les derniers éléments. En page d'accueil vous devriez trouver un cadre avec les derniers éléments d'optimisation. Le premier d'entre est "l'url rewriting", nom quelque peu barbare pour façonner les url de manière à être plus "visibles" sur le net. Pour l'activer, cochez "Optimization" et "Friendly URL" puis cliquez sur "générer le fichier .htaccess" (le fichier htacess est le fichiers où l'url rewriting est "défini").

Arrive ensuite le "Combine, Compress & Cache", nous allons ici modifier 2 des différentes rubriques. Notez que la rubrique "Smarty" devrait déjà être correctement configurée, en phase de développement vous devriez forcer la recompilation et désactiver le cache. Nous allons commencer par modifier la section "CCC (Combine, Compress and Cache)" afin d'accélérer le temps de chargement des pages, pour cela, cochez:

  • Smart cache for CSS: Use CCC for CSS.
  • Smart cache for JavaScript: Use CCC for JavaScript.
  • Minify HTML: Minify HTML after "smarty compile" execution.
  • Compress inline JavaScript in HTML: Compress inline JavaScript in HTML after "smarty compile" execution
Puis validez. Dans la section "Caching", nous allons activer l'usage de memcached, pour cela cochez "Yes" et validez.

Bonus optimisations à destination des moteurs de recherches

Afin de gagnez en visibilité, ne négligez pas les éléments suivants:

  • Écrivez un fichier robots.txt à la racine de votre site pour faciliter le travail des moteurs de recherche
  • Mettez des méta informations dans vos entêtes html, vos catégories, vos articles et même vos images
  • Soyez clairs et précis dans vos descriptions
  • Faîtes parler de vous (de préférences sur des sites de grande audience ^_~)
  • etc... comme qui dirait, à compléter...

Conclusion?

Bon shopping, n'hésitez pas à visiter sweetcocon ;).


Posted by Marc MILLIEN | Permanent Link | Categories: internet

2012-03-10 19:53

Installation du SDK Tizen (béta) sous Debian Wheezy

Si vous souhaitez développer pour Tizen (et j'espère que vous le souhaitez :D), il faudra passer par l'installation du SDK sorti en version béta ce 28 février 2012. Si en plus vous êtes sous Debian Wheezy et puisque l'installeur est normalement pour Ubuntu, alors ce tutoriel est fait pour vous.

Commençons par jeter un oeil sur les recommandations pour faire tourner le SDK:

Ubuntu 10.04/10.10/11.04/11.10 32-bit, Windows XP SP3/7 32-bit (Mac version will be available soon)
At least dual-core 2 GHz CPU (recommend VTx supported by CPU)
At least 2 GB of RAM memory
At least 3 GB of free disk space
Local administrator authority
At least 1280x1024 screen resolution

En ce qui me concerne, je suis loin de cette config, mais l'info qui nous intéresse est que seul Ubuntu est supporté (du moins officiellement. Wheezy étant proche d'Ubuntu 11.10, nous nous ferons donc passer pour cette distribution.

Rentrons dans le vif du sujet avec l'installation des paquets qui nous fournirons les éléments de base:

apt-get install binutils-multiarch debhelper fakeroot realpath libsdl-gfx1.2-4 gettext procps xsltproc libdbus-1-3 liblua5.1-0 libexif12 libcurl3

Puis enchaînons avec l'installation de qemu qui nous permettra d'utiliser l'émulateur:

apt-get install qemu-kvm
Si comme moi vous n'avez pas les extensions processeurs, qemu fonctionne...

Il nous faut ensuite le java 6 (ou supérieur), personnellement j'ai installé le jdk (ça peut reservir):

apt-get install openjdk-6-jdk

Vous pouvez télécharger le SDK sur le site officiel de Tizen. Mais n'allez pas trop vite, si vous lancez l'installation maintenant vous aurez le droit à la belle erreur java ci-dessous (oui, je fais volontairement durer le plaisir):

cat: /etc/lsb-release: Aucun fichier ou dossier de ce type
=== Preparing to install ===
./tizen_sdk.bin: ligne 77 : [: 10.10 : opérateur unaire attendu
 Unpacking      .......  OK
 Checksumming   .......  OK
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NullPointerException
        at org.tizen.installmanager.ui.InstallManagerWindow.main(InstallManagerWindow.java:648)
        ... 5 more
 Installing     .......  OK
 Done.
============================

C'est à ce moment là qu'il faut se faire passer pour Ubuntu et mettre la chose suivante dans le fichier "/etc/lsb-release":

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric

Ça y est, vous pouvez vous lâcher (la doc est dispo dès le lancement du SDK ^^):

cd tizen_sdk/IDE && ./eclipse


Posted by Marc MILLIEN | Permanent Link | Categories: developpement

2012-02-29 19:25

svn+ssh

Vous souhaitez mettre en place un dépôt SVN accessible via ssh, voici la marche à suivre.

Commencez par installer ssh et subversion ce qui va de soi et je ne pense pas que vous ayez besoin de moi jusque là ^^.

Umask

Mettez l’umask de chacun des utilisateurs du dépôt à 002, ce qui donne dans le fichier .bashrc:

umask 002 # allow user + group to write, no other.

Créez un group svn et ajoutez-y vos utilisateurs.

mkdir -p /var/subversion/repositories

Restreignons l’accès au dépôt:

chown -R root.svnusers /var/subversion/repositories
chmod -R u+wrx,g+wrx,o-wxr /var/subversion/repositories

Cachons le répertoire où se trouve le dépôt, pour cela placez le script suivant en remplacement de svnserve ;) :

#!/bin/sh
# wrap in order to put root in by default
# Script implemented by Adrian Robert

exec /usr/local/bin/svnserve.bin -r /path/to/repository/root "$@"

Créons le dépôt :

svnadmin create /var/subversion/repositories/projet1

Et supprimons l’accès « autres »

chmod -R o-rwx /usr/share/subversion/repositories/project1

Et autorisons les accès autentifiés en écriture (fichier svnserve.conf) :

[general]
anon-access = none
auth-access = write

C’est parti

svn list svn+ssh://@localhost/project1

Si vous utilisez un port non standard vous pouvez ajouter à votre fichier .ssh/config la chose suivante :

host hostname
Hostname hostname
Port XXXX
ForwardAgent no
ForwardX11 no

Posted by Marc MILLIEN | Permanent Link | Categories: developpement

2012-02-26 22:41

Réduire l’impact disque d’un process: ionice

Prenons un cas concret:
Vous hébergez un serveur postfix, celui-ci génère énormément d’io disque, vous avez donc tout intérêt à ne pas en générer d’autres au risque de ralentir votre postfix.

Pour le plaisir, un deuxième cas concret:
Vous possédez un rps (vous vous reconnaissez :p?) les io sont fatals :p.

Or la commande ionice existe et peut s’avérer forte utile, sous réserve que l’ordonnanceur que vous utilisez soit compatible (cfq).

Vous pouvez le vérifier en faisant un cat de:

/sys/block/[sh]d[a-z]*/queue/scheduler
Qui devrait vous retourner:
noop anticipatory deadline [cfq]
noop anticipatory deadline [cfq]

Avec ionice affecter au process trois niveaux d’ordonnancement (je vous invite à faire un man ionice pour plus de détails):

idle (3) – prend la main si aucun autre process n’a utilisé la ressource après un certain temps
best effort(2) – comme son nom l’indique, l’ordonnancement se fait au mieux, ce mode a l’avantage de prendre un argument supplémentaire, pour définir une priorité, allant de 0 a 7, 7 étant la priorité la plus faible, 0 la priorité la plus haute.
real time (1) – temps reél

Ainsi, si vous souhaitez exécuter un script temp_reel.sh en temps reel, un second script be_plus_prioritaire.sh et un dernier be_moins_prioritaire.sh, vous pouvez utiliser les commandes suivantes:

ionice -c 1 /bin/temp_reel.sh
ionice -c 2 -n 6 /bin/be_plus_prioritaire.sh
ionice -c 2 -n 7 /bin/be_moins_prioritaire.sh

A essayer ;).


Posted by Marc MILLIEN | Permanent Link | Categories: systeme

2012-02-26 22:34

Désactiver l’auto indentation du code sous vim

Parce que l’indentation automatique de vim est parfois plus que gênante, pour la désactiver la commande est la suivante:
:setl noai nocin nosi inde=
Pour la version longue:
:setlocal noautoindent
:setlocal nocindent
:setlocal nosmartindent
:setlocal indentexpr=
Et pour les viusers++, mapper la désactivation sur la touche F8:
:nnoremap  :setl noai nocin nosi inde=
Pour indenter le code vous pouvez utiliser le raccourcis (merci Pierre ^^):
gg=G

Posted by Marc MILLIEN | Permanent Link | Categories: editeur

2012-02-26 22:30

Réparer un fichier avi

Marre de chercher cette commande, la voici pour mémo :p:
mencoder -idx input.avi -ovc copy -oac copy -o output.avi

Posted by Marc MILLIEN | Permanent Link | Categories: memo

2012-02-26 22:25

SDK androïd et problème de connexion au DeviceMonitor

Si comme moi vous obtenez ce type d’erreur avec adb:

E/DeviceMonitor: Connection attempts: 1
E/DeviceMonitor: Connection attempts: 1

C’est tout simplement parce qu’adb n’aime pas ipv6 :D . La solution consiste à forcer ipv4 en ajoutant le paramètre suivant à la JVM (dans le script shell ddms du répertoire tools, à noter que si vous utilisez eclipse vous devez également l’ajouter dans eclipse.ini):

-Djava.net.preferIPv4Stack=true

Posted by Marc MILLIEN | Permanent Link | Categories: android

2012-02-26 22:20

Partage de fichiers volumineux

Je viens de découvrir fex, vraiment pratique pour échanger des fichiers volumineux ;).

Posted by Marc MILLIEN | Permanent Link | Categories: internet

2012-02-26 18:54

Outils à installer avec son serveur

- fail2ban
- denyhosts
- logckeck
- logwatch
- chkrootkit
- rkhunter
- unhide
Enjoy !

Je complèterai l'article au fur et à mesure... Oui, je reconnais que balancer cette liste sans plus de détails c'est un peu limite :p.

Posted by Marc MILLIEN | Permanent Link | Categories: memo

2012-02-25 20:24

Passage du blog à nanoblogger

Ça y est, j'ai entrepris le passage du blog à nanoblogger.
Fini le sql, fini le php, vive la légéreté du html.

Promis, je réimporterai quelques-uns des articles qui avaient le plus de succès et vous reparlerai de mon expérience nanoblogger dans quelques jours ;).


Posted by Marc MILLIEN | Permanent Link | Categories: general