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 7. 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 python-software-properties -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 wheezy main' apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449 echo deb http://dl.hhvm.com/debian wheezy main | tee /etc/apt/sources.list.d/hhvm.list wget http://www.dotdeb.org/dotdeb.gpg apt-key add dotdeb.gpg add-apt-repository 'deb http://packages.dotdeb.org wheezy all' add-apt-repository 'deb-src http://packages.dotdeb.org wheezy all' 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
La ligne qui nous permet de tourner avec les sockets Unix c’est celle-ci :
hhvm.server.file_socket = /var/run/hhvm/server.sock
Enregistrez votre fichier avec un petit coup de Ctrl+O et redémarrez le service :
service hhvm restart && update-rc.d hhvm defaults
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 :
service nginx restart
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é :
mkdir /var/www 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 :
Salut,
perso avec nginx & hhvm j’ai eu des performance plus faible que avec php5.6 sur debian :/
j’ai testé sur une VM avec 5 go de ram et 3 vcore et la même chose m’est arrivé