LEMP : Linux Nginx MariaDb PHP
Mais pourquoi LEMP, et pas LNMP? Tout simplement parce que le remplaçant d'apache se prononce ENGINE-X. On retrouve donc Linux Nginx MariaDB et PHP-FPM. Sauf que je vais remplacer PHP-FPM par HHVM, diablement plus rapide.
Pour la distribution, j'ai choisi Debian 8, dont la stabilité et la vélocité ne sont plus à démontrer. Ce tuto peut très bien s'appliquer à toute autre distribution Linux. il suffit d'adapter simplement quelques commandes, et de modifier certains chemins vers les fichiers de configuration.
Installer NGINX
Pour Debian et Ubuntu, il est nécessaire d’ajouter la clé utilisée pour signer Nginx :
wget http://nginx.org/keys/nginx_signing.key
Ensuite, il suffit d’ajouter cette clé :
apt-key add nginx_signing.key
Afin de s’assurer d’avoir toujours la dernière version stable de Nginx, j'ajoute le REPO officiel de NGINX
echo 'deb http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list echo 'deb-src http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
Les classiques mises à jour:
apt-get update && apt-get install nginx
Pour adapter les performances de Nginx à votre Serveur/VPS, il est nécessaire de connaitre le nombre de cœur de votre CPU :
cat /proc/cpuinfo | grep processor | wc -l
éditer ensuite le fichier de configuration nginx :
nano /etc/nginx/nginx.conf
Modifier la valeur du worker_processes en fonction de votre nombre de coeur CPU.
redémarrage de Nginx :
sudo service nginx restart
Voilà, le serveur NGINX est en place. En vous rendant sur l’accueil de votre Serveur, vous devriez voir la page de présentation de NGINX
Cas particulier : Si vous avez déjà Apache sur votre serveur, il faut tout d'abord sauvegarder vos VirtualHost Apache pour ensuite pouvoir les rendre compatibles Nginx. Il faut donc commencer par Installer Nginx, mais sans démarrer le serveur, puis ensuite créer les blocs de serveur Nginx, tester votre config Nginx pour ensuite arrêter apache et enfin démarrer Nginx. (optionnellement, vous pouvez aussi faire cohabiter les deux, avec Apache en port 80 et Nginx en port 8080 par exemple). Lorsque votre config est fonctionnelle, vous pourrez supprimer apache.
Installer MariaDB
Installation des repo et clés:
apt-get install software-properties-common apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db sudo add-apt-repository 'deb [arch=amd64,i386] http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.1/debian jessie main'
Installation de MariaDB:
sudo apt-get update sudo apt-get install mariadb-server
Sécurisation de Mysql
mysql_secure_installation
Activation de INODB
nano /etc/mysql/my.cnf
Modifier l’encodage en UTF-8
[client] ... default-character-set=utf8 ... [mysql] ... default-character-set=utf8 ... [mysqld] ... collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8 ...
Redémarrage de mysql :
systemctl start mysql
Installer HHVM
repo et clés :
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449 echo deb http://dl.hhvm.com/debian jessie main | sudo tee /etc/apt/sources.list.d/hhvm.list
Mises à jour et installation avec MemCached:
sudo apt-get update sudo apt-get install hhvm memcached libmemcached-dev
Démarrage:
systemctl restart hhvm && systemctl enable hhvm
Configuration avec NGINX :
Pour fonctionner avec NGINX, un script de configuration automatique est disponible.
sudo /usr/share/hhvm/install_fastcgi.sh /usr/bin/update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60
Redémarrage de HHVM et NGINX
systemctl restart hhvm sudo service nginx restart
Voilà. A ce stade, vous avez NGINX, MariaDB et HHVM qui sont en place. Un petit test de vitesse vous montrera qu'on peut facilement atteindre des scores PageSpeed de plus de 90 sans plugin de cache ou CDN.