Servidor web · 7 min read · Jan 05, 2026
Instalando Nginx con PHP (como PHP-FPM) y MariaDB (LEMP) en Debian 8
Este tutorial te mostrará la instalación del servidor web Nginx en Debian 8. Nginx (pronunciado “engine x”) es un servidor HTTP gratuito, de código abierto y de alto rendimiento. Nginx es conocido por su estabilidad, conjunto de características ricas, configuración simple y bajo consumo de recursos. Este tutorial muestra cómo puedes instalar Nginx con soporte para PHP (a través de PHP-FPM) y MariaDB como reemplazo de MySQL. Esta configuración a menudo se denomina LEMP = Linux + nginx (pronunciado “ engine x”) + MySQL + PHP).
Nota Preliminar
En este tutorial, utilizo el nombre de host server1.example.com con la dirección IP 192.168.1.100. Estas configuraciones pueden diferir para ti, así que debes reemplazarlas donde sea apropiado. Debes tener un servidor Debian 8, usaré el servidor mínimo de Debian como el sistema base para este tutorial.
Actualizando el Sistema
Se recomienda actualizar las listas de paquetes e instalar cualquier actualización pendiente antes de comenzar con la configuración de Nginx. Ejecuta los siguientes comandos para instalar cualquier actualización pendiente.
apt-get update
apt-get upgrade -yUsaré el editor nano más adelante para editar archivos de configuración. Nano se puede instalar con este comando:
apt-get -y install nano Instalando MariaDB (como reemplazo de MySQL)
Para instalar MariaDB, ejecutamos:
apt-get -y install mariadb-server mariadb-clientSe te pedirá que proporciones una contraseña para el usuario root de MariaDB - 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 MariaDB manualmente más adelante:
Nueva contraseña para el usuario “root” de MariaDB: <– tucontraseñadeSQLroot
Repite la contraseña para el usuario “root” de MariaDB: <– tucontraseñadeSQLroot

Instalando Nginx
Nginx está disponible como un paquete para Debian Jessie que podemos instalar de la siguiente manera:
apt-get -y install nginxInicia Nginx después:
systemctl start nginx.serviceEscribe la dirección IP o el nombre de host de tu servidor web en un navegador (por ejemplo, http://192.168.1.100), y deberías ver la siguiente página:

La raíz del documento por defecto de nginx en Debian 8 es /var/www/html.
Instalando PHP
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 -y install php5-fpmPHP-FPM es un proceso daemon (con el archivo de unidad systemd php5-fpm.service) que ejecuta un servidor FastCGI en el socket /var/run/php5-fpm.sock.
Configurando nginx
La configuración de nginx está en /etc/nginx/nginx.conf que abrimos ahora:
nano /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 establece el keepalive_timeout a un valor razonable como 2 segundos:
[...]
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 - vamos a modificarlo de la siguiente manera:
nano /etc/nginx/sites-available/default[...]
server {
listen 80 default_server;
listen [::]:80 default_server;
# Configuración SSL
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Certificados autofirmados generados por el paquete ssl-cert
# ¡No los uses en un servidor de producción!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Agrega index.php a la lista si estás usando PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name _;
location / {
# Primer intento de servir la solicitud como archivo, luego
# como directorio, luego volver a mostrar un 404.
try_files $uri $uri/ =404;
}
# pasa los scripts PHP al servidor FastCGI escuchando en 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # Con php5-cgi solo:
# fastcgi_pass 127.0.0.1:9000;
# Con php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# denegar acceso a archivos .htaccess, si la raíz del documento de Apache
# coincide con la de nginx
#
location ~ /\.ht {
deny all;
}
}
[...]servername ; hace de este un vhost por defecto que captura todo (por supuesto, también puedes especificar un nombre de host aquí como www.example.com).
He agregado index.php a la línea de índice. root /var/www/html; significa que la raíz del documento es el directorio /var/www/html.
La parte importante para PHP es la estrofa location ~ .php$ {}. Descoméntala como se muestra arriba para habilitarla.
Ahora guarda el archivo y recarga Nginx:
systemctl reload nginx.serviceA continuación, abre /etc/php5/fpm/php.ini…
nano /etc/php5/fpm/php.ini… y establece cgi.fix_pathinfo=0:
[...]
; cgi.fix_pathinfo proporciona soporte *real* para PATH_INFO/PATH_TRANSLATED para CGI. PHP's
; el comportamiento anterior 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 conformarse a la especificación. Un ajuste
; 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:
systemctl reload php5-fpm.serviceAhora crea el siguiente archivo PHP en la raíz del documento /var/www/html/:
nano /var/www/html/info.phpAhora llamamos a ese archivo en un navegador (por ejemplo, http://192.168.1.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 de MariaDB / MySQL en PHP.
Obteniendo Soporte de MySQL / MariaDB en PHP
Para obtener soporte de MySQL en PHP, podemos instalar el paquete php5-mysqlnd. Es una buena idea instalar algunos otros módulos de PHP también, ya que podrías necesitarlos para tus aplicaciones. Puedes buscar módulos de PHP disponibles así:
apt-cache search php5Elige los que necesites e instálalos así:
apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xslAPCu es un caché de opcodes PHP gratuito y de código abierto para almacenar en caché y optimizar el código intermedio de PHP que extiende el opcache de PHP. Reemplaza la caché APC. y es similar a otros cachés de opcodes PHP, como eAccelerator y Xcache. Se recomienda encarecidamente tener uno de estos instalados para acelerar tu página PHP.
APCu se puede instalar de la siguiente manera:
apt-get install php5-apcuAhora recarga PHP-FPM:
systemctl reload php5-fpm.serviceAhora recarga http://192.168.1.100/info.php en tu navegador y desplázate hacia abajo a la sección de módulos nuevamente. Ahora deberías encontrar muchos nuevos módulos allí, incluido el módulo de MySQL:

Haciendo que PHP-FPM use una conexión TCP (opcional)
Por defecto, PHP-FPM está escuchando en el socket /var/run/php5-fpm.sock. También es posible hacer que PHP-FPM use una conexión TCP. Para hacer esto, abre /etc/php5/fpm/pool.d/www.conf…
nano /etc/php5/fpm/pool.d/www.conf… y haz que la línea listen se vea así:
[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]Esto hará que PHP-FPM escuche en el puerto 9000 en la IP 127.0.0.1 (localhost). Asegúrate de usar un puerto que no esté en uso en tu sistema.
Luego recarga PHP-FPM:
systemctl reload php5-fpm.serviceA continuación, revisa tu configuración de Nginx y todos tus vhosts y cambia la línea fastcgi_pass unix:/var/run/php5-fpm.sock; a fastcgi_pass 127.0.0.1:9000;, por ejemplo, así:
nano /etc/nginx/sites-available/default[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # Con php5-cgi solo:
# fastcgi_pass 127.0.0.1:9000;
# # Con php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
}
[...] Finalmente, recarga Nginx:
systemctl reload nginx.serviceImagen de Máquina Virtual
Este tutorial está disponible como máquina virtual lista para usar en formato OVA / OVF para suscriptores de Howtoforge. El formato de la VM es compatible con VMWare y Virtualbox y probablemente algunas otras herramientas que pueden importar este formato. Puedes encontrar el enlace de descarga en el menú de la derecha en la parte superior. Haz clic en el nombre del archivo para comenzar la descarga.
Los detalles de inicio de sesión de la VM son:
Inicio de Sesión SSH
Nombre de usuario: root
Contraseña: howtoforge
Inicio de Sesión en MariaDB
Nombre de usuario: root
Contraseña: howtoforge
Por favor, cambia las contraseñas después del primer arranque.
La VM está configurada para la IP estática 192.168.1.100, la IP se puede cambiar en el archivo /etc/network/interfaces.
Enlaces
- nginx: http://nginx.net/
- wiki de nginx: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MariaDB: https://mariadb.org/
- Debian: http://www.debian.org/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.