Instalación Nginx · 6 min read · Oct 22, 2025

Instalando Nginx Con Soporte PHP5 (Y PHP-FPM) Y MySQL En CentOS 6.3

Instalando Nginx Con Soporte PHP5 (Y PHP-FPM) Y MySQL En CentOS 6.3

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 simple y bajo consumo de recursos. Este tutorial muestra cómo puedes instalar Nginx en un servidor CentOS 6.3 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 Habilitando Repositorios Adicionales

php-fpm no está disponible en los repositorios oficiales de CentOS, sino en el repositorio Remi RPM que a su vez depende del repositorio EPEL; podemos habilitar ambos repositorios de la siguiente manera:

rpm --import https://fedoraproject.org/static/0608B895.txt   
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi  
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install yum-priorities

Edita /etc/yum.repos.d/epel.repo…

vi /etc/yum.repos.d/epel.repo

… y agrega la línea priority=10 a la sección [epel]:

| [epel] name=Paquetes Extra para Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [...] |

Luego haz lo mismo para la sección [remi] en /etc/yum.repos.d/remi.repo, además cambia enabled a 1:

vi /etc/yum.repos.d/remi.repo

| [remi] name=Les RPM de remi pour Enterprise Linux $releasever - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority [remi-test] name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi |

3 Instalando MySQL 5

Primero instalamos MySQL 5 de esta manera:

yum install mysql mysql-server

Luego creamos los enlaces de inicio del sistema para MySQL (para que MySQL se inicie automáticamente cada vez que el sistema arranque) y comenzamos el servidor MySQL:

chkconfig --levels 235 mysqld on  
/etc/init.d/mysqld start

Ahora verifica que la red esté habilitada. Ejecuta

netstat -tap | grep mysql

Debería mostrar algo como esto:

[root@server1 ~]# netstat -tap | grep mysql  
tcp        0      0 *:mysql                     *:*                         LISTEN      1799/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 restart

Ejecuta

mysql_secure_installation

para 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í.

Ingresa la contraseña actual para root (presiona enter si no hay): <– ENTER
OK, se utilizó la contraseña correctamente, continuando…

¿Establecer contraseña de root? [Y/n] <– ENTER
Nueva contraseña: <– tucontraseñaderootsql
Reingresa 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 debería permitir que root se conecte desde ‘localhost’. Esto asegura que alguien no pueda adivinar la contraseña de root desde la red.

¿Deshabilitar inicio de sesión remoto para 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 eliminarse 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 tengan efecto 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 ~]#

4 Instalando Nginx

Nginx está disponible como un paquete para CentOS 6.3 (desde EPEL) que podemos instalar de la siguiente manera:

yum install nginx

Luego creamos los enlaces de inicio del sistema para nginx y lo iniciamos:

chkconfig --levels 235 nginx on  
/etc/init.d/nginx start

Escribe 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:

5 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 ocupados). 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 de la siguiente manera:

yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

APC es un caché de opcodes PHP gratuito y de código abierto para almacenar en caché y optimizar el código intermedio de PHP. 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.

APC se puede instalar de la siguiente manera:

yum install php-pecl-apc

Luego 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 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 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.)

Además de eso, para evitar errores como

[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): No es seguro confiar en la configuración de zona horaria del sistema. Se *requiere* usar la configuración date.timezone o la función date_default_timezone_set(). En caso de que hayas utilizado alguno de esos métodos y aún estés recibiendo esta advertencia, lo más probable es que hayas escrito mal el identificador de zona horaria. Seleccionamos 'Europe/Berlin' para 'CEST/2.0/DST' en su lugar en /usr/share/nginx/html/info.php en la línea 2

… en /var/log/php-fpm/www-error.log cuando llamas a un script PHP en tu navegador, debes establecer date.timezone en /etc/php.ini:

| [...] [Date] ; Define la zona horaria predeterminada utilizada por las funciones de fecha ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |

Puedes averiguar la zona horaria correcta para tu sistema ejecutando:

cat /etc/sysconfig/clock
[root@server1 nginx]# cat /etc/sysconfig/clock  
ZONE="Europe/Berlin"  
[root@server1 nginx]#

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 start

PHP-FPM es un proceso daemon (con el script de inicio /etc/init.d/php-fpm) que ejecuta un servidor FastCGI en el puerto 9000.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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