Cómo instalar Linux, Apache, MariaDB y PHP (LAMP) en CentOS 8

Introducción

Un conjunto “LAMP” es un grupo de software de código abierto que generalmente se instala simultáneamente para permitir que un servidor aloje sitios web dinámicos. Asimismo, aplicaciones web escritas en PHP.

Este término es un acrónimo que representa el sistema operativo L inux, con el servidor web A pache. Los datos de back-end se almacenan en una base de datos M ariaDB y el procesamiento dinámico es manejado por P HP.

La capa de base de datos en un conjunto LAMP es típicamente un servidor de base de datos MySQL. Empero, antes del lanzamiento de CentOS 8, MySQL no estaba disponible desde los repositorios CentOS predeterminados.

Debido a esto, MariaDB, una bifurcación comunitaria de MySQL se convirtió en una alternativa ampliamente aceptada a MySQL. Esto como el sistema de base de datos predeterminado para los conjuntos LAMP en máquinas CentOS.

MariaDB funciona como un reemplazo directo para el servidor MySQL original. Esto en la práctica significa que puedes cambiar a MariaDB sin tener que hacer ningún cambio de configuración o código en tu aplicación.

En esta guía, instalarás LAMP en un servidor CentOS 8, utilizando MariaDB como sistema de gestión de base de datos.

Prerrequisitos

Para seguir esta guía, necesitarás acceso a un servidor CentOS 8 como usuario no root con privilegios de sudo y un firewall activo instalado en tu servidor. Para configurar esto, puedes seguir nuestra Guía de configuración básica de un servidor CentOS 8.

Paso 1 – Instalación del servidor web Apache

Para mostrar páginas web a los visitantes de nuestro sitio, vamos a emplear Apache, un servidor web de código abierto popular que se puede configurar para mostrar páginas PHP.

Utilizaremos el administrador de paquetes dnf, que es el nuevo administrador de paquetes predeterminado en CentOS 8, para instalar este software.

Debes instalar el paquete httpd con:

Cuando se te solicite, ingresa y para confirmar que deseas instalar Apache.

Una vez finalizada la instalación, ejecuta el siguiente comando para habilitar e iniciar el servidor:

En caso de que hayas habilitado el firewall firewalld según nuestra guía de configuración básica del servidor, deberás permitir conexiones a Apache. El siguiente comando habilitará permanentemente las conexiones HTTP, que se ejecutan en el puerto 80 de forma predeterminada:

Para verificar que se aplicó el cambio, puedes ejecutar:

Verás resultados como este:

Deberás volver a cargar la configuración del firewall para que los cambios surtan efecto:

Con la nueva regla de firewall agregada, puedes probar si el servidor está en funcionamiento accediendo a la dirección IP pública. También puedes ingresar el nombre de dominio de tu servidor desde tu navegador web.

Si no tienes un DNS apuntado a tu servidor y no conoces la dirección IP pública de tu servidor, puedes encontrarlo ejecutando el siguiente comando:

Esto imprimirá algunas direcciones IP. Puedes probar cada una de ellas en tu navegador web.

Como alternativa, puedes verificar qué dirección IP es accesible, como se ve desde otras ubicaciones en Internet:

Escribe la dirección que recibes en tu navegador web y te llevará a la página de destino predeterminada de Apache:

Si ves esta página, tu servidor web ahora está instalado correctamente.

Paso 2 – Instalar MariaDB

Ahora que tienes un servidor web en funcionamiento, necesitas instalar un sistema de base de datos para poder almacenar y administrar los datos del sitio. Instalaremos MariaDB, una bifurcación desarrollada por la comunidad del servidor MySQL original de Oracle.

Para instalar este software, debes ejecutar:

Cuando finalice la instalación, puedes habilitar e iniciar el servidor MariaDB con:

Para mejorar la seguridad de tu servidor de base de datos, se recomienda que ejecutes un script de seguridad que viene preinstalado con MariaDB. Este script eliminará algunas configuraciones predeterminadas inseguras y bloqueará el acceso a tu sistema de base de datos. Debes iniciar el script interactivo ejecutando:

Este script te llevará a través de una serie de indicaciones en las que puedes realizar algunos cambios en tu configuración de MariaDB. El primer mensaje te pedirá que ingreses la contraseña root de la base de datos actual.

Esto no debe confundirse con el usuario root del sistema. El usuario root de la base de datos es un usuario administrativo con privilegios completos sobre el sistema de base de datos. Debido a que acabas de instalar MariaDB y aún no has realizado ningún cambio de configuración, esta contraseña estará en blanco. Bastará que presiones ENTER en el indicador.

El siguiente mensaje te pregunta si deseas configurar una contraseña root de la base de datos. Debido a que MariaDB usa un método de autenticación especial para el usuario root que generalmente es más seguro que usar una contraseña, no necesitas configurarlo ahora. Escribe N y luego presiona ENTER.

Desde allí, puedes presionar Y y luego ENTER para aceptar los valores predeterminados para todas las preguntas posteriores.

Esto eliminará a los usuarios anónimos y la base de datos de prueba. También deshabilitará el inicio de sesión root remoto y cargará estas nuevas reglas para que el servidor respete de inmediato los cambios que ha realizado.

Cuando hayas terminado, inicia sesión en la consola MariaDB escribiendo:

Esto se conectará al servidor MariaDB como el root del usuario de la base de datos administrativa. Esto se infiere mediante el uso de sudo cuando se ejecuta este comando. Deberías ver una salida como esta:

Ten en cuenta que no necesitas proporcionar una contraseña para conectarte como usuario root. Eso funciona porque el método de autenticación predeterminado para el usuario administrativo MariaDB es en unix_socket en lugar de password.

Si bien esto puede parecer un problema de seguridad al principio, hace que el servidor de la base de datos sea más seguro. Esto porque los únicos usuarios que pueden iniciar sesión como usuario root de MariaDB son los usuarios del sistema con privilegios de sudo. Estos se conectan desde la consola o mediante una aplicación que se ejecuta con los mismos privilegios.

En términos prácticos, eso significa que no podrán utilizar el usuario root de la base de datos administrativa para conectarse desde tu aplicación PHP.

Para una mayor seguridad, es mejor tener cuentas de usuario dedicadas con privilegios menos expansivos configurados para cada base de datos. Esto especialmente si planeas tener múltiples bases de datos alojadas en tu servidor.

Para demostrar dicha configuración, crearemos una base de datos llamada example_database y un usuario llamado example_user, pero puedes reemplazar estos nombres con diferentes valores.

Para crear una nueva base de datos, ejecuta el siguiente comando desde tu consola MariaDB:

Ahora puedes crear un nuevo usuario y otorgarle todos los privilegios en la base de datos personalizada que acabas de crear. El siguiente comando define la contraseña de este usuario como password, pero debes reemplazar este valor con una contraseña segura de tu elección:

Esto le dará al usuario example_user privilegios completos sobre la base de datos example\_database. Asimismo, evitarás que este usuario cree o modifique otras bases de datos en tu servidor.

Debes actualizar los privilegios para asegurarte de que estén guardados y disponibles en la sesión actual:

Después de esto, debes salir de la shell MariaDB:

Puedes probar si el nuevo usuario tiene los permisos adecuados iniciando sesión nuevamente en la consola MariaDB, esta vez utilizando las credenciales de usuario personalizadas:

Ten en cuenta el indicador –p en este comando, que te pedirá la contraseña que eligiste al crear el usuario example_user. Después de iniciar sesión en la consola MariaDB, confirma que tienes acceso a la base de datos example\_database:

Esto te dará el siguiente resultado:

Para salir de la shell MariaDB, debes escribir:

En este punto, tu sistema de base de datos está configurado y puedes continuar con la instalación de PHP, el componente final del conjunto LAMP.

Paso 3 – Instalar PHP

Tienes instalado Apache para mostrar tu contenido y MariaDB instalado para almacenar y administrar tus datos. PHP es el componente de nuestra configuración que procesará el código para mostrar contenido dinámico al usuario final.

Además del paquete php, necesitarás un módulo PHP php-mysqlnd que permita que PHP se comunique con bases de datos basadas en MySQL. Los paquetes principales de PHP se instalarán automáticamente como dependencias.

Para instalar los paquetes phpphp-mysqlnd utilizando el administrador de paquetes dnf, ejecuta:

Una vez finalizada la instalación, deberás reiniciar el servidor web Apache para habilitar el módulo PHP:

Tu servidor web ahora está completamente configurado. En el siguiente paso, crearemos un script de prueba PHP para asegurarnos de que todo funcione como se espera.

Paso 4 – Prueba de PHP con Apache

La instalación predeterminada de Apache en CentOS 8 creará una raíz de documento ubicada en /var/www/html. No necesitas realizar ningún cambio en la configuración predeterminada de Apache para que PHP funcione correctamente dentro de tu servidor web.

El único ajuste que haremos es cambiar la configuración de permisos predeterminada en la carpeta raíz del documento de Apache. De esta manera, crearás y modificarás archivos en ese directorio con tu usuario habitual del sistema, sin la necesidad de prefijar cada comando sudo.

El siguiente comando cambiará la propiedad de la raíz del documento Apache predeterminada a un usuario y grupo llamado cesar. Asegúrate de reemplazar el nombre de usuario y el grupo en este comando para reflejar el nombre de usuario y el grupo de tu sistema.

Ahora crearemos una página PHP de prueba para asegurarnos de que el servidor web funcione como se espera.

El editor de texto predeterminado que viene con CentOS 8 es viVi es un editor de texto extremadamente poderoso, pero puede ser algo obtuso para los usuarios que carecen de experiencia con él.

Es posible que desees instalar un editor más fácil de usar, como nano para facilitar la edición de archivos en tu servidor CentOS 8:

Escribe y cuando se te solicite que confirmes la instalación.

Ahora, crea un nuevo archivo PHP llamado info.php en el directorio /var/www/html:

El siguiente código PHP mostrará información sobre el entorno PHP actual que se ejecuta en el servidor:

Cuando hayas terminado, guarda y cierra el archivo. Si estás utilizando nano, puedes hacerlo escribiendo CTRL+X, luego YENTER para confirmar.

Ahora podemos probar si nuestro servidor web puede mostrar correctamente el contenido generado por un script PHP. Dirígete a tu navegador y accede al nombre de host o la dirección IP de tu servidor, seguido de /info.php:

Verás una página similar a esta:

Después de verificar la información relevante sobre tu servidor PHP a través de esa página, es mejor eliminar el archivo que creaste. Este contiene información confidencial sobre tu entorno PHP y tu servidor CentOS. Puedes usar rm para eliminar ese archivo:

Siempre puedes restablecer este archivo si lo necesitas más tarde. A continuación, probaremos la conexión de la base de datos desde el lado de PHP.

Paso 5 – Probar la conexión de la base de datos desde PHP (opcional)

Si deseas probar si PHP puede conectarse a MariaDB y ejecutar consultas a la base de datos, puedes crear una tabla de prueba con datos ficticios. Posteriormente puedes consultar tu contenido desde un script PHP.

Primero, conéctate a la consola MariaDB con el usuario de la base de datos que creaste en el Paso 2 de esta guía:

Crea una tabla llamada todo_list. Desde la consola MariaDB, ejecuta la siguiente instrucción:

Ahora, inserta algunas filas de contenido en la tabla de prueba. Es posible que desees repetir el siguiente comando varias veces, utilizando diferentes valores:

Para confirmar que los datos se guardaron correctamente en tu tabla, debes ejecutar:

Verás el siguiente resultado:

Después de confirmar que tienes datos válidos en tu tabla de prueba, puedes salir de la consola MariaDB:

Ahora puedes crear el script PHP que se conectará a MariaDB y consultará tu contenido. Crea un nuevo archivo PHP en tu directorio raíz web personalizado utilizando tu editor preferido. Usaremos nano para eso:

Agrega el siguiente contenido a tu script PHP:

Guarda y cierra el archivo cuando hayas terminado de editar.

Ahora puedes acceder a esta página en tu navegador web visitando el nombre de host o la dirección IP pública de tu servidor, seguido de /todo_list.php:

Debería ver una página como esta, que muestra el contenido que has insertado en tu tabla de prueba:

Eso significa que tu entorno PHP está listo para conectarse e interactuar con tu servidor MariaDB.

Conclusión

En esta guía, has creado una base flexible para mostrar sitios web y aplicaciones PHP a tus visitantes, utilizando Apache como servidor web.

Has configurado Apache para manejar solicitudes PHP, y también has configurado una base de datos MariaDB para almacenar los datos de tu sitio web.