J'ai galéré quelque temps pour installer une plateforme LEMP sous Debian. Finalement, ce n'est pas si compliqué mais après avoir cherché quelque temps, je vous livre un tuto clé en main.
J'ai fais ce travail sur Debian 7 mais je ne doute pas qu'il fonctionne sur d'autres plateformes.
MariaDB ou MySQL :
MariaDB est le remplaçant de MySQL, 100% libre (GPL) et 100% compatible.
Installer MariaDB sous Linux, c'est très simple : il suffit d'ajouter le dépôt comme indiqué sur le site officiel.
Pour s'y connecter, il faudra simplement faire comme si vous étiez sur MySQL :
mysql -u root -p
MariaDB [(none)]>
Si vous voulez simplement installer le bon vieux MySQL, vous pouvez vous contenter d'un …
apt-get install mysql-server
PHP 5
Il faut simplement installer le paquet php5-fpm.
NGinx
Installer le paquet nginx et démarrer le service (ce n'est pas démarré automatiquement)
service nginx start
Ensuite, il faudra aller dans le site par défaut et dire à Nginx qu'il interprète les scripts PHP :
vim /etc/nginx/sites-available/default
Chercher la ligne
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
Décommenter le paragraphe comme ceci :
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info .+\php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Et redémarrer NGinx :
service nginx restart
Tester le tout
On peut tester NGinx/PHP avec le phpinfo() :
Créer un fichier info.php dans le répertoire /usr/share/nginx/www/
<?php phpinfo(); ?>
Démarrer le navigateur à l'adresse http://localhost/info.php
Pour tester NGinx + PHP + MariaDB il faut soit créer un script PHP qui demande une info dans une base MariaDB (ou MySQL ; c'est exactement pareil), soit installer un CMS tout fait (Drupal, Wordpress, …).
# LEMP
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 10.
LEMP ? LAMP, je connais, ça veut dire GNU/Linux, Apache, MySQL et PHP, mais LEMP ? Que signifie le E ?
[^] # Re: LEMP
Posté par passant·e . Évalué à 5.
Linux - EngineX (Nginx HTTP SERVER) - Mysql - PHP
Je trolle dès quand ça parle business, sécurité et sciences sociales
[^] # Re: LEMP
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 9.
Eh bien c'est tordu. LNMP serait plus compréhensible non ?
[^] # Re: LEMP
Posté par Thomas Debesse (site web personnel) . Évalué à 7.
Oui mais ça devient alors un simple sigle et non plus un acronyme. /o\
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: LEMP
Posté par totof2000 . Évalué à 4.
Mais lnmp, c'est facilement prononçable non ? (pour un mutant qui possède trois langues dans la bouche. Et le top du top serait qu'il ait 10 doigts par main pour utiliser Emacs).
[^] # Re: LEMP
Posté par steph1978 . Évalué à 1.
Tu dis ça parce que t'avais pas trouvé.
Moi ça m'a fait ça une petite seconde "ça veut rien dire son truc".
Puis "LEMP comme LAMP mais avec EngineX au lieu de apache, cool !"
Bref te manquait une fraction de seconde pour comprendre, apprécier et éviter un commentaire négatif.
# pool php5-fpm
Posté par Thomas Debesse (site web personnel) . Évalué à 6.
Un truc de bien, c'est qu'avec php5-fpm on peut facilement lancer des « pool » avec différents utilisateurs propres à un ou plusieurs sites.
Dans Debian c'est dans
/etc/php5/fpm/pool.d/
Exemple, le pool par défaut :
Un brève lecture montre qu'il est très facile de lancer php5-fpm avec un autre utilisateur sur un autre socket, et de tuner d'autres options encore.
Après dans votre configuration nginx, vous pouvez écrire un fichier qui contient cela (notez le «
php5-fpm
» après «upstream
» :Et ensuite, quand vous configurez un site,
Et ce pour plusieurs sites. Pas besoin de réécrire le socket, il suffit de réemployer le nom, ça veut dire aussi qu'on peut changer le nom du socket ou passer sur un port réseau, et peut-être même une autre technologique que php5-fpm… sans reconfigurer tous les sites.
Ainsi on peut imaginer un premier pool
avec
et phpmyadmin, phppgadmin, phpldapadmin, lam, que sais-je encore, qui utilisent :
Puis ensuite on peut imaginer un pool :
avec
Puis un pool :
avec
et un ou des sites utilisent :
tandis qu'encore un autre ou d'autres sites utilisent :
…ne pas oublier de créer les utilisateurs, bien évidemment. ;)
Personnellement, je crée naïvement dans nginx des petits fichiers nommés
upstream-php5-fpm-site1.conf
pour chaque pool qui contiennent la déclaration du socket, mais nommés comme précédemment.ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: pool php5-fpm
Posté par Thomas Debesse (site web personnel) . Évalué à 4.
Il semble que ce soit plus sécurisé que les suexec, suphp et autre ruid d'apache. Parce qu'avec ces derniers outils précités, on est obligé d'avoir en permanence un Apache2 en root pour pouvoir su-er en utilisateur au moment de faire les requêtes à mod_php (il faut donc que l'apache root aie connaissance des requêtes). Avec des suexec-like on gagne la sécurité d'avoir des sites exécutés sous des utilisateurs différents et donc des hébergés qui ne peuvent pas espionner leurs voisins, mais on prend le risque qu'un exploit sur une vulnérabilité d'Apache donne… les droit root, et pas seulement www-data ! Bref, ça ne protège que des honnêtes gens dans un monde sans faille.
Si tu as un exploit pour nginx ou php-fpm… tu resteras à priori restreint à ton utilisateur. L'escalade d'un pool vers le master est un peu plus complexe, il me semble (autant que de passer de www-data à root avec un apache sans suexec-like).
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: pool php5-fpm
Posté par Joris Dedieu (site web personnel) . Évalué à 3.
Pas avec suexec justement. suexec + mod_fcgid + php-cgi donne à peu près le même résultat en moins propre bien sur car on passe par un binaire setuid. Mais permet par contre de conserver la syntaxe apache et le .htaccess qui sont malheureusement encore trop difficilement contournable quand on veut offrir une solution qui marche out-of-the-box avec a peu près tous les CMS du marché.
A noter que apache 2.4 introduit mod_proxy_fcgi qui permet d'utiliser php-fpm et apache ce qui semble être une solution plus acceptable si ce n'est l'absence pour l'heure d'un support des socket Unix.
[^] # Re: pool php5-fpm
Posté par Thomas Debesse (site web personnel) . Évalué à 1.
oui, si tu fais du apache avec php-cgi ou php-fpm… ça devient kifkif avec nginx. :)
ce commentaire est sous licence cc by 4 et précédentes
# Cela me rappelle qu'il faut sérieusement que j'évalue MariaDB !
Posté par Graveen . Évalué à 3.
… Ce journal tombe à pic, encore un truc sur ma todo-list qui date de plusieurs mois !
Enfin, évaluer est un mot un peu grand, plutot verifier que ca marche bien avec mes applications, et roule !
[^] # Re: Cela me rappelle qu'il faut sérieusement que j'évalue MariaDB !
Posté par berumuron . Évalué à 3.
Il me semble avoir lu que MariaDB était full-compatible avec MySQL. En tout cas je n'ai jamais eu de soucis avec donc à priori tout devrait bien se passer :) (enfin faut rester méfiant avec les à priori quand même…)
[^] # Re: Cela me rappelle qu'il faut sérieusement que j'évalue MariaDB !
Posté par Adminrezo (site web personnel) . Évalué à 4.
Oui MariaDB est annoncé pleinement compatible avec MySQL.
Perso j'ai déjà fait des migrations sans souci mais bon il peut bien y avoir des cas particuliers qui posent des difficultés.
MariaDB outre qu'elle soit libre est censée être plus performante mais alors là, je peux pas dire car mes exemples sont des petites structures pas très révélatrices.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.