18
0
Fork 0

améliorations

This commit is contained in:
gcolpart 2016-11-04 02:02:01 +01:00
parent 5f4f47d087
commit 0f99c2ca91
1 changed files with 63 additions and 9 deletions

View File

@ -22,7 +22,7 @@ pid = /run/php5-fpm.pid
error_log = /var/log/php5-fpm.log error_log = /var/log/php5-fpm.log
~~~ ~~~
On définit ensuite un ou plusieurs "pools" FPM via /etc/php5/fpm/pool.d/*.conf : On définit ensuite un ou plusieurs *pools* FPM via `/etc/php5/fpm/pool.d/*.conf` :
~~~ ~~~
[www] [www]
@ -31,23 +31,60 @@ listen = /var/run/php5-fpm.sock
user = www-data user = www-data
group = www-data group = www-data
pm = dynamic pm = dynamic
pm.max_children = 50
pm.start_servers = 20 php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f return-path@example.com
pm.min_spare_servers = 5 php_flag[display_errors] = off
pm.max_spare_servers = 35 php_admin_value[error_log] = /var/log/fpm-php.www.log
pm.max_requests = 0 php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 32M
~~~ ~~~
## Configuration avancée
L'option **pm** (process manager) permet de choisir comment seront contrôlés les process fils : static, ondemand ou dynamic.
Le mode standard est **dynamic** : FPM va préparer des process en attente (au minimum 1) et les faire varier en fonction de la demande (de façon similaire à ce que peut faire [Apache](HowtoApache#configuration-de-base)).
~~~
pm = dynamic
pm.max_children = 100
pm.start_servers = 50
pm.min_spare_servers = 20
pm.max_spare_servers = 30
pm.max_requests = 100
~~~
Avec de nombreux pools, on optera pour le mode **ondemand** qui ne prépare pas de process mais les crée à chaque demande. D'après nos tests, les performances restent (assez étonnament) tout à fait acceptables.
~~~
pm = ondemand
pm.max_children = 100
pm.process_idle_timeout = 10s
~~~
D'autres options de FPM sont intéressantes :
~~~
slowlog = log/$pool.log.slow
request_slowlog_timeout = 5s
pm.status_path = /fpm-status
request_terminate_timeout = 60s
chroot = /home/foo
access.log = log/$pool.access.log
~~~
## Configuration avec Nginx : ## Configuration avec Nginx :
On configure maintenant Nginx, par exemple dans un Virtualhost foo : On configure PHP-FPM avec Nginx, par exemple dans un Virtualhost :
~~~ ~~~
server { server {
listen 80; listen 80;
server_name www.example.com example.com; server_name www.example.com example.com;
root /home/foo/www; root /home/foo/www;
index index.html index.php; index index.php;
location ~ \.php$ { location ~ \.php$ {
try_files $uri =404; try_files $uri =404;
@ -57,4 +94,21 @@ server {
include fastcgi_params; include fastcgi_params;
} }
} }
~~~ ~~~
## Configuration avec Apache
~~~
# a2enmod proxy_fcgi
Considering dependency proxy for proxy_fcgi:
Enabling module proxy.
Enabling module proxy_fcgi.
~~~
On configure PHP-FPM avec Apache, par exemple dans un VirtualHost :
~~~{.apache}
DocumentRoot /home/bench/www/
#ProxyPassMatch "^/(.*\.php(/.*)?)$" "fcgi://127.0.0.1:9000//home/foo/www/$1"
ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php5-fpm.sock|fcgi://localhost/home/foo/www/"
~~~