Nginx PHP MySQL · 3 min read · Dec 13, 2025

Instalando Nginx Con Soporte PHP5 Y MySQL En Fedora 13 - Página 2

4 Instalando PHP5

Podemos hacer que PHP5 funcione en nginx a través de FastCGI. No hay un paquete de demonio FastCGI independiente para Fedora, por lo tanto, usamos el paquete FastCGI de lighttpd (lighttpd-fastcgi) e instalamos junto con php-cli y algunos módulos de PHP5 como php-mysql que necesitas si quieres usar MySQL desde tus scripts PHP:

yum install lighttpd-fastcgi 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-tidy

Luego abre /etc/php.ini y agrega la línea cgi.fix_pathinfo = 1 justo al final del archivo:

vi /etc/php.ini

| [...] cgi.fix_pathinfo = 1 |

El paquete lighttpd-fastcgi viene con el ejecutable /usr/bin/spawn-fcgi que podemos usar para iniciar procesos FastCGI. Echa un vistazo a

spawn-fcgi --help

para aprender más sobre ello.

Para iniciar un demonio PHP FastCGI escuchando en el puerto 9000 en localhost y ejecutándose como el usuario y grupo nginx, ejecutamos el siguiente comando:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid

Por supuesto, no querrás escribir ese comando manualmente cada vez que inicies el sistema, así que para que el sistema ejecute el comando automáticamente al arrancar, abre /etc/rc.local…

vi /etc/rc.local

… y agrega el comando al final del archivo:

| [...] /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid |

5 Configurando nginx

La configuración de nginx está en /etc/nginx/nginx.conf que abrimos ahora:

vi /etc/nginx/nginx.conf

La configuración es fácil de entender (puedes aprender más sobre ello 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 {}. Vamos a modificar el vhost predeterminado de la siguiente manera:

| [...] 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 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; } # negar acceso a archivos .htaccess, si la raíz del documento de Apache # concuerda con la de nginx # location ~ /\.ht { deny all; } } [...] |

servername ; hace de este un vhost predeterminado que captura todo (por supuesto, también puedes especificar un nombre de host aquí como www.ejemplo.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 el bloque location ~ .php$ {}. Descoméntalo para habilitarlo. 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 restart

Ahora 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 FastCGI, como se muestra en la línea Server API. Si desplazas hacia abajo, verás todos los módulos que ya están habilitados en PHP5, incluido el módulo MySQL:

6 Enlaces

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.