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-tidyLuego 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 --helppara 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.pidPor 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.confLa 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 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 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
- nginx: http://nginx.net/
- Wiki de nginx: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- MySQL: http://www.mysql.com/
- Fedora: http://fedoraproject.org/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.