Créer un Serveur Web hautes performances pour Prestashop

1/52/53/54/55/5 (7 votes, moyenne: 4,43 sur 5)
Loading...
C

Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.


prestashop

Bonjour à tous,

 

Suite à la demande de Xavier je vais aujourd’hui vous montrer comment monter un serveur web hautes performances pour Prestashop 🙂

 

Choisir son hébergeur :

Avant tout, il est nécessaire de choisir un très bon hébergeur pour votre serveur.

 

Oubliez tout de suite les hébergeurs low-cost et les hébergements mutualisés. Seuls les serveurs dédiés et les VPS haut de gamme pourront tenir une boutique Prestashop dans des périodes de grande affluence comme Noël.

 

Pour une nouvelle boutique, qui ne recevra que peut de visites au début je vous conseille les VPS cloud d’OVH. Dans un premier temps, ces vps vous permettront d’avoir une bonne puissance de feu à prix correct et en plus vous pourrez faire évoluer la puissance de votre VPS avec la croissance des visiteurs sur votre boutique.

En plus l’option de backup automatisée peut-être intéressante si vous ne voulez pas mettre en place un « vrai » serveur de backup.

 

Pour des e-commerces avec plus de volonté, ou encore pour des boutiques physiques qui veulent étendre leurs activités un dédié sera un très bon choix.

 

Les gammes START de chez Online ou SoYouStart de chez OVH correspondent parfaitement aux besoins que vous allez avoir.

Enfin, si votre boutique commence à recevoir des dizaines de milliers de visiteurs par mois alors un dédié très haut de gamme de chez OVH sera surement nécessaire pour la poursuite de vos activités.

 

Au passage dans cette procédure la boutique sera entièrement protégée par un certificat SSL (en https donc). Ça coûte plus cher, mais ça rapporte aussi plus de confiance auprès des clients et donc plus de ventes 😉

 

Lorsque vous commandez votre serveur installez le toujours avec un Debian 7 64 bits 🙂

 

Les composants de notre serveur :

  • Debian 7  x64 ( Système d’exploitation )
  • Apache mpm worker 2.x ( Serveur Apache en version multi-thread )
  • MariaDB 10.x ( Serveur de base de données )
  • Php5-fpm 5.5.x ( pour traiter les requêtes php avec apache )
  • Apache Page Speed ( module de concaténation et de mise en cache pour apache )
  • Nginx 1.6.x ( Reverse Proxy pour apache )

 

Installation des sources :

On va commencer par éditer la liste des sources pour le gestionnaire de paquets APT :

rm /etc/apt/sources.list
nano /etc/apt/sources.list

 

Copiez les sources suivantes dans le fichier  :

deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all
deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all
deb http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.0/debian wheezy main
deb-src http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.0/debian wheezy main
deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
# wheezy-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free

 

Lancez maintenant une mise à jour et installez les utilitaires htop et python-software-properties en même temps :

apt-get update && apt-get upgrade && apt-get install htop python-software-properties

 

J’aime bien installer l’utilitaire htop car je le trouve plus explicite que l’utilitaire top nativement intégré, voici la comparaison en images :

TOP
TOP
HTOP
HTOP

 

 

Maintenant on va ajouter les clés de nos repository personnalisés :

cd /tmp
wget http://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.0/debian wheezy main'

 

Pour finir, mettez à jour vos listes avec cette commande une fois de plus :

apt-get update

 

 

Installation des composants du serveur :

On va d’abord installer MariaDB, RKHunter, Binutils, clamAv et 2-3 accessoires :

apt-get install mariadb-server openssl rkhunter binutils clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

 

Ensuite, on va installer Apache2 en mode Worker (multi-threadé), PHP5-FPM, FCGI, suExec, Pear, et mcrypt :

apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-worker libapache2-mod-fastcgi php5-fpm apache2-utils libexpat1 ssl-cert php5 php5-common php5-gd php5-mysql php5-imap php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby libapache2-mod-ruby libapache2-mod-python php5-curl php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

 

On va maintenant déclarer quelques modules à apache :

a2enmod actions alias fastcgi && a2enmod fcgid && a2ensite default-ssl && a2enmod suexec rewrite ssl actions include && a2enmod dav_fs dav auth_digest && service apache2 restart

 

Ensuite, installez Pureftpd, bind9 et fail2ban :

apt-get install pure-ftpd-common pure-ftpd-mysql bind9 dnsutils fail2ban

 

Et pour finir, on installe Jailkit :

apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.15.tar.gz
tar xvfz jailkit-2.15.tar.gz
cd jailkit-2.15
./debian/rules binary

 

Vous pouvez maintenant installer le package .deb comme ceci :

cd ..
dpkg -i jailkit_2.15-1_*.deb
rm -rf jailkit-2.15*

 

Configuration des composants :

Si vous voulez un accès externe aux bases de données MariaDB, vous devez modifier le fichier de configuration de MariaDB :

nano /etc/mysql/my.cnf

 

Recherchez l’option bind-address à la ligne 47 et commentez la :

Avant :

bind-address            = 127.0.0.1

Après :

#bind-address            = 127.0.0.1

 

Sauvegardez en effectuant la combinaison de touches Ctrl+O et redémarrez MariaDB:

service mysql restart

 

Maintenant, téléchargez mon fichier de configuration pour php-fpm :

cd /etc/apache2/conf.d
wget https://raw.githubusercontent.com/stylersnico/debian-scripts/master/php5-fpm.conf

 

Redémarrez les services associés :

service apache2 restart && service php5-fpm restart

 

Maintenant, on va modifier la configuration de notre serveur FTP :

nano /etc/default/pure-ftpd-common

 

Vérifiez que le démarrage soit en STANDALONE et que virtualchroot soit sur TRUE

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

On va maintenant autoriser les sessions par TLS pour plus de sécurité

echo 1 > /etc/pure-ftpd/conf/TLS
mkdir -p /etc/ssl/private/

 

On va maintenant générer un certificat SSL dans le dossier que l’on vient de créer :

openssl req -x509 -nodes -days 7300 -newkey rsa:4096 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

 

Changez les permissions du certificat

chmod 600 /etc/ssl/private/pure-ftpd.pem

 

Redémarrez le serveur FTP :

/etc/init.d/pure-ftpd-mysql restart

 

Pour que Fail2Ban surveille notre serveur FTP nous allons devoir créer un fichier de configuration spécifique :

nano /etc/fail2ban/jail.local

 

Remplissez le avec ceci :

[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3

 

On va maintenant créer un filtre :

nano /etc/fail2ban/filter.d/pureftpd.conf

 

Et le remplir avec cela :

[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =

 

On va maintenant configurer Apache PageSpeed :

 

cd /tmp/
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
dpkg -i mod-pagespeed-*.deb
apt-get -f install

 

Maintenant, redémarrez votre serveur pour qu’il soit propre avant l’installation d’ISP Config 3 :

reboot

 

Installation d’Isp Config 3 :

Pour avoir la dernière version stable, faites ces commandes :

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

 

lancez maintenant cette commande

php -q install.php

 

Suivez les instructions de l’installateur, mais lorsqu’il vous laissera le choix entre l’installation standard et expert, choisissez expert

Select language (en,de) [en]:
Installation mode (standard,expert) [standard]: expert

 

Lorsqu’il vous demandera pour la configuration des mails, il faudra lui répondre non, car nous n’avons pas installé postfix.

Configure Mail (y,n) [Y]: n

 

Vous pouvez laisser tous les autres paramètres par défaut

 

Votre webpanel sera ensuite accessible à cette adresse : https://[VOTREIP]:8080/

Les identifiants par défaut sont : admin/admin

créer-un-serveur-web-debian-7-x25

 

 N’oubliez pas de changer le mot de passe Administrateur après la 1ère connexion !

Configuration d’un nom de domaine :

Sur l’accueil, cliquez sur DNS :

01

 

Ensuite, cliquez sur le bouton Add new Dns Zone with Wizard :

02

 

Rentrer toutes les informations pour votre nom de domaine. Les champs NS correspondent aux serveurs de nom de votre domaine.

03

Création d’un site :

Maintenant, allez dans Sites et créez un nouveau site Web :

04

 

Ensuite sur la configuration de votre site choisissez PHP-FPM dans PHP.

05

Puis allez dans options et choisissez le proccess manager Ondemand.

Pour finir, réglez les options max_children, process timeout et max_requests comme ci-dessous :

06

Vous pouvez mettre des valeurs plus élevées.

 

Création d’une base de données :

Maintenant allez dans Datebase User et créez un utilisateur de base de données :07

 

Ensuite, allez dans Databases et créer une nouvelle base en donnant les droits à l’utilisateur que vous venez de créer :

08

Création d’un accès FTP :

 

Allez dans Ftp et créez un nouvel utilisateur FTP en le liant à votre site :09

 

Vous pouvez commencer à envoyer Prestashop sur votre FTP directement dans le dossier web en ayant supprimer tous les fichiers présents avant.

Installation du reverse Proxy Nginx :

On va commencer par installer Nginx et le module rpaf pour apache :

 apt-get install libapache2-mod-rpaf nginx

 

 

Création du CSR et commande du certificat SSL :

Si vous ne voulez pas de certificat pour votre boutique vous pouvez jeter un œil à la fin de cet article 😉

Pour l’exemple j’utilise un certificat Positive SSL de Comodo sur Namecheap, mais n’hésitez pas à prendre un certificat avec de meilleurs garanties.

Ensuite, placez vous dans le dossier de Nginx :

cd /etc/nginx

 

Maintenant créez un dossier SSL et placez vous dedans :

mkdir ssl && cd ssl

 

On vas partir du principe que votre domaine s’appelle exemple.com.

Créez une clé avec la commande suivante, on va vous demander un mot de passe :

openssl genrsa -des3 -out exemple.com.key 2048

Maintenant lancez la commande suivante et rentrez le mot de passe que vous avez mis à l’étape précédente :

openssl rsa -in exemple.com.key -out exemple.com.key.nopass

 

Maintenant, créez le CSR et attention, remplissez bien les champs !

Le plus important c’est le CN (Common Name) qui doit correspondre à votre nom de domaine et ne mettez pas de Challenge Password !

openssl req -new -key exemple.com.key.nopass -out exemple.com.csr

 

Maintenant rendez-vous sur Namecheap et activez votre certificat. Dans le server type choissisez Apache/OpenSSL.

Lorsqu’on vous demandera votre CSR copiez bien tout le contenu de votre csr, les section begin et end comprises, exemple :

-----BEGIN CERTIFICATE REQUEST-----
 MIICoDCCAYgCAQAwWzELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
 ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEUMBIGA1UEAwwLZXhl
 bXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUhoWwIYgl
 M8eyxXQlhZvUJMMCg05YWsQIPXvyeO3RaJ2TvP/SQKZ0iOnMHmGHmz0sZfD5DvnJ
 sR7GdZp4eJYLpyupUu/0bFx5LqRn8des5OklKSzM57Z/UAYRlR+4VB6MrWHUN1D3
 VVrHc4DPAIRdAycf+t9NGclCSo+F2kr4I0rmEPe7SuWYGvb+kLBHVwdZwqQL6Cf0
 GCyiq/xglfH3aIy9V4cV1mSEaLMhyWQ9Qnq0QrKW7Yp9hZID+9JHHP5qqoCr4Tu+
 t4XWCJALFaOZClKuP1oZhufq41ASM9rzUNHw4M0keSfFzYWO1ks9TAQD6uvXcFj5
 AbbmaZQmfU6ZAgMBAAGgADANBgkqhkiG9w0BAQUFAAOCAQEAfMiXJ9hrF6aJu4p3
 ET+hFoeqQcYcbWrzBo0uNshrdb4RmhHS3e4IPU0l6M6/mhW5cuJrk02eW7+fENx3
 pD+/dWjjKI0MSxlSij5fLSeFxreCKYjPd7GaCzt/LaSJBLy7Abx73q35s38hZoMz
 o5L/SIjrjkIUOmHzqvbB6WWEM9uuUBXQ2jpSdyyPB36zOP8yj7+VkMzMsBR3cETJ
 IHbGj5SaF9i2rTgV0SxOZXvJ8Yl4tMarXmuqFxASMOQ3lUV4Xm07Qb0F1Kb4lB/c
 pFIIAe/7LAWfk1ycmwPAtQCd8Kf2zFhb5tp2UCsd1uMOMkI/NrK46uexdtcGGjMu
 f2gawg==
 -----END CERTIFICATE REQUEST-----

 

Ensuite vous allez recevoir un mail de comodo semblable à celui-ci contenant 4 fichier dans une archive zip, envoyez les dans votre dossier ssl :

observium-https-ssl

 

Une fois que tous les fichiers sont dans votre dossier SSL, lancez la commande suivante :

cat exemple_com.crt AddTrustExternalCARoot.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt  > exemple.com.crt

 

 Configuration du Reverse Proxy Nginx :

Maintenant on active rpaf et on redémarre apache :

a2enmod rpaf && service apache2 restart

 

Maintenant, regardez la configuration de rpaf et si cette ligne n’est pas présente, rajoutez la :

nano /etc/apache2/mods-available/rpaf.conf
RPAFproxy_ips 127.0.0.1 ::1

 

Maintenant on va modifier les ports d’écoute du serveur Apache :

nano /etc/apache2/ports.conf

 

Remplacez :

#NameVirtualHost *:80
Listen 127.0.0.1:80
#NameVirtualHost *:443
Listen 127.0.0.1:443

 

Par :

NameVirtualHost *:82
Listen 127.0.0.1:82
NameVirtualHost *:444
Listen 127.0.0.1:444

 

Et on va modifier tous les virtualhost existants :

sed -ie 's/*:80/*:82/g' /etc/apache2/sites-available/*.vhost
sed -ie 's/*:443/*:444/g' /etc/apache2/sites-available/*.vhost

 

Maintenant, on va créer le fichier de configuration pour notre reverse proxy nginx :

rm /etc/nginx/conf.d/default
cd /etc/nginx/sites-enabled
rm *
nano web1.conf

 

Remplissez le avec ceci :

server {
 listen 443 ssl default;
 listen [::]:443 ssl default ipv6only=on;
 server_name exemple.com;
 server_name_in_redirect on;
 resolver 127.0.0.1;
 access_log off;
#SSL
 ssl_certificate /etc/nginx/ssl/exemple.com.crt;
 ssl_certificate_key /etc/nginx/ssl/exemple.com.key.nopass;
 ssl_session_cache shared:SSL:10m;
 ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
location ~* \.(jpg|jpeg|gif|png|ico|css|css|bmp|js)$ {
 root /var/www/$host/web;
 access_log off;
 expires 360d;
 set $memcached_key "$uri?$args";
 memcached_pass 127.0.0.1:11211;
 error_page 404 502 504 = @fallback;
 proxy_buffers 16 16k;
 proxy_buffer_size 32k;
 fastcgi_buffer_size 32k;
 fastcgi_buffers 16 12k;
 proxy_pass http://127.0.0.1:82;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
location / {
 root /var/www/$host/web;
 index index.html index.htm index.php;
 access_log off;
 set $memcached_key "$uri?$args";
 memcached_pass 127.0.0.1:11211;
 error_page 404 502 504 = @fallback;
 proxy_buffers 16 16k;
 proxy_buffer_size 32k;
 fastcgi_buffer_size 32k;
 fastcgi_buffers 16 12k;
 proxy_pass http://127.0.0.1:82;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
 listen 80 default_server;
 listen [::]:80 default_server ipv6only=on;
 server_name exemple.com;
 return 301 https://$host$request_uri;
}

 

Fine Tuning :

Si vous en êtes arriver là c’est déjà pas mal, maintenant on va modifier les configurations de Nginx  pour améliorer les performances :

nano /etc/nginx/nginx.conf

 

Et remplacez le chiffre de la ligne worker_processes par le nombre de cœurs de votre processeur, par exemple pour un 2 cœurs :

worker_processes 2;

 

Rajoutez aussi cette ligne dans les balises http, vous pouvez mettre une valeur plus élevée :

client_max_body_size 20m;

 

Maintenant, redémarrez Nginx :

service nginx restart

 

Maintenant on va modifier la configuration de php-fpm :

nano /etc/php5/fpm/php.ini

 

Recherchez les lignes upload_max_filesize et post_max_size et mettez les valeurs suivantes ou des valeurs plus hautes encore :

upload_max_filesize = 100M
post_max_size = 100M

 

Maintenant on va modifier la configuration d’Apache PageSpeed :

nano /etc/apache2/mods-available/pagespeed.conf

 

Cherchez les ligne suivante et dé-commentez les pour interdire la retouche des images par Apache PageSpeed, c’est long et inutile :

ModPagespeedDisableFilters rewrite_images
ModPagespeedForbidFilters rewrite_images

 

Par contre, on peut activer la minification des fichiers javascript et CSS en dé-commentant les lignes suivantes :

 ModPagespeedEnableFilters rewrite_javascript,rewrite_css
 ModPagespeedEnableFilters collapse_whitespace,elide_attributes

 

Et on demande à préserver les urls avec en dé-commentant les lignes suivantes :

 ModPagespeedJsPreserveURLs on
 ModPagespeedImagePreserveURLs on
 ModPagespeedCssPreserveURLs on

 

Vous pouvez aussi modifier l’header qui renvoie par défaut la version de pagespeed en rajoutant cette ligne dans la configuration :

ModPagespeedXHeaderValue "Hidden"

 

Maintenant redémarrez apache :

service apache2 restart

 

Sécuriser le serveur :

Il n’y a pas de secrets, mettez des mots de passe fort partout !

En plus de ça, voici 2-3 astuces pour sécuriser votre serveur.

On va commencer par utiliser l’assistance de sécurisation de MariaDB avec la commande suivante :

mysql_secure_installation

 

Ensuite, vous pouvez regarder cet article pour blinder votre accès SSH !

Pour le reste je vous laisse jeter un oeil au liens utiles 😉

 

Intégration de Memcached :

Pour finir en beauté, on va lier tous les services web de notre serveur à Memcached pour des performances maximales !

Pour cela, je vous laisse consulter mon article sur l’installation de Memcached, il y a tout ce dont vous avez besoin 😉

Cacher les versions d’apache, php et Nginx :

Pour cacher la version d’Apache, ouvrez votre fichier de configuration :

nano /etc/apache2/apache2.conf

 

Et rajoutez ces 2 lignes à la fin :

ServerTokens ProductOnly
ServerSignature Off

 

Maintenant, redémarrez Apache :

service apache2 restart

 

Pour php, ouvrez votre php.ini :

nano /etc/php5/fpm/php.ini

 

Recherchez la variable suivante et mettez la sur off :

expose_php = Off

 

Redémarrez php :

service php5-fpm restart

 

Pour nginx, ouvrez votre fichier de configuration de nginx :

nano /etc/nginx/nginx.conf

 

Dé-commentez la ligne suivante ou si elle n’est pas présente, ajoutez la :

server_tokens off;

 

Redémarrez Nginx :

service nginx restart

 

Maintenant les versions logicielles de votre serveur ne seront plus accessibles au monde 😉

root@xxx:/# curl -I http://www.abyssproject.net
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 20 Aug 2014 08:14:43 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Pingback: http://www.abyssproject.net/xmlrpc.php
Link: <http://wp.me/P2RtI7-sB>; rel=shortlink
X-Mod-Pagespeed: Web Server By Nicolas Simond <http://www.nicolas-simond.com>
Vary: Accept-Encoding
Cache-Control: max-age=0, no-cache

 

Bonus :

Si vous ne voulez pas d’une boutique en https vous pouvez utiliser cette configuration pour Nginx :

server {
 listen 80 default;
 listen [::]:80 default ipv6only=on;
 server_name exemple.com;
 server_name_in_redirect on;
 resolver 127.0.0.1;
 access_log off;
location ~* \.(jpg|jpeg|gif|png|ico|css|css|bmp|js)$ {
 root /var/www/$host/web;
 access_log off;
 expires 360d;
 set $memcached_key "$uri?$args";
 memcached_pass 127.0.0.1:11211;
 error_page 404 502 504 = @fallback;
 proxy_buffers 16 16k;
 proxy_buffer_size 32k;
 fastcgi_buffer_size 32k;
 fastcgi_buffers 16 12k;
 proxy_pass http://127.0.0.1:82;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
location / {
 root /var/www/$host/web;
 index index.html index.htm index.php;
 access_log off;
 set $memcached_key "$uri?$args";
 memcached_pass 127.0.0.1:11211;
 error_page 404 502 504 = @fallback;
 proxy_buffers 16 16k;
 proxy_buffer_size 32k;
 fastcgi_buffer_size 32k;
 fastcgi_buffers 16 12k;
 proxy_pass http://127.0.0.1:82;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Et voilà, j’ai enfin fait ce tutoriel complet pour créer un Serveur Web hautes performances pour Prestashop de A à Z, j’espère qu’il vous plaît ! N’hésitez pas à me payer une bière si ça vous a été utile ou à laisser un commentaire 🙂

N’oubliez pas ! Redémarrez votre serveur à la fin de l’installation pour partir sur quelque chose de propre 😉

 

A propos de l'auteur

Nicolas Simond

Ingénieur Systèmes et Réseaux et guitariste hard rock et metal à mes heures perdues.
Je suis le créateur et l'unique rédacteur d'Abyss Project, c'est ici que je note la plupart de mes procédures et quelques divagations.

Si vous l'article vous a aidé, pensez à me payer un café :)

Subscribe
Notify of
guest

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

43 Commentaires
Plus récents
Plus anciens Populaires
Inline Feedbacks
View all comments
Kzoo
Kzoo
7 années plus tôt

Bonjour,

Le tuto est super intéressant, mais serait-il possible de le mettre à jour sur une debian 8 ?
En tout cas, je découvre ce site fortement intéressant. Merci de ce partage de connaissance.

Manuel
Manuel
8 années plus tôt

Bonjour,

En voulant créer un nouveau domaine sur ce serveur, il est automatiquement redirigé en https. C’est très chiant et je n’ai pas trouvé comment désactiver cette redirection automatique.

Comment faire pour qu’il ne le soit pas, tout en conservant l’ancien en https ?

Sinon si je le met en https est-ce possible d’avoir 2 certificats sur la même ip de serveur ? Car si je le fait, il me prend le certificat du premier domaine.

Merci pour ton aide.

Cordialement
Manu

lienard
lienard
8 années plus tôt

Bonjour,

Lors de l’installation d’ISP3 j’ai ce message d’erreur :

Unable to connect to the specified MySQL server Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2 « No such file or directory »)

Comment faire ?

Merci

lienard
lienard
Reply to  lienard
8 années plus tôt

Bonjour,

Je n’arrive pas à activer le SSL…
Prestashop me renvoi un 404 not found… 🙁

Manu
Manu
8 années plus tôt

Bonjour,

Tout d’abord merci pour ce tuto.

J’ai bien suivi la configuration mais je me retrouve avec un problème d’erreur 403 quand je veux faire des tests.

J’ai vu plusieurs post sur une histoire de permissions pour nginx mais rien y fait.

Une idée ? Je suis bloqué et j’ai besoin que ça fonctionne au plus vite.

Merci par avance !

Manu
Manu
Reply to  Manu
8 années plus tôt

Bon, impossible de faire marcher apache et nginx en même temps, il y a un problème de port 80 déjà utilisé , mais je ne vois pas où car les virtualhosts sont bien configurés. Pouvez vous m’aider ? Merci

Manu
Manu
Reply to  Manu
8 années plus tôt

Merci Nicolas pour ta réactivité, j’avais tout bien fait sauf que j’avais oublié de supprimer cette partie dans ports.conf : # If you add NameVirtualHost *:443 here, you will also have to change # the VirtualHost statement in /etc/apache2/sites-available/default-ssl # to # Server Name Indication for SSL named virtual hosts is currently not # supported by MSIE on Windows XP. Listen 443 Listen 443 Ensuite, j’ai été confronté à un autre problème de boucle de redirection avec prestashop en https (tout en ssl pour valider correctement le protocole dans le navigateur). C’est autre chose, mais pour ceux que ça intéressent… Voir plus »

Manu
Manu
Reply to  Manu
8 années plus tôt

Génial, merci, après c’était quand même très clair. Ce qui serait super, c’est aussi de mettre des infos sur la façon de tuner au mieux suivant les besoins en détaillant un peu à quoi servent certains paramètres.

Sébastien
Sébastien
8 années plus tôt

Bonjour apres avoir créér le source list et en lancant la commande suivante j’ai les erreurs suivantes vous pouvez m’aider?

W: Failed to fetch http://packages.dotdeb.org/dists/wheezy/Release Unable to find expected entry ‘all/binary-armhf/Packages’ in Release file (Wrong sources.list entry or malformed file)

W: Failed to fetch http://packages.dotdeb.org/dists/wheezy-php55/Release Unable to find expected entry ‘all/binary-armhf/Packages’ in Release file (Wrong sources.list entry or malformed file)

W: Failed to fetch http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.0/debian/dists/wheezy/Release Unable to find expected entry ‘main/binary-armhf/Packages’ in Release file (Wrong sources.list entry or malformed file)

E: Some index files failed to download. They have been ignored, or old ones used instead.

seb
seb
8 années plus tôt

bonjour j’ai laissé un message hier mais il n’apparait pas? je fais cette comme pour tester 🙂

iHack
8 années plus tôt

Hello, je viens de suivre ton article à la lettre (j’ai voulu me débarrasser de plesk) et maintenant, je me retrouve avec un bon p’tit server.
Les performances sont nettement meilleures qu’avant et tout à fonctionné du premier coup.
Donc merci beaucoup, ca m’a évité de prendre un coup de chaud 😀

Bladi
Bladi
8 années plus tôt

Bonjour,

Bon, j’arrive enfin a vouloir ce que je veux 🙂 J’ai installé memcached, mais cela demande Memcached (vous devez installer l’extension Memcache PECL) Et là, je n’arrive pas 🙁

Un dernière aide s’il vous plait ?

merci

Blad
Blad
8 années plus tôt

Bonjour,

Après pas mal d’essais j’arrive toujours a une erreur :
ERR_TOO_MANY_REDIRECTS

J’ai migré prestashop, et si je désactive SSL dans la config elle ne se réactive pas. je dois la forcer sur mysql.

Je patauge la 🙁 vous auriez-une idée?

Dans Seo j’ai mis dans les deux: http://www.monsite.fr
et le chemin /

Merci d’avance

Moi
Moi
Reply to  Blad
8 années plus tôt

Résolu :
dans nginx.conf
remplacer
include /etc/nginx/sites-enabled/*;
par
include /etc/nginx/sites-enabled/web1.conf;
et relancer nginx

Daspremont Terence
Daspremont Terence
8 années plus tôt

Bonjour,

Envisageable sur debian 8?

cordialement 🙂

Daspremont Terence
Daspremont Terence
Reply to  Daspremont Terence
8 années plus tôt

Apriori ça bug ici : apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-worker libapache2-mod-fastcgi php5-fpm apache2-utils libexpat1 ssl-cert php5 php5-common php5-gd php5-mysql php5-imap php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby libapache2-mod-ruby libapache2-mod-python php5-curl php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl réponse : Package libapache2-mod-fastcgi is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source Package libapache2-mod-ruby is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is… Voir plus »

Daspremont Terence
Daspremont Terence
Reply to  Daspremont Terence
8 années plus tôt

Bonjour,

Je me suis résigné :=) j’ai refait sur debian7. Bon tuto dans l’ensemble, mais pas toute a fait pour les novice comme moi :=) mais bon après c’est comme ça qu’on apprend !!