PHP, Nginx, Ubuntu · 4 min read · Jan 23, 2026
Instalando PHP 5.3, Nginx Y PHP-fpm En Ubuntu/Debian
Instalando PHP 5.3, Nginx Y PHP-fpm En Ubuntu/Debian
Versión 1.1
Sígueme en Twitter
Dado que Apache es la mayoría de las veces un proceso que consume mucha memoria, la gente comenzó a buscar diferentes formas de alojar su sitio web. Apache claramente no es el único servidor web disponible. Algunos buenos ejemplos son lighttpd y nginx. En este tutorial te mostraré cómo instalarlo en tu servidor Ubuntu. Este tutorial también se aplica a Debian, aunque hay solo una diferencia muy pequeña.
¿Listo? Comencemos, ¿verdad?
Paso 0 - Notas Preliminares
Para completar este tutorial, asumo que has instalado un sistema base de Debian o Ubuntu. Cómo se puede hacer esto, se puede leer en diferentes tutoriales. Este tutorial solo se centra en hacer que nginx+php funcione sin muchas complicaciones.
Paso 1 - Nginx
Instalar nginx es el primer paso que tenemos que hacer. Esto se puede hacer fácilmente descargándolo del repositorio.
sudo apt-get install nginxEl vhost predeterminado debe ser cambiado para funcionar correctamente.
sudo vim /etc/nginx/sites-available/defaultUn buen punto de partida para tu configuración es:
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
## Ubicación predeterminada
location / {
root /var/www;
index index.php;
}
## Las imágenes y el contenido estático se tratan de manera diferente
location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
access_log off;
expires 30d;
root /var/www;
}
## Analiza todos los archivos .php en el directorio /var/www
location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass backend;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
## Deshabilitar la visualización de .htaccess y .htpassword
location ~ /\.ht {
deny all;
}
}
upstream backend {
server 127.0.0.1:9000;
}
Ok, hemos terminado aquí. Ahora instalaremos los archivos necesarios para PHP.
Paso 2 - Instalando PHP
Muchos sitios dependen de PHP para proporcionarles contenido dinámico, ya sea un wiki, software de foro, weblog o algo completamente diferente.
Si estás ejecutando Ubuntu, primero debemos resolver dos dependencias requeridas para los paquetes dotdeb. Si estás ejecutando la versión amd64, debes reemplazar i386 con amd64.
¡Para Debian no tendrás que hacer esto!
cd /tmpwget http://us.archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb53_1.6.dfsg.4~beta1-5ubuntu2_i386.debwget http://us.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu38_3.8-6ubuntu0.2_i386.debsudo dpkg -i *.debNuevamente, esto es solo necesario si estás en Ubuntu.
El resto del tutorial se aplica tanto a Ubuntu como a Debian.
Tendremos que agregar el repositorio dotdeb a las fuentes de APT, para que podamos usar su PHP 5.3 empaquetado y php-fpm:
sudo echo "deb http://php53.dotdeb.org stable all" >> /etc/apt/sources.listActualiza apt:
sudo apt-get updateEl texto resultante debería incluir dotdeb.
Ahora instalaremos PHP (parte 1):
sudo apt-get install php5-cli php5-common php5-suhosinDebemos instalar el cli antes que el resto, porque esto causará problemas más adelante.
sudo apt-get install php5-fpm php5-cgiSi planeas usar una base de datos o necesitas módulos específicos (mcrypt, ldap, snmp, etc.) también puedes instalarlos.
Ok, así que ahora tenemos nginx y PHP.
Una pequeña observación: Si estás usando “etiquetas cortas de PHP” ( ) debes habilitarlas en tus archivos php.ini (tanto para fpm como para cli). Si no cambias esto, ¡verás tu código en texto plano!
Paso 3 - Finalizando
Reinicia nginx para ponerte al día con los cambios de configuración que hicimos anteriormente.
sudo /etc/init.d/nginx restartEl reinicio debería haberse realizado sin problemas.
Después de instalar php5-fpm, debería haberse iniciado. Si cambiaste tus archivos php.ini, debes reiniciar php5-fpm.
sudo /etc/init.d/php5-fpm restartMuy bien. Ahora deberían estar ambos en funcionamiento.
Paso 4 - Pruebas
Para probar si la ejecución de PHP está funcionando, crea un archivo index.php en /var/www con el siguiente contenido:
Visita tu servidor web y deberías poder ver el phpinfo generado. Si no, algo salió mal.
Paso 5 - Solución de Problemas & Notas Finales
Si no viste el phpinfo, puede haber algo mal. Para rastrear lo que salió mal, puedes verificar el registro de errores de nginx:
sudo tail /var/log/nginx/error.logRecuerda, si cambiaste tu php.ini debes reiniciar php5-fpm. Reiniciar nginx no es necesario.
En mi configuración de ejemplo, he habilitado la interceptación de errores de fastcgi. Si ocurre un error grave (por ejemplo, un “no se puede redeclarar la clase xyz”), nginx puede capturar esta página y mostrar una página de error “agradable” que algo salió mal. De esta manera, se proporciona menos información en caso de que algo esté saliendo muy mal.
Si no te gusta esto, puedes desactivarlo.
Si php5-fpm no está en funcionamiento, tus archivos PHP no pueden ser analizados y nginx mostrará al usuario una página de error.
Bueno, creo que hemos terminado y ahora puedes servir PHP con tu nuevo servidor web basado en nginx. Nginx es bastante agradable y puedes configurar mucho. Si necesitas reescrituras, ten en cuenta que nginx no funciona con archivos .htaccess. Necesitarás cambiar la configuración de tu vhost para que las reescrituras funcionen.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.