Cómo instalar LEMP en CentOS 8

En este artículo veremos cómo instalar la pila LEMP en CentOS 8 paso a paso, de modo que obtengamos un sistema Linux con Nginx, MariaDB/MySQL y PHP en nuestro servidor o VPS CentOS sobre el que poder desarrollar o instalar potentes aplicaciones web.

Antes de instalar la pila LEMP en CentOS 8

Para poder seguir los pasos de esta guía de instalación de la pila LEMP en CentOS 8 será importante cumplir estos requisitos:

  • Una máquina CentOS 8 actualizada.
  • Acceso a línea de comandos con un usuario con permisos de sudo.
  • Conexión a Internet.

Cómo instalar la pila LEMP en CentOS 8

Para instalar la pila LEMP en CentOS 8 es recomendable instalar el repositorio Remi, con el fin de tener disponibles versiones de PHP posteriores a la 7.2, que es la que viene incluida en los repositorios del sistema.

Añadimos el repositorio Remi:

~$ sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Desactivamos el módulo de PHP actual (versión 7.2):

~$ sudo yum module disable -y php

Y activamos el módulo de la versión de PHP que nos interese, en este caso será la 7.4:

~$ sudo yum module enable -y php:remi-7.4

Recuerda que también puedes instalar otras versiones, indicando en el comando anterior php:remi-7.3 ó php:remi-8.0.

Instalación de los componentes

Para instalar la pila LEMP con MariaDB instalamos los siguientes paquetes:

~$ sudo yum install -y nginx php-fpm php-mysqlnd mariadb-server

Sin embargo, si estamos interesados en MySQL instalaremos estos otros:

~$ sudo yum install -y nginx php-fpm php-mysqlnd mysql-server

Una vez finalizada la descarga e instalación de estos paquetes y sus dependencias, se crean tres nuevos servicios en CentOS 8, los servicios nginx.service, php-fpm.service y mariadb.service/mysqld.service (también puedes usar los nombres cortos como nginx, php-fpm y mariadb/mysql).

Ninguno de estos servicios queda en ejecución tras la instalación, ni habilitados para su inicio automático, así que es algo que tendremos que hacer manualmente con el comando systemctl:

~$ sudo systemctl enable --now nginx mariadb php-fpm

O:

~$ sudo systemctl enable --now nginx mysqld php-fpm

Los comandos anteriores habilitan los tres servicios para su arranque automático en cada inicio de CentOS 8, y además los inicia de forma inmediata para no tener que esperar al siguiente inicio del sistema.

Podemos comprobar en cualquier momento el estado de los servicios con el comando systemctl status nginx mariadb php-fpmo con systemctl status nginx mysqld php-fpm:

como instalar la pila lemp en centos 8

Configurar el firewall de CentOS 8 para la pila LEMP

Como el firewall de CentOS 8 está activado por defecto, habría que añadir una serie de reglas para permitir el acceso al servicio LEMP desde red.

Para permitir el acceso estándar al servicio web añadimos la siguiente regla:

~$ sudo firewall-cmd --permanent --add-service=http

Si además vas a ofrecer contenido seguro también habría que permitir el acceso SSL:

~$ sudo firewall-cmd --permanent --add-service=https

Estos ajustes entran en funcionamiento tras recargar la configuración del firewall:

~$ sudo firewall-cmd --reload

Cómo configurar la pila LEMP en CentOS 8

Para configurar los elementos de la pila LEMP en CentOS 8 sólo tendremos que realizar unos pequeños ajustes que detallamos a continuación.

Nginx

El directorio para el sitio web por defecto debe ser cambiado, para lo que editamos el archivo de configuración nginx.conf:

~$ sudo nano /etc/nginx/nginx.conf

Buscamos la siguiente directiva dentro del bloque server:

...
    server {
       ...
        root         /usr/share/nginx/html;
...

Y cambiamos su valor por otra ubicación que ya está preparada:

...
        root         /var/www/html;
...

Terminados los cambios los aplicamos recargando la configuración del servicio:

~$ sudo systemctl reload nginx

PHP

El archivo de configuración de PHP se encuentra en la ruta /etc/php.ini, que editaremos para realizar algunos ajustes iniciales:

~$ sudo nano /etc/php.ini

Es interesante configurar la zona horaria con la que trabajará PHP, para lo que buscaremos la directiva date.timezone:

...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
...

La activaremos eliminando el carácter ; al inicio de línea y le daremos el valor apropiado correspondiente a la zona horaria deseada:

...
date.timezone = Europe/Madrid
...

Si no conoces el valor de tu zona horaria puedes consultarlo en la documentación en línea de PHP.

Por otro lado, la configuración por defecto de PHP está orientada a un entorno de producción, pero si en tu caso se trata de un entorno de desarrollo te interesará modificar algunos valores que permitan mostrar en el navegador los errores de las aplicaciones, con el fin de ayudar a depurarlos. Con tal fin buscamos las siguientes directivas:

...
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
...
display_errors = Off
...
display_startup_errors = Off
...

Y cambiamos sus valores actuales por estos otros:

...
error_reporting = E_ALL
...
display_errors = On
...
display_startup_errors = On
...

Observa que antes de cada directiva unos bloques de comentarios nos informan de los valores correspondientes de producción y desarrollo, por lo que es fácil volver al estado anterior.

Terminada la configuración y guardado el archivo, debemos recargar la configuración del servicio PHP:

~$ sudo systemctl reload php-fpm

MariaDB

Si has elegido este servicio de bases de datos debes tener en cuenta que el usuario root no tiene contraseña, por lo que puede que la primera acción que desees realizar sea crearla. Para ello conectamos con el cliente mysql:

~$ mysql -u root

Para crear (o cambiar) la contraseña del usuario root lanzaremos el siguiente comando:

> alter user root@localhost identified by 'XXXXXXXX';

Ya podemos cerrar la conexión:

> exit

Para volver a conectar la próxima vez será necesario indicar la contraseña con el parámetro -p:

~$ mysql -u root -p
Enter password:
...
MariaDB [(none)]>

Por otro lado, MariaDB usa por defecto el juego de caracteres latin1 en lugar del recomendable utf8 o utf8mb4.

Para cambiarlo, editamos el archivo de configuración del servidor de bases de datos:

~$ sudo nano /etc/my.cnf.d/mariadb-server.cnf

Y dentro de la sección server añadimos la siguiente directiva:

...
[server]
...
character_set_server = utf8mb4
...

Guardamos los cambios y reiniciamos el servicio:

~$ sudo systemctl restart mariadb

MySQL

En el caso de MySQL el único ajuste que habría que realizar es la creación de contraseña para el usuario root. El proceso sería exactamente el mismo descrito para MariaDB.

El juego de caracteres por defecto es utf8mb4.

Cómo probar la pila LEMP en CentOS 8

Creamos un archivo de prueba de PHP en el directorio de documentos del sitio web por defecto de Nginx:

~$ sudo nano /var/www/html/info.php

Con el contenido:

<?php phpinfo();

Guardamos los cambios y accedemos desde un navegador, indicando la dirección IP, dominio, nombre DNS, localhost, etc. seguido del nombre del archivo que acabamos de crear.

Por ejemplo, la máquina CentOS 8 sobre la que hemos desarrollado este tutorial es accesible en el subdominio centos8.local.lan, y hemos creado el archivo info.php, por lo que podemos usar http://centos8.local.lan/info.php como URL para la prueba.

instalar la pila lemp en centos 8

Con esta sencilla prueba veremos que PHP funciona, además obtendremos gran cantidad de información sobre su configuración actual, incluyendo la extensión para conectar con MariaDB/MySQL.

Conclusión

Ahora que sabes cómo instalar la pila LEMP en CentOS 8 tienes la base requerida para desarrollar tus propias aplicaciones web, o un requerimiento fundamental para instalar multitud de aplicaciones web de terceros.

¡Apoya comoinstalar.me!

¿Ya tienes instalada la pila LEMP en tu máquina CentOS 8? En tal caso, si te apetece agradecérnoslo puedes colaborar mínimamente con el mantenimiento de este sitio y la creación de más artículos dejando tan sólo 1 $ de propina con PayPal:

O, si te sientes especialmente agradecido, invitándonos a un café:

¡Gracias!

Valora esta entrada

5/5 - (1 voto)

Deja un comentario