Cómo instalar LAMP en CentOS 8

En este artículo veremos cómo instalar LAMP en CentOS 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 necesitas partir de la siguiente base:

  • Un sistema CentOS 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 usaremos los paquetes disponibles en los repositorios de la distribución, por lo que la primera tarea es actualizar el sistema:

~$ sudo yum update -y

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.

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 los servicios para tenerlos disponibles enseguida:

~$ sudo systemctl start php-fpm httpd

Y si queremos que los servicios estén disponibles continuamente, debemos habilitarlos para el inicio automático con el sistema:

~$ sudo systemctl enable php-fpm httpd

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 start mysqld
~$ sudo systemctl enable mysqld

En cambio, si quieres optar por usar MariaDB Server 10.3 instala el paquete mariadb-server:

~$ sudo yum install -y mariadb-server

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

~$ sudo systemctl start mariadb
~$ sudo systemctl enable 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/info.php)

como instalar lamp en centos 8

Cómo configurar los servicios LAMP en CentOS 8

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

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 MariaDB/MySQL

Cualquiera de los dos servicios de bases de datos crea una cuenta de root sin contraseña, lo que es un problema de seguridad enorme si no se soluciona.

Puedes pasar el script interactivo mysql_secure_installation que, entre otras cosas, permitirá crear una contraseña para root.

Pero además permite borrar bases de datos de pruebas, usuarios anónimos y eliminar el acceso remoto a root.

El script se lanza igual para ambos sistemas de bases de datos:

~$ sudo mysql_secure_installation

Pero tiene algunas particularidades para cada sistema.

En MySQL:

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: n
Please set the password for root here.

New password:

Re-enter new password:
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

En MariaDB:

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Conclusión

Ahora que sabes cómo instalar una pila o stack LAMP en CentOS 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 para montar tu servidor? Si es así y deseas agradecérnoslo, cualquier mínima contibución ayuda al mantenimiento de este sitio y elaboración de nuevos tutoriales y guías. ¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votos, promedio: 5,00 de 5)
Cargando…

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies