Servidor web · 4 min read · Oct 24, 2025

Cómo instalar Nginx con PHP y MySQL (LEMP Stack) en CentOS 7

Nginx (pronunciado “engine x”) es un servidor HTTP gratuito, de código abierto y de alto rendimiento. Nginx es conocido por su estabilidad, conjunto de características ricas, configuración simple y bajo consumo de recursos. Este tutorial muestra cómo puedes instalar Nginx en un servidor CentOS 7 con soporte para PHP (a través de PHP-FPM) y soporte para MySQL (Mariadb).

1 Nota Preliminar

En este tutorial utilizo el nombre de host server1.example.com con la dirección IP 192.168.1.105. Estas configuraciones pueden diferir para ti, así que debes reemplazarlas donde sea apropiado.

2 Habilitando Repositorios Adicionales

Nginx no está disponible en los repositorios oficiales de CentOS, así que incluimos el repositorio del proyecto Nginx para instalarlo:

vi /etc/yum.repos.d/nginx.repo
 [nginx]
     name=nginx repo
     baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
     gpgcheck=0
     enabled=1

3 Instalando MySQL

Primero instalamos Mariadb. Mariadb es un fork gratuito de MySQL. Ejecuta este comando en la terminal:

yum install mariadb mariadb-server net-tools

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

systemctl enable mariadb.service  
systemctl start mariadb.service

Ahora verifica que la red esté habilitada. Ejecuta

netstat -tap | grep mysql

Debería mostrar algo como esto:

[root@example ~]# netstat -tap | grep mysql  
tcp 0 0 0.0.0.0:mysql 0.0.0.0:* LISTEN 10623/mysqld 

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@example ~]# mysql_secure_installation  
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB  
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
Para iniciar sesión en MariaDB y asegurarla, necesitaremos la contraseña  
actual para el usuario root. Si acabas de instalar MariaDB, y  
no has establecido la contraseña de root aún, la contraseña estará en blanco,  
por lo 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 MariaDB  
sin la autorización adecuada.
¿Establecer contraseña de root? [Y/n] <-- ENTER  
Nueva contraseña: <-- yourrootsqlpassword  
Reingresa la nueva contraseña: <-- yourrootsqlpassword  
¡Contraseña actualizada con éxito!  
Recargando tablas de privilegios..  
... ¡Éxito!
Por defecto, una instalación de MariaDB tiene un usuario anónimo, permitiendo que cualquiera  
pueda iniciar sesión en MariaDB sin tener que tener una cuenta de usuario creada para  
el. 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, MariaDB 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 en 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 MariaDB  
debería estar ahora segura.
¡Gracias por usar MariaDB!  
[root@example ~]#

[root@server1 ~]# mysql_secure_installation

4 Instalando Nginx

Nginx está disponible como un paquete de nginx.org que podemos instalar de la siguiente manera:

yum install nginx

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

systemctl enable nginx.service  
systemctl start nginx.service

Hay posibilidades de que obtengas un error como que el puerto 80 ya está en uso, el mensaje de error será algo como esto

[root@server1 ~]# service nginx start  
Iniciando nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)  
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)  
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)  
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)  
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)  
nginx: [emerg] still could not bind()  
                                               [FAILED]  
[root@server1 ~]#

Entonces significa que hay posibilidades de que el servicio de apache esté corriendo allí. Detén el servicio y luego inicia el servicio para NGINX de la siguiente manera

systemctl stop httpd.service  
yum remove httpd  
systemctl disable httpd.service
systemctl enable nginx.service  
systemctl start nginx.service

Y abre los puertos http y https en el firewall

firebase-cmd --permanent --zone=public --add-service=http  
firebase-cmd --permanent --zone=public --add-service=https  
firebase-cmd --reload

La salida resultante en la terminal se verá así:

[root@example ~]# firewall-cmd --permanent --zone=public --add-service=http  
success  
[root@example ~]# firewall-cmd --permanent --zone=public --add-service=https  
success  
[root@example ~]# firewall-cmd --reload  
success  
[root@example ~]#

Escribe la dirección IP o el nombre de host de tu servidor web en un navegador (por ejemplo, http://192.168.1.105), y deberías ver la página de bienvenida de nginx:

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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