Nginx y PHP · 7 min read · Jan 25, 2026
Instalando Nginx Con Soporte PHP5 (Y PHP-FPM) Y MySQL En Fedora 15
Instalando Nginx Con Soporte PHP5 (Y PHP-FPM) Y MySQL En Fedora 15
Versión 1.0
Autor: Falko Timme
Sígueme en Twitter
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 sencilla y bajo consumo de recursos. Este tutorial muestra cómo puedes instalar Nginx en un servidor Fedora 15 con soporte para PHP5 (a través de PHP-FPM) y soporte para MySQL.
¡No garantizo 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
Primero instalamos MySQL 5 de la siguiente manera:
yum install mysql mysql-serverLuego creamos los enlaces de inicio del sistema para MySQL (para que MySQL se inicie automáticamente cada vez que el sistema arranca) y comenzamos el servidor MySQL:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld startAhora verifica que la red esté habilitada. Ejecuta
netstat -tap | grep mysqlDebería mostrar algo como esto:
[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 1517/mysqld
[root@server1 ~]#Si no lo hace, edita /etc/my.cnf y comenta la opción skip-networking:
vi /etc/my.cnf| [...] #skip-networking [...] |
y reinicia tu servidor MySQL:
/etc/init.d/mysqld restartEjecuta
mysql_secure_installationpara establecer una contraseña para el usuario root (de lo contrario, ¡cualquiera puede acceder a tu base de datos MySQL!):
[root@server1 ~]# mysql_secure_installation
NOTA: ¡SE RECOMIENDA EJECUTAR TODAS LAS PARTES DE ESTE SCRIPT PARA TODOS LOS SERVIDORES MySQL EN USO EN PRODUCCIÓN! ¡LEA CADA PASO CUIDADOSAMENTE!
Para iniciar sesión en MySQL y asegurarla, necesitaremos la contraseña actual para el usuario root. Si acabas de instalar MySQL y no has establecido la contraseña de root aún, la contraseña estará en blanco, así que solo debes presionar enter aquí.
Introduce la contraseña actual para root (presiona enter si no hay): <– ENTER
OK, se utilizó la contraseña correctamente, continuando…
Establecer la contraseña de root asegura que nadie pueda iniciar sesión en el usuario root de MySQL sin la autorización adecuada.
¿Establecer contraseña de root? [Y/n] <– ENTER
Nueva contraseña: <– tucontraseñaderootsql
Reingresa la nueva contraseña: <– tucontraseñaderootsql
¡Contraseña actualizada con éxito!
Recargando tablas de privilegios..
… ¡Éxito!
Por defecto, una instalación de MySQL tiene un usuario anónimo, permitiendo que cualquiera inicie sesión en MySQL sin tener que tener una cuenta de usuario creada para ellos. Esto está destinado solo para pruebas, y para hacer que la instalación sea un poco más fluida. Debes eliminarlos antes de pasar a un entorno de producción.
¿Eliminar usuarios anónimos? [Y/n] <– ENTER
… ¡Éxito!
Normalmente, solo se debe permitir que root se conecte desde ‘localhost’. Esto asegura que alguien no pueda adivinar la contraseña de root desde la red.
¿Deshabilitar el inicio de sesión remoto de root? [Y/n] <– ENTER
… ¡Éxito!
Por defecto, MySQL viene con una base de datos llamada ‘test’ a la que cualquiera puede acceder. Esto también está destinado solo para pruebas, y debe ser eliminado antes de pasar a un entorno de producción.
¿Eliminar la base de datos de prueba y el acceso a ella? [Y/n] <– ENTER
- Eliminando base de datos de prueba…
… ¡Éxito! - Eliminando privilegios sobre la base de datos de prueba…
… ¡Éxito!
Recargar las tablas de privilegios asegurará que todos los cambios realizados hasta ahora surtan efecto de inmediato.
¿Recargar tablas de privilegios ahora? [Y/n] <– ENTER
… ¡Éxito!
Limpiando…
¡Todo listo! Si has completado todos los pasos anteriores, tu instalación de MySQL debería estar ahora segura.
¡Gracias por usar MySQL!
[root@server1 ~]#
3 Instalando Nginx
Nginx está disponible como un paquete para Fedora 15 que podemos instalar de la siguiente manera:
yum install nginxLuego creamos los enlaces de inicio del sistema para nginx y lo iniciamos:
chkconfig --levels 235 nginx on
/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 página de bienvenida de nginx:

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). Hay un paquete php-fpm en los repositorios oficiales de Fedora 15, por lo tanto, podemos instalar php-fpm junto con php-cli y algunos módulos de PHP5 como php-mysql que necesitas si deseas usar MySQL desde tus scripts PHP:
yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidyLuego abre /etc/php.ini y establece cgi.fix_pathinfo=0:
vi /etc/php.ini| [...] ; cgi.fix_pathinfo proporciona soporte *real* para PATH_INFO/PATH_TRANSLATED para CGI. El comportamiento anterior de PHP era establecer PATH_TRANSLATED a SCRIPT_FILENAME, y no entender qué es PATH_INFO. Para más información sobre PATH_INFO, consulta las especificaciones de cgi. Establecer esto a 1 hará que PHP CGI corrija sus rutas para conformarse 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://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |
(Consulta http://wiki.nginx.org/Pitfalls para averiguar por qué deberías hacer esto.)
A continuación, crea los enlaces de inicio del sistema para php-fpm y inícialo:
chkconfig --levels 235 php-fpm on
/etc/init.d/php-fpm startPHP-FPM es un proceso daemon (con el script de inicio /etc/init.d/php-fpm) que ejecuta un servidor FastCGI en el puerto 9000.
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.codemongers.com/NginxFullExample y aquí: http://wiki.codemongers.com/NginxFullExample2)
Primero (esto es opcional) puedes aumentar el número de procesos de trabajo y establecer el keepalive_timeout a un valor razonable:
| [...] worker_processes 5; [...] keepalive_timeout 2; [...] |
Los hosts virtuales se definen en contenedores server {}. El vhost predeterminado se define en el archivo /etc/nginx/conf.d/default.conf - modifiquémoslo de la siguiente manera:
vi /etc/nginx/conf.d/default.conf| [...] server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # redirigir las páginas de error del servidor a la página estática /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy de los scripts PHP a Apache escuchando en 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pasar los scripts PHP al servidor FastCGI escuchando en 127.0.0.1:9000 # location ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; include fastcgi_params; } # 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 esto un vhost predeterminado que captura todo (por supuesto, también puedes especificar un nombre de host aquí como www.example.com).
En la parte location /, he agregado index.php a la línea de índice. root /usr/share/nginx/html; significa que la raíz del documento es el directorio /usr/share/nginx/html.
La parte importante para PHP es la estrofa location ~ .php$ {}. Descoméntala para habilitarla. Cambia la línea root a la raíz del documento del sitio web (por ejemplo, root /usr/share/nginx/html;). Asegúrate de cambiar la línea fastcgi_param a fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; porque de lo contrario el intérprete de PHP no encontrará el script PHP que llamas en tu navegador.
Ahora guarda el archivo y reinicia nginx:
/etc/init.d/nginx restartAhora crea el siguiente archivo PHP en la raíz del documento /usr/share/nginx/html…
vi /usr/share/nginx/html/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, incluido el módulo de MySQL:

6 Enlaces
- nginx: http://nginx.org/
- Wiki de nginx: http://wiki.nginx.org/
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- Fedora: http://fedoraproject.org/
Sobre El Autor
Falko Timme es el propietario de Timme Hosting (alojamiento web nginx ultra-rápido). Es el mantenedor principal de HowtoForge (desde 2005) y uno de los desarrolladores principales de ISPConfig (desde 2000). También ha contribuido al libro de O’Reilly “Administración de Sistemas Linux”.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.