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

Introducció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 dnf
instalar este software, utilizaremos el administrador de paquetes, que es el nuevo administrador de paquetes predeterminado en CentOS 8.
Instalar el httpd
paquete con:
- sudo dnf install httpd
Cuando se le solicite, ingrese y
para confirmar que desea instalar Apache.
Una vez finalizada la instalación, ejecute el siguiente comando para habilitar e iniciar el servidor:
- sudo systemctl start httpd
En caso de que haya habilitado el firewalld
firewall 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 80
de forma predeterminada:
- sudo firewall-cmd --permanent --add-service=http
Para verificar que se aplicó el cambio, puede ejecutar:
- 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:
- 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:
- 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:
- 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:
- sudo dnf install mariadb-server
Una vez finalizada la instalación, puedes habilitar e iniciar el servidor MariaDB con:
- 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:
- 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 ENTER
en 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 N
y luego presione ENTER
.
Desde allí, puede presionar Y
y luego ENTER
aceptar 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:
- sudo mysql
Esto se conectará al servidor MariaDB como el usuario de base de datos administrativa root , lo que se deduce del uso de sudo
al 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_socket
en 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:
- 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:
- 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_database
base 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:
- FLUSH PRIVILEGES;
A continuación, salga del shell de MariaDB:
- 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:
- mysql -u example_user -p
Tenga en cuenta la -p
bandera 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_database
base de datos:
- 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:
- 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 php
paquete, 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 php
y php-mysqlnd
utilizando el dnf
administrador 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.
- 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
. vi
Es 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 nano
para facilitar la edición de archivos en su servidor CentOS 8:
- sudo dnf install nano
Escriba y
cuando se le solicite para confirmar la instalación.
Ahora, crea un nuevo archivo PHP llamado info.php
en el /var/www/html
directorio:
- 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 Y
y ENTER
para 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 rm
para eliminar ese archivo:
- 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:
- 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:
- INSERT INTO example_database.todo_list (content) VALUES ("My first important item");
Para confirmar que los datos se guardaron correctamente en su tabla, ejecute:
- 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:
- exit
nano
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 usando tu editor preferido. Para ello, usaremos :
- 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.
Deja una respuesta