Servidor web · 4 min read · Jan 23, 2026
Instalando Nginx Con Soporte PHP5 (Y PHP-FPM) Y MySQL (LEMP) En Debian Wheezy
Nginx (pronunciado “engine x”) es un servidor HTTP gratuito, de código abierto y de alto rendimiento. Nginx es conocido por su estabilidad, rica funcionalidad, configuración simple y bajo consumo de recursos. Este tutorial muestra cómo puedes instalar Nginx en un servidor Debian Wheezy con soporte para PHP5 (a través de PHP-FPM) y soporte para MySQL (LEMP = L inux + nginx (pronunciado “ e ngine x”) + M ySQL + P HP).
¡No emito ninguna garantía de que esto funcione para ti!
1 Nota Preliminar
En este tutorial utilizo el nombre de host server1.example.com con la dirección IP 192.168.0.100. Estas configuraciones pueden diferir para ti, así que debes reemplazarlas donde sea apropiado.
2 Instalando MySQL 5
Para instalar MySQL, ejecutamos
apt-get install mysql-server mysql-clientSe te pedirá que proporciones una contraseña para el usuario root de MySQL - esta contraseña es válida para el usuario root@localhost así como para [email protected], por lo que no tenemos que especificar una contraseña de root de MySQL manualmente más adelante:
Nueva contraseña para el usuario “root” de MySQL: <– tucontraseñarootsql Repetir contraseña para el usuario “root” de MySQL: <– tucontraseñarootsql
3 Instalando Nginx
Nginx está disponible como un paquete para Debian Wheezy que podemos instalar de la siguiente manera:
apt-get install nginxInicia nginx después:
/etc/init.d/nginx startEscribe la dirección IP o el nombre de host de tu servidor web en un navegador (por ejemplo, http://192.168.0.100), y deberías ver la siguiente página:

La raíz del documento por defecto de nginx en Debian Wheezy es /usr/share/nginx/www.
4 Instalando PHP5
Podemos hacer que PHP5 funcione en nginx a través de PHP-FPM (PHP-FPM (FastCGI Process Manager) es una implementación alternativa de PHP FastCGI con algunas características adicionales útiles para sitios de cualquier tamaño, especialmente sitios más concurridos) que instalamos de la siguiente manera:
apt-get install php5-fpmPHP-FPM es un proceso daemon (con el script de inicio /etc/init.d/php5-fpm) que ejecuta un servidor FastCGI en el socket /var/run/php5-fpm.sock.
5 Configurando nginx
La configuración de nginx está en /etc/nginx/nginx.conf que abrimos ahora:
vi /etc/nginx/nginx.confLa configuración es fácil de entender (puedes aprender más sobre ella aquí: http://wiki.nginx.org/NginxFullExample y aquí: http://wiki.nginx.org/NginxFullExample2)
Primero (esto es opcional) ajusta el número de procesos de trabajo y establece el keepalive_timeout a un valor razonable:
| [...] worker_processes 4; [...] keepalive_timeout 2; [...] |
Los hosts virtuales se definen en contenedores server {}. El vhost por defecto se define en el archivo /etc/nginx/sites-available/default - modifiquémoslo de la siguiente manera:
vi /etc/nginx/sites-available/default| [...] server { listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6 root /usr/share/nginx/www; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } # 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; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ \/\.ht { deny all; } } [...] |
Descomenta ambas líneas listen para hacer que nginx escuche en el puerto 80 IPv4 y IPv6.
servername ; hace de esto un vhost por defecto que captura todo (por supuesto, también puedes especificar un nombre de host aquí como www.example.com).
He añadido index.php a la línea de índice. root /usr/share/nginx/www; significa que la raíz del documento es el directorio /usr/share/nginx/www.
La parte importante para PHP es la estrofa location ~ .php$ {}. Descoméntala para habilitarla. Ten en cuenta que he añadido la línea try_files $uri =404; para prevenir exploits de día cero (ver http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP y http://forum.nginx.org/read.php?2,88845,page=3).
Ahora guarda el archivo y recarga nginx:
/etc/init.d/nginx reloadA continuación, abre /etc/php5/fpm/php.ini…
vi /etc/php5/fpm/php.ini… y establece cgi.fix_pathinfo=0:
| [...] ; cgi.fix_pathinfo proporciona soporte *real* para PATH_INFO/PATH_TRANSLATED para CGI. El comportamiento anterior de PHP era establecer PATH_TRANSLATED en SCRIPT_FILENAME, y no entender qué es PATH_INFO. Para más información sobre PATH_INFO, consulta las especificaciones de cgi. Establecer esto en 1 hará que PHP CGI corrija sus rutas para ajustarse a la especificación. Un valor de cero hace que PHP se comporte como antes. El valor predeterminado es 1. Debes corregir tus scripts para usar SCRIPT_FILENAME en lugar de PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |
Recarga PHP-FPM:
/etc/init.d/php5-fpm reloadAhora crea el siguiente archivo PHP en la raíz del documento /usr/share/nginx/www:
vi /usr/share/nginx/www/info.php| |
Ahora llamamos a ese archivo en un navegador (por ejemplo, http://192.168.0.100/info.php):

Como ves, PHP5 está funcionando, y está funcionando a través de FPM/FastCGI, como se muestra en la línea de API del servidor. Si desplazas hacia abajo, verás todos los módulos que ya están habilitados en PHP5. MySQL no está listado allí, lo que significa que aún no tenemos soporte para MySQL en PHP5.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.