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.
Bonjour à tous,
Aujourd’hui, nous allons voir comment faire un environnement web hautes-performances sous Debian 8. Actuellement, c’est une des configurations types les plus rapides qui existe pour le traitement web/php/mysql mais, ce n’est pas ce qui offre la meilleure compatibilité. Je vous laisse regarder les autres procédures du site pour voir si elles correspondent mieux à vos attentes.
Avant de commencer, connectez-vous avec l’utilisateur root sur votre serveur.
Configuration des repository :
On va commencer par installer les repository nécessaires :
apt-get install software-properties-common -y apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db add-apt-repository 'deb http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.0/debian sid main' apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449 echo deb http://dl.hhvm.com/debian jessie main | tee /etc/apt/sources.list.d/hhvm.list apt-get update
Installation des composants du serveur :
Nous allons installer Nginx, MariaDB, HHVM, Memcached et le client NTP pour que votre machine soit toujours à l’heure.
apt-get install nginx mariadb-server hhvm libgmp-dev memcached libmemcached-dev ntp -y
Configuration du client NTP :
La configuration du client NTP est éditable avec cette commande :
nano /etc/ntp.conf
Vous devez rajouter les serveurs de temps qui correspondent à votre zone. Vous pourrez les trouver sur ce site.
Par exemple pour la France :
server 0.fr.pool.ntp.org server 1.fr.pool.ntp.org server 2.fr.pool.ntp.org server 3.fr.pool.ntp.org
Configuration de HHVM :
Nous allons maintenant le configurer pour qu’il cache automatiquement sa version et pour qu’il utilise les sockets Unix à la place d’un port TCP.
Avant tout nous allons commencer par ouvrir le fichier de configuration de la bête :
nano /etc/hhvm/server.ini
Maintenant éditez votre fichier pour qu’il ressemble à celui-ci :
; php options pid = /var/run/hhvm/pid ; hhvm specific ; hhvm.server.port = 9000 hhvm.server.file_socket = /var/run/hhvm/server.sock hhvm.server.type = fastcgi hhvm.server.default_document = index.php hhvm.log.use_log_file = true hhvm.log.file = /var/log/hhvm/error.log hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc ; headers expose_php = 0
Enregistrez votre fichier avec un petit coup de Ctrl+O et redémarrez le service :
systemctl restart hhvm && systemctl enable hhvm
Configuration de Nginx :
Maintenant, on va passer à la configuration de Nginx.
Lancez la ligne de commande suivante pour éditer la configuration principale de Nginx :
nano /etc/nginx/nginx.conf
Adaptez le worker_processes en fonction de votre nombre de cœurs cpu :
worker_processes 8;
Sauvegardez ce fichier avec Ctrl+O et ouvrez le fichier de configuration de HHVM :
rm /etc/nginx/hhvm.conf nano /etc/nginx/hhvm.conf
Remplissez le avec ceci :
location ~ \.(hh|php)$ { fastcgi_keep_conn on; # fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/hhvm/server.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Sauvegardez le fichier et redémarrez Nginx :
systemctl restart nginx
Création du répertoire web pour votre site :
Nous allons maintenant créer le répertoire qui va accueillir votre site web ainsi que le virtualhost Nginx associé :
cd /var/www rm -rf * chown -R root:www-data /var/www chmod g+w -R /var/www
Nous allons aussi créer un fichier index.php à des fins de test :
nano /var/www/index.php
Remplissez-le avec ceci et sauvegardez-le :
<?php phpinfo(); ?>
Création du VirtualHost pour Nginx :
Maintenant nous allons créer le VirtualHost par défaut sur Nginx pour qu’il affiche votre site web :
rm /etc/nginx/sites-enabled/default nano /etc/nginx/sites-enabled/default
Remplissez-le avec ceci :
server { listen 80 default_server; root /var/www; index index.php index.html; access_log /var/log/nginx/default-access_log; error_log /var/log/nginx/default-error_log; location / { try_files $uri $uri/ /index.php?$args; } include /etc/nginx/hhvm.conf; }
Maintenant, redémarrez Nginx et tapez l’adresse de votre serveur dans votre navigateur favori, vous devriez avoir cet affichage :
Conseillerais-tu cette installation pour un prestashop?
Oui et non, car je vais refaire un nouveau tutoriel spécifiquement pour prestashop dans la semaine 😉
Super! Merci beaucoup!
Merci pour ces tuto tjs complet et enrichissant ! J’aurais une question avec la sortie de debian 8. En terme de performance et de compatibilité, pour un site wordpress, conseils-tu nginx (1.8) ou Apache (2.4)? Car dans un de tes anciens articles daté d’un an nginx était derrière avec les test utilisant cmsimple. Mais nginx a beaucoup évolué auj.
Bonjour Snor,
Je te conseille Nginx. Je n’utilise plus que ce serveur et on est de plus en plus dans ce cas.
Pour la petite anecdote, wordpress.com tourne intégralement sous Nginx.
Merci! 🙂
merci pour ce how-to j’ai découvert hhvm c’est une usine nucléaire ce truc… par rapport a php-ng et je préfère avoir la dernier version aussi de mariaDB
Je croyais que MariaDB 10 était déjà dispo dans Jessie, pas nécessairement besoin de passer par un dépôt tiers (à moins de vouloir à tout prix la dernière version).
J’aime bien avoir les dernières versions mais, je ne savais pas encore que MariaDB était inclus d’office quand j’ai écris ça 😉
Confirmation par l’équipe de dotdeb (qui est en train de revoir sa chaîne de compilation pour tenir les trois éditions) : https://www.dotdeb.org/2015/04/26/debian-8-0-jessie-has-been-released-and-what-it-means-for-dotdeb/