Cómo instalar LAMP en CentOS 8 / CentOS Stream 8

En este artículo veremos cómo instalar LAMP en CentOS 8 / CentOS Stream 8 paso a paso, de modo que tendrás disponible esta pila de Apache, PHP y MariaDB/MySQL para las aplicaciones que lo requieran en tu servidor o VPS CentOS.

Antes de instalar LAMP en CentOS 8

Para seguir esta guía de instalación LAMP en CentOS 8 / CentOS Stream 8 necesitas partir de la siguiente base:

  • Un sistema CentOS 8 / CentOS Stream 8 actualizado.
  • Acceso a terminal de comandos con un usuario con permisos de sudo o el mismo usuario root.
  • Conexión a Internet.

Una pila o entorno LAMP se basa en un sistema Linux con servidor web Apache, el lenguaje del lado de servidor PHP y motor de bases de datos MySQL o MariaDB. En esta guía instalaremos estos componentes, pero tienes guías específicas para cada uno de ellos en este mismo sitio.

Cómo instalar LAMP en CentOS 8

Para instalar una pila LAMP en CentOS 8 podemos usar los paquetes disponibles en los repositorios de la distribución y los del repositorios alternativo de Remi (para usar versiones de PHP más avanzadas o que incluyen extensiones extra).

En cuanto a PHP, el módulo activado por defecto es el de la versión 7.2, que a día de hoy puede resultar un tanto obsoleta, por lo que seguramente necesitarás activar un módulo de alguna versión más reciente. La distribución dispone de las versiones 7.2, 7.3, 7.4, 8.0 y 8.2.

Sin embargo, si necesitas una versión más moderna, como la 8.3, o requieres de ciertas extensiones (como la extensión sodium) hay que instalar el repositorio alternativo:

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

En cualquier caso, actualizamos los repositorios:

~$ sudo yum update -y

Y desactivamos el módulo actual:

~$ sudo yum module disable -y php

Y activamos el que nos interese. Si se trata de una versión de la distribución el módulo se denominará como php:XY, donde X.Y es la versión; por ejemplo, para la versión 8.2:

~$ sudo yum module enable -y php:8.2

Pero si se trata de un módulo del repositorio alternativo se denominará como php:remi-X.Y; por ejemplo, para la versión 8.3:

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

Instalación del servicio web y PHP

Empezaremos instalando los paquetes comunes correspondientes al servidor web Apache, PHP y la extensión de PHP para conexión a bases de datos. Instalaremos estos paquetes con yum:

~$ sudo yum install -y httpd php php-mysqlnd

Se crean los servicios httpd.service y php-fpm.service que no están iniciados ni habilitados para iniciar automáticamente junto a CentOS 8.

Iniciaremos y habilitaremos los servicios para su inicio automático con el sistema:

~$ sudo systemctl enable --now php-fpm httpd

Por otro lado, tienes dos posibilidades a la hora de instalar la pila LAMP, según si prefieres usar MySQL o MariaDB como servicio de bases de datos.

Instalación del motor de base de datos

Si prefieres usar MySQL Server 8 instala el paquete mysql-server:

~$ sudo yum install -y mysql-server

El servicio que se crea es mysqld.service, procedemos a iniciarlo y habilitarlo:

~$ sudo systemctl enable --now mysqld

MariaDB

CentOS 8 tiene activado por defecto el módulo de la versión 10.3 de este motor de base de datos. Si necesitas una versión más avanzada habrá que elegir otro módulo (el 10.5 ó el 10.11), así que desactivamos el módulo actual:

~$ sudo yum module disable -y mariadb

Y activamos el módulo deseado (se recomienda la versión 10.11 por tener soporte largo):

~$ sudo yum module enable -y mariadb:10.11

Sea cual sea la opción que hayas elegido, el paquete que hay que instalar es mariadb-server:

~$ sudo yum install -y mariadb-server

Se crea el servicio mariadb.service, que tendremos que arrancar y habilitar:

~$ sudo systemctl enable --now mariadb

Configurando el firewall de CentOS 8

Si quieres que el servidor web sea accesible desde la red debes proporcionar una regla o excepción para el firewall:

~$ sudo firewall-cmd --permanent --add-service={http,https}

Si sólo quieres ofrecer el servicio HTTP entonces puedes especificar unicamente ese protocolo:

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

Hay que recargar la configuración del firewall para aplicar los cambios:

~$ sudo firewall-cmd --reload

Probando el servicio

Para probar la integración del servidor web con PHP, crearemos un script de prueba en este lenguaje:

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

Y pondremos este contenido:

<?php phpinfo();

Accedemos a través de un navegador, indicando la dirección del servidor y la ruta /info.php (en este ejemplo, http://centos8.local.lan/info.php).

como instalar lamp en centos 8 / centos stream 8

Obviamente, se mostrará información de la versión instalada.

como instalar y configurar la pila lamp en centos 8 / centos stream 8

Cómo configurar la pila LAMP en CentOS 8

Los servicios ya están configurados por defecto, pero es necesario realizar unos mínimos y rápidos ajustes.

Servicio web

El servidor web funciona bien con los valores por defecto, pero para ajustes avanzados puede interesarte nuestra guía de instalación de Apache en CentOS 8.

Configurar PHP

El archivo principal de configuración es php.ini que debemos editar:

~$ sudo nano /etc/php.ini

Buscamos la directiva date.timezone:

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

Está desactivada, hay que darle el valor de la zona horaria que nos interese:

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

Puedes consultar los valores posibles para esta directiva en http://php.net/date.timezone.

Si tu servidor LAMP CentOS 8 es para producción y funcionamiento expuesto al público hemos terminado, pero si es para desarrollo necesitas configurar algunos valores de tratamiento de errores.

Busca las siguientes directivas:

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

Y cambia los valores adecuados para desarrollo:

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

Tras hacer cualquier cambio en la configuración del archivo php.ini es necesario recargar el servicio php-fpm:

~$ sudo systemctl reload php-fpm

Configurar el motor de bases de datos

MySQL

Por defecto se crea una cuenta de root sin contraseña, lo que puede suponer un problema de seguridad enorme si no se soluciona. Para ello conectaremos con el sistema:

~$ mysql -u root

Creamos un usuario administrador alternativo con contraseña:

> create user instalador identified by 'XXXXXXXX';
> grant all privileges on *.* to instalador with grant option;

De esta forma garantizamos poder conectar al servicio si cometemos algún error en la configuración de root.

Cerramos la conexión:

> exit

Editamos el archivo de configuración principal del servicio:

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

Y dentro de la sección [mysqld] añadimos la siguiente directiva plugin_load_add:

...
[mysqld]
...
plugin-load-add=auth_socket.so

Guardamos los cambios y reiniciamos el servicio:

~$ sudo systemctl restart mysqld

Iniciamos sesión con el usuario administrador nuevo (y su contraseña):

~$ mysql -u instalador -p

Cambiamos el método de conexión del usuario root:

> alter user root@localhost identified with auth_socket;

Y cerramos la conexión.

A partir de este momento podemos administrar el servicio con el usuario administrador alternativo (y su contraseña) o con root a través de sudo:

~$ sudo mysql

MariaDB

El servicio usa por defecto el juego de caracteres latin1, cuando lo recomendable sería utilizar el UTF-8. Para hacer el cambio editamos el archivo de configuración:

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

Y añadimos estas dos líneas en la sección [server]:

...
[server]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
...

Guardamos el archivo y reiniciamos el servicio:

~$ sudo systemctl restart mariadb

Podemos aprovechar para crear un usuario administrador con contraseña que pueda utilizarse de forma remota, a través de frontends, etc., conectando con el servicio:

~$ sudo mysql

Creamos el usuario con su contraseña y le damos privilegios:

> grant all privileges on *.* to instalador identified by 'XXXXXXXX' with grant option;

Cerramos sesión:

> exit

Y probamos nuestro nuevo usuario:

~$ mysql -u instalador -p
Enter password:
...
>

Conclusión

Ahora que sabes cómo instalar una pila o stack LAMP en CentOS 8 / CentOS Stream 8 ya puedes dar soporte a aplicaciones y CMS que lo requieren, o realizar tus propios desarrollos web avanzados.

Si tienes dudas o preguntas, alguna sugerencia, etc. puedes dejar un comentario.

¡Apoya esta entrada!

¿Te ha servido esta guía de instalación LAMP en CentOS 8 / CentOS Stream 8 para montar tu servidor? Si es así y deseas agradecérnoslo, cualquier mínima contribución ayuda al mantenimiento de este sitio y elaboración de nuevos tutoriales y guías.

Puedes ayudarnos dejando tan sólo 1 $ de propina deshaciéndote de la calderilla que no usas en PayPal:

O, si te sientes especialmente generoso, puedes invitarnos a un café:

¡Gracias!

Valora esta entrada

5/5 - (4 votos)

12 comentarios en «Cómo instalar LAMP en CentOS 8 / CentOS Stream 8»

  1. Hola. Excelente aporte, me gustaría saber qué hay que hacer cuando tienes activado SELinux en CentOS 8, así lo requerimos por seguridad institucional. Al probar el script de php.info no se despliega y por ende no se puede ejecutar la instalación desde web, por lo que creo son permisos de SELinux, si tienes la oportunidad de publicar los pasos que se deben ejecutar de SELinux en tu aporte sería altamente agradecido. El Firewall está correcto y habilitados los servicios http y https.

    Saludos y gracias de antemano.

    Responder

Deja un comentario