PHP, Apache, CentOS · 5 min read · Dec 30, 2025

Usando PHP5-FPM Con Apache2 En CentOS 6.3

Usando PHP5-FPM Con Apache2 En CentOS 6.3

Versión 1.0
Autor: Falko Timme
Sígueme en Twitter

Este tutorial muestra cómo puedes instalar un servidor web Apache2 en un servidor CentOS 6.3 con soporte para PHP5 (a través de PHP-FPM) y MySQL. 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 para sitios más concurridos.

¡No emito ninguna garantía de 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

Necesitamos instalar mod_fastcgi más adelante, que está disponible en los repositorios de RPMforge. RPMforge se puede habilitar de la siguiente manera:

rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
cd /tmp  
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm  
rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

php-fpm no está disponible en los repositorios oficiales de CentOS, sino en el repositorio RPM de Remi, 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 añade 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

Para instalar MySQL, hacemos esto:

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 arranca) y comenzamos el servidor MySQL:

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

Establece contraseñas para la cuenta root de MySQL:

mysql_secure_installation

[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 CUIDADOSAMENTE CADA PASO!

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):
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 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 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 tengan efecto inmediatamente.

¿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 Apache2

Apache2 está disponible como un paquete de CentOS, por lo tanto, podemos instalarlo así:

yum install httpd

Ahora configura tu sistema para iniciar Apache al arrancar…

chkconfig --levels 235 httpd on

… y comienza Apache:

/etc/init.d/httpd start

Ahora dirígete a tu navegador a http://192.168.0.100, y deberías ver la página de marcador de posición de Apache2:

La raíz del documento por defecto de Apache es /var/www/html en CentOS, y el archivo de configuración es /etc/httpd/conf/httpd.conf. Las configuraciones adicionales se almacenan en el directorio /etc/httpd/conf.d/.

5 Instalando PHP5

Podemos hacer que PHP5 funcione en Apache2 a través de PHP-FPM y el módulo mod_fastcgi de Apache que instalamos de la siguiente manera:

yum install mod_fastcgi php-fpm

Luego abre /etc/php.ini:

vi /etc/php.ini

Para evitar errores como

[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /usr/share/nginx/html/info.php on line 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.

A continuación, reinicia Apache:

/etc/init.d/httpd restart
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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