Introducción a Nginx y PHP FPM
-
Upload
yannick-warnier -
Category
Technology
-
view
40 -
download
0
Transcript of Introducción a Nginx y PHP FPM
Optimización de servidor web
ConNginx y PHP-FPM
Yannick Warnier@ywarnier
http://t3n.de/news/wp-content/uploads/2016/03/nginx-hoster-benchmark-nginx-vs-apache.jpg
PHP-FPM● FastCGI Process Manager
● Implementación alternativa de PHP FastCGI
● Con funcionalidades adicionales utiles para sitios de todos tamaños, en particular sitios muy activos
● Integrado en PHP desde PHP 5.4 en Nov 2011
PHP-FPM● Gestión de procesos avanzada
● Posibilidad workers con uid/ambientes distintos
● ...y php.ini distintos
● Soporte de upload acelerado
● Slow log
● ...
PHP-FPM + Nginx
Apache + modPHP
Apache
HDD / SSD
DB
Mod-PHP
Apache + modPHP
Apache
HDD / SSD
DB
Mod-PHP
Apache + modPHP
Apache
HDD / SSD
DB
Mod-PHP
Apache + modPHP
Apache
HDD / SSD
DB
Mod-PHP
Nginx + PHP-FPM
Nginx
HDD / SSD
DBPHP-FPM
PHP-FPM
PHP-FPM
Nginx + PHP-FPM
Nginx
HDD / SSD
DBPHP-FPM
PHP-FPM
PHP-FPM
Nginx + PHP-FPM
Nginx
Asíncrono
HDD / SSD
DBPHP-FPM
PHP-FPM
PHP-FPM
Nginx + PHP-FPM
Nginx
Asíncrono
HDD / SSD
DBPHP-FPM
PHP-FPM
PHP-FPM
Nginx + PHP-FPM
Nginx
Asíncrono
HDD / SSD
DBPHP-FPM
PHP-FPM
PHP-FPM
Instalar PHP-FPM
Configurar PHP-FPMuser@server:~$ sudo vim /etc/php/7.1/fpm/conf.d/ phpfpm.conf php.ini pool.d/ user@server:~$ sudo vim /etc/php/7.1/fpm/php.ini
[PHP]
;;;;;;;;;;;;;;;;;;;; About php.ini ;;;;;;;;;;;;;;;;;;;;; PHP's initialization file, generally called php.ini, is responsible for; configuring many of the aspects of PHP's behavior.
; PHP attempts to find and load this configuration from a number of locations.; The following is a summary of its search order:
Configurar PHP-FPMuser@server:~$ sudo vim /etc/php/7.1/fpm/pool.d/www.conf
; Start a new pool named 'www'.; the variable $pool can be used in any directive and will be replaced by the; pool name ('www' here)[www]
; …
user = wwwdatagroup = wwwdata
; …
listen = /run/php/php7.1fpm.socklisten.owner = wwwdatalisten.group = wwwdata
; …
pm = dynamicpm.max_children = 5pm.start_servers = 2pm.min_spare_servers = 1pm.max_spare_servers = 3pm.process_idle_timeout = 10s;
Configurar PHP-FPMuser@server:~$ sudo vim /etc/php/7.1/fpm/pool.d/www.conf
pm = dynamicpm.max_children = 5pm.start_servers = 2pm.min_spare_servers = 1pm.max_spare_servers = 3pm.process_idle_timeout = 10s;pm.max_requests = 500access.log = log/$pool.access.log
slowlog = log/$pool.log.slowrequest_slowlog_timeout = 0
Configurar PHP-FPMuser@server:~$ sudo vim /etc/php/7.1/fpm/pool.d/www.conf
;php_admin_value[sendmail_path] = /usr/sbin/sendmail t i f [email protected];php_flag[display_errors] = off;php_admin_value[error_log] = /var/log/fpmphp.www.log;php_admin_flag[log_errors] = on;php_admin_value[memory_limit] = 32M
En resumen: todo por defecto!
Configurar Nginx- sudo apt-get install nginx-full- sudo vim /etc/nginx/nginx.conf
user wwwdata;worker_processes auto;pid /run/nginx.pid;
events { worker_connections 768; # multi_accept on;}
Configurar Nginx- sudo apt-get install nginx-full- sudo vim /etc/nginx/nginx.conf
http {
## # Basic Settings ##
sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off;
Configurar Nginx- sudo apt-get install nginx-full- sudo vim /etc/nginx/sites-available/default
server { listen 80 default_server; listen [::]:80 default_server;
index index.html index.htm index.nginxdebian.html;
server_name _;
location / { try_files $uri $uri/ =404; }
Configurar Nginx- sudo apt-get install nginx-full- sudo vim /etc/nginx/sites-available/default
server { # ... # pass the PHP scripts to FastCGI server # listening on 127.0.0.1:9000 # location ~ \.php$ { include snippets/fastcgiphp.conf; # With php7.1fpm: fastcgi_pass unix:/run/php/php7.1fpm.sock; }
Configurar Nginx- sudo service php-fpm restart- sudo service apache2 stop (si tiene Apache)- sudo service nginx restart
Ventajas- Asíncrono (libevent)- Balanceador de carga (directiva “upstream”)- Reverse Proxy (caché)- Soporte SSL completo- Soporte moderación
- limit_conn / limit_conn_zone- limit_rate- limit_req / limit_req_zone- max_conns (upstream)- queue
- Compresión
@ywarnierBeezNest