Installer un site e-commerce PrestaShop sur Debian
PrestaShop est une solution d'e-commerce libre présentant de nombreux avantage. Ce projet est une référence dans le domaine de l'e-commerce. Ce guide vous aide à l'installer sur Debian.
Ce guide est testé sur:
- Debian 6.0 Squeeze
Ce guide est testé avec ces versions de Prestashop:
- 1.5.3
Pré-requis
Ce guide nécessite :
- un serveur MySQL, comme décrit par Installer et configurer MySQL sur Debian.
- un serveur HTTP avec support du PHP, comme décrit par Installer PHP-FPM sur Debian.
- le cache d'OpCode PHP APC, comme décrit par Installer l'extention PHP APC sur Debian.
- un serveur Memcached, comme décrit par Installer Memcached sur Debian.
- l'outil mysql-tools d'administration simplifiée de MySQL sur l'hôte local (et l'hôte du serveur MySQL, si différent).
Ce guide nécessite l'un des outils ci-dessous, suivant le serveur HTTP choisi:
- a2tools disponible dans Installer et configurer Apache 2 sur Debian.
Paramètres
Renseignez le nom de domaine où sera disponible l'application:
DOMAIN="shop.domaine.com"
Renseignez le nom d'hôte du serveur MySQL:
MYSQL_HOST="localhost"
Si le serveur MySQL n'est pas local, l'outil mysql-tools essaiera de s'y connecter avec le client MySQL, ou, en cas d'échec de connexion, via une connexion SSH.
Installation
Déterminez le chemin d'installation:
INSTALL_PATH="/var/lib/prestashop/${DOMAIN}"
Assurez-vous que le dossier parent existe:
PARENT_PATH="$(command dirname "${INSTALL_PATH}")"
command mkdir --parent "${PARENT_PATH}"
Préparation de l'environnement
Installez les logiciels nécessaires au bon fonctionnement de l'application :
command apt-get install php5-mysql php5-gd php5-mcrypt php5-memcached unzip apg
Rechargez la configuration PHP:
test -x /etc/init.d/php5-fpm && /etc/init.d/php5-fpm restart
test -x /etc/init.d/apache2 && /etc/init.d/apache2 force-reload
test -x /etc/init.d/lighttpd && /etc/init.d/lighttpd force-reload
test -x /etc/init.d/nginx && /etc/init.d/nginx force-reload
Mise en place de l'application
Récupérez l'URL de la dernière version de l'application :
SOURCE_URL=$(command wget --quiet --output-document=- \
"http://www.prestashop.com/fr/download_complete?do=prestashop_1.5" \
| command grep "_LAST_RELEASED_FILE_ =" \
| command sed -e "s|^.*_LAST_RELEASED_FILE_ = '\([^']*\)'.*|http://www.prestashop.com/ajax/controller.php?method=download\&type=releases\&file=\1\&language=en,fr|")
Téléchargez la dernière version de l'application :
command wget "${SOURCE_URL}" --output-document="/tmp/prestashop.zip"
Décompressez l'archive téléchargée :
command unzip -o "/tmp/prestashop.zip" -d "/tmp"
Déplacez le dossier créé vers son emplacement final :
command mv "/tmp/prestashop" "${INSTALL_PATH}"
Corrigez les permissions des fichiers :
command chown -R root:root "${INSTALL_PATH}"
command find "${INSTALL_PATH}" -type f -print0 \
| command xargs -0 -iFILE chmod ugo-x FILE
declare -a WEB_CONTENTS
WEB_CONTENTS[0]="config"
WEB_CONTENTS[1]="cache"
WEB_CONTENTS[2]="log"
WEB_CONTENTS[3]="img"
WEB_CONTENTS[4]="mails"
WEB_CONTENTS[5]="modules"
WEB_CONTENTS[6]="mails"
WEB_CONTENTS[7]="modules"
WEB_CONTENTS[8]="themes"
WEB_CONTENTS[9]="translations"
WEB_CONTENTS[10]="upload"
WEB_CONTENTS[11]="download"
for FILE in ${WEB_CONTENTS[@]}; do
if [ -e "${INSTALL_PATH}/${FILE}" ]; then
command chown -R www-data:www-data "${INSTALL_PATH}/${FILE}"
fi
done
Créez le fichier .htaccess et robots.txt :
command touch "${INSTALL_PATH}/.htaccess"
command chown www-data:www-data "${INSTALL_PATH}/.htaccess"
command touch "${INSTALL_PATH}/robots.txt"
command chown www-data:www-data "${INSTALL_PATH}/robots.txt"
command chown www-data:www-data "${INSTALL_PATH}/sitemap.xml"
Ajoutez les informations de géolocalisation:
command wget 'http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz' \
--output-document="${INSTALL_PATH}/tools/geoip/GeoLiteCity.dat.gz"
command gunzip "${INSTALL_PATH}/tools/geoip/GeoLiteCity.dat.gz"
command chown www-data:www-data "${INSTALL_PATH}/tools/geoip/GeoLiteCity.dat"
Configuration
Créez la base de données avec mysql-tools:
MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="prestashop" --create "${DOMAIN}")"
Récupérez les paramètres de la nouvelle base de données :
echo "${MYSQL_PARAMS}"
Mise en place de l'hôte virtuel
Créez la configuration du serveur HTTP pour votre domaine :
if [ -x "/usr/bin/a2tools" ]; then command a2enmod expires command a2tools --overrides=All "${DOMAIN}" "${INSTALL_PATH}" /etc/init.d/apache2 force-reload fi if [ -x "/usr/bin/lighty-tools" ]; then command lighty-tools add-vhost "${DOMAIN}" "${INSTALL_PATH}" fi
L'application devrait maintenant être disponible sur le nom de domaine que vous avez choisi.
Important : les commandes ci-dessus ne mettent pas en place un hôte HTTPS. Je vous conseille de les adapter afin que votre boutique ne soit visible que sur une connexion HTTPS.
Votre installation de PrestaShop devrait maintenant être disponible sur le nom de domaine que vous avez spécifié. Configurez l'application à l'aide du script d'installation. L'URL du site est affichée par:
echo "Veuillez configurer le site Prestashop:
http://${DOMAIN}/"
Note: améliorez la sécurité du logiciel en utilisant un préfixe des tables aléatoire (section "Configuration système"):
echo "Préfixe des tables recommandé: $(command apg -q -a 0 -n 1 -M NCL)_"
Sécurisation de l'installation
Attention: Configurez le site Internet avant de suivre le reste du guide.
Une fois l'installation terminée, améliorez la sécurité :
command chown -R root:root "${INSTALL_PATH}/config"
command chown www-data:www-data "${INSTALL_PATH}/config/settings.inc.php"
command chown www-data:www-data "${INSTALL_PATH}/config/xml"
command rm -r "${INSTALL_PATH}/install"
command mv "${INSTALL_PATH}/admin" "${INSTALL_PATH}/backend"
L'interface d'administration est disponible à l'adresse :
echo "http://${DOMAIN}/backend/"
Sauvegardes
Sauvegardez l'installation avec Backup Manager (voir Installer et configurer Backup Manager sur Debian):
command backup-manager-tools add "${INSTALL_PATH}"
N'oubliez pas de sauvegarder la base de données (voir Installer et configurer MySQL sur Debian).
Mise à jour
Renseignez le domaine de l'installation obsolète:
DOMAIN="shop.domaine.com"
Déterminez le chemin d'installation:
INSTALL_PATH="/var/lib/prestashop/${DOMAIN}"
Récupérez l'URL de la dernière version de l'application :
SOURCE_URL=$(command wget --quiet --output-document=- \
"http://www.prestashop.com/fr/download_complete?do=prestashop_1.5" \
| command grep "_LAST_RELEASED_FILE_ =" \
| command sed -e "s|^.*_LAST_RELEASED_FILE_ = '\([^']*\)'.*|http://www.prestashop.com/ajax/controller.php?method=download\&type=releases\&file=\1\&language=en,fr|")
Téléchargez la dernière version de l'application :
command wget "${SOURCE_URL}" --output-document="/tmp/prestashop.zip"
Décompressez l'archive téléchargée :
command unzip -o "/tmp/prestashop.zip" -d "/tmp"
Créez une sauvegarde de l'installation actuelle :
if [ -d "/var/lib/prestashop/${DOMAIN}.old" ]; then
command rm -r "${INSTALL_PATH}.old"
fi
command cp -a "${INSTALL_PATH}" "${INSTALL_PATH}.old"
Supprimez les logos par défaut de prestashop:
command rm "/tmp/prestashop/img/logo.jpg"
command rm "/tmp/prestashop/img/logo_stores.gif"
command rm "/tmp/prestashop/img/favicon.ico"
command rm "/tmp/prestashop/sitemap.xml"
Écrasez votre installation actuelle avec la nouvelle version :
command cp -r "/tmp/prestashop/"* "${INSTALL_PATH}"
command cp -r "${INSTALL_PATH}/admin/"* "${INSTALL_PATH}/backend/"
command rm -r "${INSTALL_PATH}/admin/"
Mettez à jour les permissions des fichiers :
command chown -R root:root "${INSTALL_PATH}"
command find "${INSTALL_PATH}" -type f -print0 \
| command xargs -0 -iFILE chmod ugo-x FILE
declare -a WEB_CONTENTS
WEB_CONTENTS[0]="config"
WEB_CONTENTS[1]="cache"
WEB_CONTENTS[2]="log"
WEB_CONTENTS[3]="img"
WEB_CONTENTS[4]="mails"
WEB_CONTENTS[5]="modules"
WEB_CONTENTS[6]="mails"
WEB_CONTENTS[7]="modules"
WEB_CONTENTS[8]="themes"
WEB_CONTENTS[9]="translations"
WEB_CONTENTS[10]="upload"
WEB_CONTENTS[11]="download"
for FILE in ${WEB_CONTENTS[@]}; do
if [ -e "${INSTALL_PATH}/${FILE}" ]; then
command chown -R www-data:www-data "${INSTALL_PATH}/${FILE}"
fi
done
Désactivez le cache pour que le processus de mise à jour se déroule correctement:
command sed -i -e "s/_PS_CACHE_ENABLED_.*/_PS_CACHE_ENABLED_', '0');/" \
"${INSTALL_PATH}/config/settings.inc.php"
Mettez à jour votre instance en vous connectant à l'interface d'installation via le lien :
echo "http://${DOMAIN}/install/upgrade/upgrade.php"
Une fois la mise à jour terminée, nettoyez les fichiers :
command chown -R root:root "${INSTALL_PATH}/config"
command chown www-data:www-data "${INSTALL_PATH}/config/settings.inc.php"
command chown www-data:www-data "${INSTALL_PATH}/config/xml"
command rm -r "${INSTALL_PATH}/install"
command rm -r "/tmp/prestashop"
command rm -r "/tmp/prestashop.zip"
Ré-activez le cache:
command sed -i -e "s/_PS_CACHE_ENABLED_.*/_PS_CACHE_ENABLED_', '1');/" \
"${INSTALL_PATH}/config/settings.inc.php"
Remerciements
- Merci aux développeurs de PrestaShop.