Création d'users multiples sur un seul pool PHP-FPM

Avez-vous installé PHP-FPM / FastCGI sur mon server cPanel / WHM, mais j'aimerais que plusieurs users soient séparés d'un pool unique.

L'ajout de tous les fantômes à un pool unique est simple en ajoutant ceci à l'éditeur d'Apache inclus sous Global Post Vhost:

<IfModule mod_fastcgi.c> FastCGIExternalServer /usr/local/sbin/php-fpm -host 127.0.0.1:9000 AddHandler php-fastcgi .php Action php-fastcgi /usr/local/sbin/php-fpm.fcgi ScriptAlias /usr/local/spin/php-fpm.fcgi /usr/local/sbin/php-fpm <Directory /usr/local/sbin> Options ExecCGI FollowSymLinks SetHandler fastcgi-script Order allow,deny Allow from all </Directory> </IfModule> 

Mais j'aimerais find un moyen de mettre en œuvre le script php sous l'user, mais le partage du pool.

Je gère et contrôle tous les domaines qui se déroulent sous le pool, de sorte que je ne me préoccupe pas de la security des files par count. Je dois simplement m'assurer que tous les scripts peuvent être exécutés par l'user qui possède les files au lieu d'avoir besoin de changer de file les permissions pour chaque count, ou de créer des tonnes de files hhhh inclus.

3 Solutions collect form web for “Création d'users multiples sur un seul pool PHP-FPM”

Rapide et sale: ouvrez la window principale d'apache include dans WHM, collez ceci:

 LoadModule fastcgi_module modules/mod_fastcgi.so #### 1 example configuration per project/user <VirtualHost 192.168.1.109:80> ServerName www.firstproject.com DocumentRoot /home/firstproject/public_html <IfModule mod_fastcgi.c> FastCgiExternalServer /tmp/fpm-firstproject -idle-timeout 7200 -socket /tmp/firstproject.sock Alias /tmp/fpm-engine /tmp/fpm-firstproject </IfModule> </VirtualHost> <VirtualHost 192.168.1.109:443> ServerName www.firstproject.com DocumentRoot /home/firstproject/public_html <IfModule mod_fastcgi.c> FastCgiExternalServer /tmp/fpm-firstprojectSSL -idle-timeout 7200 -socket /tmp/firstprojectSSL.sock Alias /tmp/fpm-engine /tmp/fpm-firstprojectSSL </IfModule> SSLEngine on SSLCertificateFile /var/cpanel/ssl/installed/certs/firstproject_com_cc6ae_82d03_1403300343_ec3d5db868775279d0976f0834065525.crt SSLCertificateKeyFile /var/cpanel/ssl/installed/keys/cc6ae_82d03_27967119f69793a369e32273af50bfea.key </VirtualHost> #### 2 example configuration per project/user <VirtualHost 192.168.1.109:80> ServerName www.secondproject.com DocumentRoot /home/secondproject/public_html <IfModule mod_fastcgi.c> FastCgiExternalServer /tmp/fpm-secondproject -idle-timeout 7200 -socket /tmp/secondproject.sock Alias /tmp/fpm-engine /tmp/fpm-secondproject </IfModule> </VirtualHost> #### 3 example configuration per project/user <VirtualHost 192.168.1.109:80> ServerName www.thirdproject.com DocumentRoot /home/thirdproject/public_html <IfModule mod_fastcgi.c> FastCgiExternalServer /tmp/fpm-thirdproject -idle-timeout 7200 -socket /tmp/thirdproject.sock Alias /tmp/fpm-engine /tmp/fpm-thirdproject </IfModule> </VirtualHost> <IfModule mod_fastcgi.c> <FilesMatch \.php$> SetHandler php-fpm </FilesMatch> Action php-fpm /tmp/fpm-engine </IfModule> 

et ensuite faire ensuite:

 mkdir -p /usr/local/etc/fpm.d/ cp php-fpm.conf.default /usr/local/etc/fpm.d/firstproject.conf mv php-fpm.conf.default php-fpm.conf 

ouvrez maintenant ce file /usr/local/etc/php-fpm.conf, et supprimez tout après la section Pool Defenitions, uncomment include = etc / fpm.d / *. conf et save.

Maintenant, vous allez à /usr/local/etc/fpm.d/ et ouvrez la configuration de votre projet, modifiez le nom du pool, l'adresse d'écoute, l'user et le groupe, pm. parameters, et au fond, remplacent les valeurs php. renommez ce file pour d'autres projets et modifiez les parameters au besoin.

bonne chance

Vous pouvez utiliser le script https://support.sysally.net/projects/cphstack pour get des pools php-fpm par user et qui est 100% compatible avec cpanel

Les réponses fournies ici ne sont plus applicables en raison de la dépréciation d'APC et du comportement de son rlocation moderne Zend's Optimizer + (PHP 5.4 et inférieur) ou OpCache (PHP 5.5 +) … en raison de la manière dont OpCache (par défaut) partage un seul cache sur tous les users sur un environnement d'hébergement partagé. Un bogue a été soumis (et vous pouvez, et devrait, aller et voter pour laisser les mainteneurs savoir combien cela pourrait être important pour votre cas d'utilisation), même si aucun engagement n'a été pris sur la livraison d'un correctif.

TL; DR: par défaut lorsque OpCache est activé, le cache utilisé pour stocker le code d'octet compilé est partagé sur tous les users. Dans un environnement où l'hébergement est partagé entre plusieurs sites / users, cela peut entraîner un site saisissant la sortie caching des scripts php à partir d'un autre site ou, si des parameters de security spécifiques sont activés, même générant des erreurs .

Si vous prévoyez d'utiliser PHP-FPM avec PHP 5.5 + construit en opcache, lisez la publication du blog ci-dessous avant de faire cela. Il s'avère que le cache d'opcode peut être lu par n'importe quel user sur le server. Cela signifie que, s'il y a des dizaines, 10 users distincts, avec leurs propres videos et directorys, et que vous configurez un pool PHP-FPM par user, chaque user peut encore voir quels scripts sont mis en cache et leurs locations. Comme ils ont lu l'access au cache, ils pourraient potentiellement afficher toutes ces données.

Il s'agit évidemment d'un problème de security majeur, et même si personne ne l'exploite, il existe encore une possibilité de lecture de scripts par le mauvais user lors de la génération d'une page, de sorte que les sites Web pourraient afficher les mauvaises données / informations s'il existe un indice multiple .php scripts dans le cache.

Bien qu'aucun correctif n'ait été officiellement publié, si vous utilisez cPanel, ce wiki dispose d'une manière documentée de configurer les pools php-fpm à créer et à sécuriser par user et si vous suivez les instructions ci-dessous ainsi que les NOTES IMPORTANTES au bas de cette réponse, vous devriez pouvoir get la fonctionnalité que vous désirez sans aucune erreur

Cette publication explique également comment vous pouvez configurer cela à la main sur une base par site / par user (bien que je parie que cela pourrait devenir fastidieux si vous hébergez beaucoup de sites). Si vous n'utilisez pas cPanel, vous devrez modifier les scripts pour spécifier vos paths individuels et vos noms d'user au lieu des variables utilisées par le moteur de configuration de cPanel.


NOTES IMPORTANTES

Au cours des essais et des searchs supplémentaires, j'ai rencontré cet article qui fournit quelques précisions qui peuvent être pertinentes pour votre situation spécifique:

  1. Vous devez vous assurer que le paramètre opcache.use_cwd est défini comme true pour la configuration de votre application d'OpCache – il est défini sur false par défaut et le laisser défini à défaut provoquera probablement des collisions si vous hébergez plus d'une application PHP sur votre système:

Tout d'abord, probablement dans chaque projet typique, vous devrez vous assurer que l'option opcache.use_cwd est définie sur true. L'activation de ce paramètre signifie que le moteur OpCache examinera les paths de files complets pour distinguer les files avec les mêmes noms. Le réglage en faux entraînera des collisions entre des files avec le même nom de base.

  1. Si vous exécutez une application alimentée par Zend Framework ou un autre cadre similaire qui utilise des annotations, vous devez également vous assurer que les opcache.load_comments et opcache.save_comments sont définies comme true . Vous devriez vérifier cette suggestion avec votre documentation d'application / cadre car la plupart ont maintenant mis à jour leurs documents avec des instructions spécifiques pour activer l'utilisation d'OpCache correctement pour leurs systèmes:

Il existe également un paramètre qui est important dans les outils et les frameworks qui utilisent les annotations. Si vous utilisez Docsortingne, Zend Framework 2 ou PHP Unit, n'oubliez pas de définir les parameters opcache.load_comments et opcache.save_comments sur true. En conséquence, les commentaires de la documentation de vos files seront également inclus dans le code précompilé généré par OpCache. Ce paramètre vous permettra de travailler avec des annotations sans interruption.

Si votre projet est basé sur un cadre spécifique ou une application Web, il est toujours recommandé de vérifier la documentation pour toutes les directives relatives à la configuration d'OpCache

NOTES IMPORTANTES


J'espère que cela a aidé – et si vous utilisez cPanel, déposez un commentaire pour nous faire savoir comment vous avez abordé cette partie de la configuration! Voir aussi cette question et les commentaires associés .

  • Etiquette SElinux pour les sockets php-fpm
  • Puis-je définir globalement $ _SERVER avant l'exécution du script?
  • Implications qui accompagnent le chrooting php-fpm
  • Phpmyadmin location pour nginx
  • Démarrez PHP-FPM avec l'option racine automatiquement
  • Codeigniter dans le sous-directory Nginx 404
  • process de php-fpm
  • nginx & php-fpm et en-tête personnalisé
  • 504 timeout de la passerelle / 502 mauvaise passerelle après l'installation de php curl - server nginx
  • Debian x86_64 + Nginx + PHP5-FPM optimization
  • Le cas étrange de Mr. Time To First Byte
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.