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

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación del servidor web Apache
  • Paso 2: Instalación de MariaDB
  • Paso 3 — Instalación de PHP
  • Paso 4: Probar PHP con Apache
  • Paso 5: Prueba de la conexión a la base de datos desde PHP (opcional)
  • Conclusión
  • Una pila “LAMP” es un grupo de software de código abierto que normalmente se instala en conjunto para permitir que un servidor aloje sitios web dinámicos y aplicaciones web escritas en PHP. Este término es un acrónimo que representa el sistema operativo Linux , con el servidor web Apache . Los datos del backend se almacenan en una base de datos MariaDB y el procesamiento dinámico lo gestiona PHP .

    La capa de base de datos en una pila LAMP es típicamente un servidor de base de datos MySQL, pero antes del lanzamiento de CentOS 8, MySQL no estaba disponible en los repositorios predeterminados de CentOS. Debido a esto, MariaDB, una bifurcación de MySQL de la comunidad, se convirtió en una alternativa ampliamente aceptada a MySQL como el sistema de base de datos predeterminado para las pilas LAMP en las máquinas CentOS. MariaDB funciona como un reemplazo directo para el servidor MySQL original, lo que en la práctica significa que puede cambiar a MariaDB sin tener que realizar ningún cambio de configuración o código en su aplicación.

    En esta guía, instalará una pila LAMP en un servidor CentOS 8, utilizando MariaDB como sistema de administració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 sudo y un firewall activo instalado en tu servidor. Para configurarlo, puedes seguir nuestra Guía de configuración inicial del servidor para CentOS 8.

    Paso 1: Instalación del servidor web Apache

    Para mostrar páginas web a los visitantes de nuestro sitio, vamos a utilizar Apache, un servidor web de código abierto muy conocido que se puede configurar para que muestre páginas PHP. Para dnfinstalar este software, utilizaremos el administrador de paquetes, que es el nuevo administrador de paquetes predeterminado en CentOS 8.

    Instalar el httpdpaquete con:

    1. sudo dnf install httpd

    Cuando se le solicite, ingrese ypara confirmar que desea instalar Apache.

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

    1. sudo systemctl start httpd

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

    1. sudo firewall-cmd --permanent --add-service=http

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

    1. sudo firewall-cmd --permanent --list-all

    Verás un resultado como este:

    Outputpublic  target: default  icmp-block-inversion: no  interfaces:   sources:   services: cockpit dhcpv6-client http ssh  ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: 

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

    1. sudo firewall-cmd --reload

    Con la nueva regla de firewall agregada, puede probar si el servidor está en funcionamiento accediendo a la dirección IP pública o al nombre de dominio de su servidor desde su navegador web.

    Nota : En caso de que utilice DigitalOcean como proveedor de alojamiento de DNS, puede consultar nuestra documentación del producto para obtener instrucciones detalladas sobre cómo configurar un nuevo nombre de dominio y apuntarlo a su servidor.

    Si no tiene un nombre de dominio apuntado a su servidor y no conoce la dirección IP pública de su servidor, puede encontrarla ejecutando el siguiente comando:

    1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's//.*$//'

    Esto imprimirá algunas direcciones IP. Puede probarlas una por una en su navegador web.

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

    1. curl -4 icanhazip.com

    Escriba la dirección que recibe en su navegador web y lo llevará a la página de destino predeterminada de Apache:

    Si ve esta página, entonces su servidor web ahora está instalado correctamente.

    Paso 2: Instalación de MariaDB

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

    Para instalar este software, ejecute:

    1. sudo dnf install mariadb-server

    Una vez finalizada la instalación, puedes habilitar e iniciar el servidor MariaDB con:

    1. sudo systemctl start mariadb

    Para mejorar la seguridad de su servidor de base de datos, se recomienda ejecutar un script de seguridad que viene preinstalado con MariaDB. Este script eliminará algunas configuraciones predeterminadas inseguras y bloqueará el acceso a su sistema de base de datos. Inicie el script interactivo ejecutando lo siguiente:

    1. sudo mysql_secure_installation

    Este script lo guiará a través de una serie de indicaciones donde puede realizar algunos cambios en su configuración de MariaDB. La primera indicación le pedirá que ingrese la contraseña actual del usuario root de la base de datos . Esta 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 acaba de instalar MariaDB y aún no ha realizado ningún cambio de configuración, esta contraseña estará en blanco, así que simplemente presione ENTERen la indicación.

    El siguiente mensaje le preguntará si desea configurar una contraseña de root para la base de datos . Debido a que MariaDB utiliza un método de autenticación especial para el usuario root que suele ser más seguro que el uso de una contraseña, no necesita configurarlo ahora. Escriba Ny luego presione ENTER.

    Desde allí, puede presionar Yy luego ENTERaceptar los valores predeterminados para todas las preguntas posteriores. Esto eliminará los usuarios anónimos y la base de datos de prueba, deshabilitará el inicio de sesión remoto como root y cargará estas nuevas reglas para que el servidor respete de inmediato los cambios que haya realizado.

    Cuando haya terminado, inicie sesión en la consola MariaDB escribiendo:

    1. sudo mysql

    Esto se conectará al servidor MariaDB como el usuario de base de datos administrativa root , lo que se deduce del uso de sudoal ejecutar este comando. Debería ver un resultado como este:

    OutputWelcome to the MariaDB monitor.  Commands end with ; or g.Your MariaDB connection id is 9Server version: 10.3.17-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.MariaDB [(none)] 

    Tenga en cuenta que no necesitó proporcionar una contraseña para conectarse como usuario root . Esto funciona porque el método de autenticación predeterminado para el usuario administrativo de MariaDB es unix_socketen lugar de password. Aunque esto puede parecer un problema de seguridad al principio, hace que el servidor de base de datos sea más seguro porque los únicos usuarios a los que se les permite iniciar sesión como usuario root de MariaDB son los usuarios del sistema con privilegios sudo que se conectan desde la consola o a través de una aplicación que se ejecuta con los mismos privilegios. En términos prácticos, eso significa que no podrá usar el usuario root de la base de datos administrativa para conectarse desde su aplicación PHP.

    Para mayor seguridad, es mejor tener cuentas de usuario dedicadas con privilegios menos expansivos configuradas para cada base de datos, especialmente si planea tener varias bases de datos alojadas en su servidor. Para demostrar esta configuración, crearemos una base de datos llamada example_database y un usuario llamado example_user , pero puede reemplazar estos nombres con valores diferentes.

    Para crear una nueva base de datos, ejecute el siguiente comando desde su consola MariaDB:

    1. CREATE DATABASE example_database;

    Ahora puede crear un nuevo usuario y otorgarle privilegios completos en la base de datos personalizada que acaba de crear. El siguiente comando define la contraseña de este usuario como password, pero debe reemplazar este valor con una contraseña segura de su elección:

    1. GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

    Esto le dará al usuario example_user privilegios completos sobre la example_databasebase de datos, al tiempo que evitará que este usuario cree o modifique otras bases de datos en su servidor.

    Elimine los privilegios para garantizar que se guarden y estén disponibles en la sesión actual:

    1. FLUSH PRIVILEGES;

    A continuación, salga del shell de MariaDB:

    1. exit

    Puede 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:

    1. mysql -u example_user -p

    Tenga en cuenta la -pbandera en este comando, que le solicitará la contraseña que eligió al crear el usuario example_user . Después de iniciar sesión en la consola de MariaDB, confirme que tiene acceso a la example_databasebase de datos:

    1. SHOW DATABASES;

    Esto le dará el siguiente resultado:

    Output+--------------------+| Database           |+--------------------+| example_database   || information_schema |+--------------------+2 rows in set (0.000 sec)

    Para salir del shell de MariaDB, escriba:

    1. exit

    En este punto, su sistema de base de datos está configurado y puede pasar a instalar PHP, el componente final de la pila LAMP.

    Paso 3 — Instalación de PHP

    Tienes Apache instalado para servir 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 phppaquete, necesitarás php-mysqlnd, un módulo PHP que permite que PHP se comunique con bases de datos basadas en MySQL. Los paquetes PHP principales se instalarán automáticamente como dependencias.

    Para instalar los paquetes phpy php-mysqlndutilizando el dnfadministrador de paquetes, ejecute:

    sudo dnf install php php-mysqlnd

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

    sudo systemctl restart httpd

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

    Paso 4: Probar PHP con Apache

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

    El único ajuste que haremos será cambiar la configuración de permisos predeterminada en la carpeta raíz de documentos de Apache. De esta manera, podrá crear y modificar archivos en ese directorio con su usuario de sistema habitual, sin necesidad de anteponer cada comando con sudo.

    El siguiente comando cambiará la propiedad de la raíz del documento Apache predeterminada a un usuario y grupo llamadoSammy, así que asegúrese de reemplazar el nombre de usuario y el grupo resaltados en este comando para reflejar el nombre de usuario y el grupo de su sistema.

    1. sudo chown -R sammy.sammy /var/www/html/

    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 vi. viEs un editor de texto extremadamente potente, pero puede resultar un poco confuso para los usuarios que no tienen experiencia con él. Es posible que desee instalar un editor más fácil de usar, como por ejemplo nanopara facilitar la edición de archivos en su servidor CentOS 8:

    1. sudo dnf install nano

    Escriba ycuando se le solicite para confirmar la instalación.

    Ahora, crea un nuevo archivo PHP llamado info.phpen el /var/www/htmldirectorio:

    1. nano /var/www/html/info.php

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

    /var/www/html/info.php

    ?phpphpinfo();

    Cuando haya terminado, guarde y cierre el archivo. Si está utilizando nano, puede hacerlo escribiendo CTRL+X, luego Yy ENTERpara confirmar.

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

    http://server_host_or_IP/info.php

    Verás una página similar a ésta:

    Después de comprobar la información relevante sobre su servidor PHP a través de esa página, es mejor eliminar el archivo que ha creado, ya que contiene información confidencial sobre su entorno PHP y su servidor CentOS. Puede utilizar rmpara eliminar ese archivo:

    1. rm /var/www/html/info.php

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

    Paso 5: Prueba de la conexión a la base de datos desde PHP (opcional)

    Si desea probar si PHP puede conectarse a MariaDB y ejecutar consultas de base de datos, puede crear una tabla de prueba con datos ficticios y consultar su contenido desde un script PHP.

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

    1. mysql -u example_user -p

    Cree una tabla denominada todo_list. Desde la consola de MariaDB, ejecute la siguiente instrucción:

    CREATE TABLE example_database.todo_list (item_id INT AUTO_INCREMENT,content VARCHAR(255),PRIMARY KEY(item_id));

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

    1. INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

    Para confirmar que los datos se guardaron correctamente en su tabla, ejecute:

    1. SELECT * FROM example_database.todo_list;

    Verá el siguiente resultado:

    Output+---------+--------------------------+| item_id | content                  |+---------+--------------------------+|       1 | My first important item  ||       2 | My second important item ||       3 | My third important item  ||       4 | and this one more thing  |+---------+--------------------------+4 rows in set (0.000 sec)

    Después de confirmar que tiene datos válidos en su tabla de prueba, puede salir de la consola MariaDB:

    1. exit

    nanoAhora 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 usando tu editor preferido. Para ello, usaremos :

    1. nano /var/www/html/todo_list.php

    Añade el siguiente contenido a tu script PHP:

    /var/www/html/lista_de_cosas_que_hacer.php

    ?php$user = "example_user";$password = "password";$database = "example_database";$table = "todo_list";try {  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);  echo "h2TODO/h2ol";   foreach($db-query("SELECT content FROM $table") as $row) {    echo "li" . $row['content'] . "/li";  }  echo "/ol";} catch (PDOException $e) {    print "Error!: " . $e-getMessage() . "br/";    die();}

    Guarde y cierre el archivo cuando haya terminado de editarlo.

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

    http://server_host_or_IP/todo_list.php

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

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

    Conclusión

    En esta guía, ha creado una base flexible para ofrecer sitios web y aplicaciones PHP a sus visitantes, utilizando Apache como servidor web. Ha configurado Apache para gestionar solicitudes PHP y también ha configurado una base de datos MariaDB para almacenar los datos de su sitio web.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion