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-serverAinsi que de php et librairies php (certains sont optionnelles ;)
aptitude install php5 php5-mysql libapache2-mod-php5 php5-gd php5-mcryptNous 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-memcachedNotez 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/prestashopPuis 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
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
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 ;).
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-kvmSi 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
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
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/schedulerQui 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 ;).
2012-02-26 22:34
Désactiver l’auto indentation du code sous vim
: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:
:nnoremapPour indenter le code vous pouvez utiliser le raccourcis (merci Pierre ^^)::setl noai nocin nosi inde=
gg=G
2012-02-26 22:30
Réparer un fichier avi
mencoder -idx input.avi -ovc copy -oac copy -o output.avi
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
2012-02-26 22:20
Partage de fichiers volumineux
2012-02-26 18:54
Outils à installer avec son serveur
- 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.
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 ;).