OVH Community, votre nouvel espace communautaire.

Tuto pour installer un VPS avec Nginx + PHP-FPM


ambroisemaupate
06/06/2014, 18h19
Citation Envoyé par phil_
dans la conf nginx server_name monsite1.com : quitte à faire ça, utilise *.monsite1.com. Nginx sert en premier le match exact.
http://wiki.nginx.org/Pitfalls#Server_Name

J'ai vu qu’il est déconseillé d’utiliser la notation *.monsite1.com pour les redirections 301. Rien qu’au niveau du référencement, ça permet d’éviter la duplication de contenu. L’utilisateur est forcé sur le bon sous-domaine (www), plutôt que de le laisser naviguer sur le site sans les www.

ambroisemaupate
03/06/2014, 09h19
Merci @Philippe pour ces remarques très précises et documentées.

Vu la taille du tuto, je vais sans doute le fractionner en sous-articles, ce sera dans un premier temps plus lisible.

Et c'est pas faux pour les versions. Je ne vérifie que la version de PHP et d’Apache (quand je l’utilise), mais je n’ai pas pensé à vérifier la version d’Nginx. C'était déjà le jour et la nuit quand j’ai découvert autre chose qu’Apache.

Pour le Zend opcache, je vais m’y pencher plus précisément pour rendre compatible notre CMS avec (il l’est déjà avec Xcache et APC).

phil_
03/06/2014, 08h36
Citation Envoyé par ambroisemaupate
Je fais appel à la communauté OVH pour soumettre à vos suggestions et critiques, un tuto pour installer un petit serveur Nginx+PHP-FPM.

Vous le trouverez à cette adresse : http://wiki.rezo-zero.com/index.php/...eb_sous_Debian

J'essaie d’aborder une base de sécurité et surtout comment bien cloisonner chaque utilisateur. Mais je ne suis pas expert dans ce domaine .
N’hésitez pas à faire des remarques pour que je puisse l’améliorer, et le corriger.

Merci pour votre temps !
Quelques remarques

php-fpm et le listen.mode = 0666 => trop permissif

Si tu crées une domaine technique pour l'accès aux outils de gestions (phpmyadmin, etc.) pourquoi ne pas forcer le SSL avec un return 301 dans le serveur sur le port 80 et mettre des acl (avec login et mdp ou certif client) pour les utilisateurs. Parce que là, tel quel, le SSL n'apporte pas grand chose. Phpmyadmin est accessible à n'importe qui avec tous ses trous de sécu et de toutes façons, avec l'authent par coockies et le blowfish les mots de passe mysql étaient déjà cryptés...

le apt-get install phpmyadmin : personnellement, j'y suis assez hostile. Tu n'as pas les dernières versions, tu ne sais pas très bien comment l'install est faite ou sécurisée et c'est assez incontrôlable, sur les forums kimsufi, quelqu'un a tué son serveur web avec un apt-get install nagios... Au point où tu en es dans le tuto, ce n'est pas délirant d'expliquer comment chercher les sources de phpmyadmin, créer une bdd, et faire vite fait une config sécurisée.

le tuto ssl que tu as utilisé est obsolète !!
le "ssl on;" est deprecated, nginx recommande d'utiliser la directive listen !
Va faire un tour sur le wiki de mozilla pour une idée des protocoles et ciphers à utiliser. Mais SSLv3 et TLSv1 !? En plus si c'est une zone d'admin, tu devrais vraiment te limiter à du TLSv1.2 et expliquer à tes utilisateurs qu'ils doivent passer aux dernières versions de firefox et chrome !

Zend opcache: tu expliques que php 5.5 embarquera l'opcache de zend par défaut mais pour le moment debian ne propose que du 5.4. Déjà, ce n'est pas un obstacle, l'opcache de zend se compile très facilement pour php 5.4, et je pense que comme à terme il devient la solution par défaut de php, mieux vaut éviter les autres par soucis de compatibilité. Ensuite, justement, debian 7.5 vient avec nginx 1.2 alors qu'on en est à la version 1.6 aujourd’hui ! Alors pareil, ça se compile, ou si on ne veut pas s'embêter, on peut utiliser les repos de dotdeb par exemple. Comme ça, on a tout (php 5.5, nginx 1.6 etc.)

dans la conf nginx server_name monsite1.com : quitte à faire ça, utilise *.monsite1.com. Nginx sert en premier le match exact.

Sinon, j'adhère à la remarque de Rizz, tu ferais mieux de faire des articles développés pour chaque sujet quitte à faire un tuto complet qui pointe ensuite vers chaque article.

Philippe

Rizz
31/05/2014, 17h19
Citation Envoyé par ambroisemaupate
Peux-tu développer ? Parce qu'à part installer Putty ou une machine virtuelle, Windows n'est pas tellement à l'aise avec le monde UNIX. À moins que tu parlais d'un autre point.
Je vois pas en quoi un quelconque OS ne serait opé pas pour du DEV.
Mais peut être que tu parlais d'un autre point.

ambroisemaupate
30/05/2014, 20h33
Citation Envoyé par Rizz
Ha je viens de me taper une bonne barre de rire., je ne partage pas du tout votre avis
Peux-tu développer ? Parce qu'à part installer Putty ou une machine virtuelle, Windows n'est pas tellement à l'aise avec le monde UNIX. À moins que tu parlais d'un autre point.

Rizz
30/05/2014, 19h34
Ha je viens de me taper une bonne barre de rire., je ne partage pas du tout votre avis

gaboul49
30/05/2014, 11h16
Citation Envoyé par ambroisemaupate
Sans vouloir troller, pour bosser sans se prendre la tête en Dev web, c'est soit Linux ou Mac.
C'est indiscutable en effet.

ambroisemaupate
30/05/2014, 09h23
Citation Envoyé par gaboul49
J'ai pas lu tout ton tuto en détails mais ça à l'air bien.
Je ne connais pas exim4. Ça vaut encore quelque chose par rapport à postfix 2 ?

Bonne idée de parler de git (mais les noobs utilisent windows. Git ça marche avec windows ?) plutôt que rsync.
Je ne pourrai pas te donner de détails sur exim4, j'ai juste vu pas mal d’articles où les admins le préferent à postfix. De toute façon c'est juste pour de l’envoi via PHP. Par principe, je n’installe jamais de serveur mail complet (imap+smtp), je préfère laisser ça à OVH, ce n’est pas la même responsabilité.

Pour Git, je crois que sur Windows, il existe un installateur, et au pire ils peuvent utiliser une VM Ubuntu (Virtual box étant gratuit). On est tous sur Mac au boulot. Sans vouloir troller, pour bosser sans se prendre la tête en Dev web, c'est soit Linux ou Mac.

gaboul49
30/05/2014, 09h03
J'ai pas lu tout ton tuto en détails mais ça à l'air bien.
Je ne connais pas exim4. Ça vaut encore quelque chose par rapport à postfix 2 ?

Bonne idée de parler de git (mais les noobs utilisent windows. Git ça marche avec windows ?) plutôt que rsync.

ambroisemaupate
29/05/2014, 23h47
Citation Envoyé par gaboul49
FTP, SFTP... Question de goût mais pour moi c'est vraiment galère à utiliser.

Rsync si ton poste de travail est sous linux. C'est 1000x mieux.
Oui c'est vrai que la manipulation en SSH permet d’éviter les lenteurs du FTP. Mais je pensais compléter en parlant de Git pour déployer un site en production, c'est encore plus malin, à condition de comprendre le principe du versionning.

Mon but, (en tant que développeur) en rédigeant ce tuto, est de comprendre les problématiques de sys-admin et de me mettre un peu à leur place. Et aussi que cela serve à mon équipe.

gaboul49
29/05/2014, 08h56
FTP, SFTP... Question de goût mais pour moi c'est vraiment galère à utiliser.

Rsync si ton poste de travail est sous linux. C'est 1000x mieux.

ambroisemaupate
28/05/2014, 22h41
Merci Rizz pour tes remarques.
Je vais me replonger dessus. J'ai encore du boulot…

Citation Envoyé par Rizz
Pour chaque site il te faut un fichier.
C'est ce que j'explique, je ne suis peut être pas assez explicite.

Citation Envoyé par Rizz
Siinon c'est quoi ce chemin ?????
fastcgi_pass unix:/var/www/vhosts/www.monsite1.com/php5-fpm.sock;
Effectivement ! Je n’avais pas compris que le socket était généré tout seul, je me suis pris la tête pour rien… J'ai tout remis dans /var/run.

Citation Envoyé par Rizz
+ Phmyadmin sans mysql c'est pas tres utile ^^
Je suis passé un peu vite sur mysql, je vais développer.

Citation Envoyé par Rizz
+ Ta config ne permet pas de faire tourner WP par exemple sinon ...
Je vais tester ça de ce pas.

Citation Envoyé par Rizz
Il manque un ftp éventuellement, plutôt indispensable
Je pensais privilégier un SFTP, en créant l’utilisateur avec le shell /bin/false, par exemple. Mais c'est encore mieux de le chrooter. C'est vrai que pour ça, le FTP est plus simple à configurer.

Rizz
28/05/2014, 20h47
Citation Envoyé par ambroisemaupate
Je fais appel à la communauté OVH pour soumettre à vos suggestions et critiques, un tuto pour installer un petit serveur Nginx+PHP-FPM.

Vous le trouverez à cette adresse : http://wiki.rezo-zero.com/index.php/...eb_sous_Debian

J'essaie d’aborder une base de sécurité et surtout comment bien cloisonner chaque utilisateur. Mais je ne suis pas expert dans ce domaine .
N’hésitez pas à faire des remarques pour que je puisse l’améliorer, et le corriger.

Merci pour votre temps !
Il est totalement déconseillé de travailler avec le fichier par defaut.
C'est bien pour comprendre ou vérifier que ca marche.. mais c'est tout... lors d'une maj Nginx tu peux voir ce fichier se faire écraser.

Pour chaque site il te faut un fichier.

Siinon c'est quoi ce chemin ?????
fastcgi_pass unix:/var/www/vhosts/www.monsite1.com/php5-fpm.sock;

+ Ca sert a rien d'augmenter des choses coté php si tu met pas la même coté Nginx. Aucune de tes config PHP n'est pertinente sauf le pathinfo = 0 en réalité. Tout le reste doit être modifier aussi coté NGINX sinon c'est sans effet.

+ Phmyadmin sans mysql c'est pas très utile ^^
+ Ta config ne permet pas de faire tourner WP par exemple sinon ...

En général les gens cherches l'un ou l'autre des sujets abordés .. rarement tous en même temps.. Fail2ban mériterai d'etre plus approfondi par exemple ... ou les sujet traitant des optimisations de config ( temps d’exécution, taille upload ...) pourrait aussi être a part.

Il manque un ftp éventuellement, plutôt indispensable.

ambroisemaupate
28/05/2014, 19h29
Je fais appel à la communauté OVH pour soumettre à vos suggestions et critiques, un tuto pour installer un petit serveur Nginx+PHP-FPM.

Vous le trouverez à cette adresse : http://wiki.rezo-zero.com/index.php/...eb_sous_Debian

J'essaie d’aborder une base de sécurité et surtout comment bien cloisonner chaque utilisateur. Mais je ne suis pas expert dans ce domaine .
N’hésitez pas à faire des remarques pour que je puisse l’améliorer, et le corriger.

Merci pour votre temps !