En esta entrada explicamos cómo instalar una pila LEMP en CentOS 7 paso a paso, de modo que al final del tutorial tendrás montado en tu servidor o VPS CentOS el entorno formado por Nginx, PHP y MariaDB/MySQL totalmente operativo.
Contenido
Antes de instalar LEMP en CentOS 7
Si tienes intención de seguir esta guía de instalación y configuración LEMP en CentOS 7 deberías satisfacer estos requisitos básicos:
- Una instalación actualizada de CentOS 7.
- Los repositorios EPEL y Remi.
- Un usuario con permisos de sudo o el propio root.
- Acceso a Internet.
Si no tienes los repositorios necesarios instalados, puedes seguir con esta guía, ya que los instalaremos de forma exprés, sin abundar en explicaciones.
Cómo instalar LEMP en CentOS 7
Para instalar la pila LEMP en CentOS 7 es necesario utilizar los repositorios EPEL y Remi, ya que uno incluye los paquetes de Nginx y el otro los de las versiones actualizadas de PHP.
Si no tienes estos repositorios en tu sistema, en unos instantes los instalaremos, empezando por la actualización de las listas de paquetes:
~$ sudo yum update
Instalamos los repositorios y las herramientas de yum:
~$ sudo yum install -y yum-utils https://rpms.remirepo.net/enterprise/remi-release-7.rpm
Habilitamos el repositorio de PHP 7.4:
~$ sudo yum-config-manager --enable remi-php74
Si estás interesado en otras versiones de PHP, puedes usar remi-php70, remi-php71, remi-php72, remi-php73 o remi-php80 en el anterior comando.
Finalmente actualizamos listas y paquetes instalados.
~$ sudo yum update -y
Ahora tenemos la base necesaria para empezar a trabajar.
LEMP con MariaDB
Para instalar la pila LEMP en CentOS 7 con MariaDB como servicio de bases de datos, ya podemos hacerlo con yum:
~$ sudo yum install -y nginx php-fpm php-mysqlnd mariadb-server
Tras la descarga e instalación de todos estos paquetes y sus dependencias, se crearán los tres nuevos servicios que componen la pila LEMP en nuestro sistema CentOS 7, nginx.service, php-fpm.service y mariadb.service, aunque usaremos las versiones más cortas de sus nombres, nginx, php-fpm y mariadb.
Ninguno de estos servicios está iniciado ni habilitado para el arranque automático con el sistema, así que los activaremos e iniciaremos mediante el comando systemctl:
~$ sudo systemctl enable --now php-fpm mariadb nginx
Ahora los tres servicios están iniciados y listos para recibir conexiones, como podemos comprobar en cualquier momento con el comando systemctl status php-fpm mariadb nginx
:
LEMP con MySQL Server
Si prefieres instalar una pila LEMP en CentOS 7 con MySQL puedes instalar los paquetes que forman la base:
~$ sudo yum install -y nginx php-fpm php-mysql
Y posteriormente seguir la guía de instalación y configuración de MySQL Server en CentOS 7.
El resto de esta guía sigue siendo aplicable (excepto lo relativo a MariaDB).
Configurar el firewall de CentOS 7 para la pila LEMP
Lo habitual es que el firewall de CentOS 7 esté activado y bloqueando el acceso al servidor web de la pila LEMP, por lo que debemos abrir los puertos necesarios:
~$ sudo firewall-cmd --permanent --zone=public --add-service={http,https}
Si no vas a ofrecer contenido mediante conexiones seguras, puedes abrir solamente el servicio HTTP estándar:
~$ sudo firewall-cmd --permanent --zone=public --add-service=http
En cualquier caso, tras añadir la regla del firewall es necesario cargar la nueva configuración:
~$ sudo firewall-cmd --reload
Podemos comprobar que el servidor web es accesible mediante un navegador, introduciendo como URL la dirección IP o dominio de la máquina CentOS 7:
Cómo configurar LEMP en CentOS 7
Debemos configurar los elementos de la pila LEMP en CentOS 7, ya que a pesar de que los servicios están en funcionamiento necesitamos conectar el servidor web con el servicio PHP-FPM.
Configuración de PHP
Editamos el archivo php.ini para realizar algunos ajustes:
~$ sudo nano /etc/php.ini
Un ajuste que vas a querer hacer es configurar la zona horaria del servidor para que las aplicaciones web la reflejen correctamente. Para ello buscamos la directiva date.timezone:
... [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone ;date.timezone = ...
Descomentamos esta directiva y le asignamos su valor según nos interese:
... date.timezone = Europe/Madrid ...
Puedes consultar el valor para tu zona horaria en la documentación de PHP.
En cuanto al tratamiento de errores, si tu servidor CentOS 7 es para producción no tienes que modificar nada más, pero si es para desarrollo debes localizar las siguientes directivas y cambiar sus valores por los mostrados aquí:
... error_reporting = E_ALL ... display_errors = On ... display_startup_errors = On ...
De esta forma se mostrará información útil en el navegador en caso de error en las aplicaciones web.
Guardados los cambios, es necesario recargar la configuración del servicio:
~$ sudo systemctl reload php-fpm
Configuración del servicio de bases de datos
La instalación por defecto de MariaDB crea el usuario root sin contraseña, por lo que conviene pasar el script interactivo mysql_secure_installation:
~$ sudo mysql_secure_installation
Nos pedirá la contraseña actual de root:
... Enter current password for root (enter for none): ...
Como no tiene, presionamos intro directamente.
Nos preguntará si queremos crear la contraseña para root:
... Set root password? [Y/n] Y ...
Contestamos que sí y tendremos que introducir la contraseña y confirmarla:
... New password: Re-enter new password: ...
A continuación se nos preguntará sobre diversos aspectos a lo que debemos contestar afirmativamente (Y).
Ya tenemos el servicio de bases de datos asegurado y el usuario root con contraseña.
Configuración del servidor web
Creamos una configuración especial para conectar al servicio PHP-FPM:
~$ sudo nano /etc/nginx/default.d/php-fpm.conf
El contenido será este:
index index.php index.html index.htm; location ~ \.php$ { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; }
Será necesario recargar la configuración del servidor web para aplicar los cambios:
~$ sudo systemctl reload nginx
Cómo probar la pila LEMP en CentOS 7
Para comprobar la conexión entre el servidor web y el servicio PHP-FPM crearemos un pequeño script en PHP fácilmente accesible vía web:
~$ sudo nano /usr/share/nginx/html/info.php
Con la función phpinfo() como contenido:
<?php phpinfo();
Ahora accederemos mediante un navegador añadiendo la ruta /info.php a la dirección IP o dominio del servidor CentOS 7:
Justo lo que esperábamos. Buceando en la información que nos ofrece esta página también encontraremos que las extensiones de PHP para acceder a MariaDB/MySQL están cargadas.
Conclusión
Ahora que sabes cómo instalar una pila LEMP en CentOS 7 puedes sacarle todo el potencial a tu servidor o VPS montando aplicaciones web sobre esta versátil y potente plataforma.
En caso de sugerencias, errores, dudas o preguntas, un comentario es una buena idea.
¡Apoya comoinstalar.me!
Y si gracias a esta guía de instalación y configuración de la pila LEMP en CentOS 7 ya la tienes funcionando en tu sistema, y te apetece agradecérnoslo, una mínima aportación ayudará al mantenimiento de este sitio y a la creación y elaboración de nuevas guías.
Puedes hacerlo dejando 1 $ de propina con PayPal:
O, si te sientes especialmente agradecido, invitándonos a un café:
¡Gracias!