Cómo instalar LAMP en CentOS 7

En esta entrada veremos cómo instalar LAMP en CentOS 7 paso a paso, es decir, cómo montar un servidor Linux con Apache, MariaDB (en lugar de MySQL) y PHP para conectar los dos anteriores. Con esta configuración ya se pueden servir aplicaciones web de cierta complejidad, montar sitios basados en diversos CMS, etc. Sigue leyendo y tendrás montado un LAMP server sobre tu servidor o VPS CentOS en unos minutos.

Este tutorial es un resumen turbo de estas entradas anteriores:

Partiendo de una instalación simple de CentOS 7 puedes seguir las tres entradas anteriores si quieres explicaciones más abundantes y entrar más en detalle, o quedarte en esta entrada para una instalación más rápida. El resultado será el mismo: un LAMP Server CentOS 7.

Antes de instalar LAMP en CentOS 7

Para poder seguir esta guía de instalación LAMP en CentOS 7 se necesita:

  • Un sistema CentOS 7 actualizado.
  • Acceso como root o usuario con privilegios de sudo.
  • Conexión a Internet.

Seguramente ya cumples todos estos requisitos, así que vamos a montar nuestro servidor LAMP.

Configurar los repositorios EPEL

Debido a que los repositorios oficiales de CentOS sólo ofrecen la versión 5.4.16 de PHP, una versión ya obsoleta e insegura, habilitaremos el soporte EPEL para disponer de paquetes más actualizados.

Abrimos un terminal y añadimos las herramientas necesarias al sistema:

~$ sudo yum -y install epel-release yum-utils

Configurar los repositorios para PHP

Ahora podemos añadir el repositorio donde encontraremos las versiones actualizadas de PHP:

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

En el repositorio existen varias versiones de PHP, así que podemos habilitar inicialmente la versión estable que más nos insterese, por ejemplo para PHP 7.4:

~$ sudo yum-config-manager --enable remi-php74

Si prefieres alguna de las versiones estbles más recientes, puedes habilitar PHP 8.0 u 8.1 (que pueden presentar problemas de compatibilidad con bastantes aplicaciones):

~$ sudo yum-config-manager --enable remi-php81

Pero también podrías configurar versiones anteriores de PHP, por ejemplo, si necesitases PHP 7.3:

~$ sudo yum-config-manager --enable remi-php73

Configurar los repositorios para MariaDB

La versión de MariaDB incluida en los repositorios oficiales de CentOS 7 es muy antigua (MariaDB 5.5).

Si te interesa, puedes añadir el repositorio para la última versión estable, MariaDB 10.6, o tal vez MariaDB 10.5. Para ello crearemos un nuevo archivo de repositorio, por ejemplo para la versión 10.6 (si te interesa otra versión, sustituye a continuación 10.6 por 10.x, según corresponda):

~$ sudo nano /etc/yum.repos.d/mariadb-10.6.repo

Y añadimos el siguiente contenido:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.6/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Guardamos los cambios y cerramos el archivo.

Actualización de los repositorios

Únicamente queda actualizar la información de los repositorios:

~$ sudo yum update -y

Ahora nuestro sistema CentOS 7 está listo para empezar con la instalación y configuración del sistema LAMP.

Cómo instalar un servidor LAMP en CentOS 7

Para instalar todo el software LAMP los paquetes que necesitaremos son los siguientes:

  • httpd
  • mariadb-server
  • php
  • php-mysqlnd

Además, automáticamente se instalarán todas las dependencias correspondientes.

Abrimos una consola y lanzamos yum para realizar las de descarga e instalación de los paquetes:

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

En este momento ya está instalado todo el software necesario, pero obviamente habrá que hacer ajustes para poder trabajar.

Arranque de los servicios

Los servicios web y de base de datos no arrancan por defecto tras la instalación. Tampoco arrancan cada vez que se inicia el sistema. En un sistema LAMP lo habitual es que los servicios estén disponibles constantemente, así que vamos a realizar la configuración pertinente.

En primer lugar habilitamos los servicios, para que arranquen automáticamente en cada inicio del sistema:

~$ sudo systemctl enable httpd mariadb

Con esto solamente no arrancan los servicios, así que los iniciaremos manualmente por esta vez:

~$ sudo systemctl start httpd mariadb

A partir de este momento, gracias al comando systemctl, ya tenemos funcionando los servicios y, además, arrancarán con cada inicio del sistema.

Ajustes del firewall

Si estamos montando un servidor LAMP en CentOS 7 en el 99% de los casos querremos conectar desde otras máquinas a través de navegadores para acceder al contenido web.

Pero el firewall de CentOS 7, por defecto, lo impide, por lo que debemos configurarlo.

Añadimos una excepción para el servicio HTTP:

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

Otra para el servicio seguro HTTPS:

~$ sudo firewall-cmd --permanent --zone=public --add-service=https

Y finalmente recargamos la configuración del firewall para que hagan efecto los cambios:

~$ sudo firewall-cmd --reload

Ahora el servicio web es accesible desde otras máquinas, con los protocolos HTTP y HTTPS. El firewall ha quedado configurado para que este cambio sea permanente (persista en el siguiente inicio del sistema).

Ya sólo nos queda realizar algún cambio más en la configuración.

Cómo configurar LAMP en CentOS 7

Aunque tu nuevo LAMP server CentOS 7 ya está funcionando, vamos a realizar unos mínimos ajustes en la configuración de los servicios que integran la pila LAMP en CentOS .

De este modo dejaremos el sistema en el estado óptimo para empezar a trabajar.

Apache

El archivo de configuración es /etc/httpd/conf/httpd.conf, archivo que modificaremos para darle un nombre al servidor. Por defecto el servidor no tiene nombre, por lo que podría registrar un aviso en cada inicio del servicio si no tienes correctamente configurado el nombre de tu máquina CentOS 7.

Editamos el archivo de configuración con nuestro editor de texto favorito y privilegios de sudo:

~$ sudo nano /etc/httpd/conf/httpd.conf

Hay que buscar la directiva ServerName, que está desactivada mediante comentario por defecto:

...
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80
...

Borramos el carácter # al inicio de la línea y asignamos un valor (normalmente la dirección IP, nombre DNS, dominio, etc. del servidor CentOS 7):

...
ServerName centos7.local.lan:80
...

Podemos poner el nombre que queramos o necesitemos. Para que los cambios tomen efecto, hay que recargar la configuración del servidor web:

~$ sudo systemctl reload httpd

La carpeta de archivos web se encuentra configurada por defecto en /var/www/html/.

En la entrada dedicada a la instalación de Apache en CentOS 7 tienes mayor información sobre cómo configurar servidores virtuales, localizaciones alternativas para archivos web, etc.

Servicio de base de datos

Es importante ejecutar el script mysql_secure_installation para hacer más segura la instalación de Mariadb, cuyos valores por defecto no son aconsejables para montar un servidor en producción.

~$ sudo mysql_secure_installation

Con este script conseguiremos:

  • Crear una contraseña para el usuario root de MariaDB. La primera pregunta del script es la contraseña de root que, por defecto, viene en blanco.
  • Eliminar los usuarios anónimos.
  • Desactivar el acceso remoto para el usuario root de MariaDB.
  • Eliminar la base de datos de pruebas.

Ya está listo el servicio de bases de datos para trabajar con él. Tienes más información sobre creación de usuarios y acceso remoto en la entrada sobre la instalación de Mariadb en CentOS 7.

PHP

La configuración de PHP se realiza a través de los ajustes del archivo /etc/php.ini. Lo básico a modificar en una nueva instalación sería:

  • Zona horaria del servidor
  • Tratamiento de errores

Para obtener el valor que necesitas para ajustar la zona horaria, puedes consultar en http://php.net/manual/es/timezones.php.

En cuanto a los valores para el tratamiento de errores de PHP, en el propio archivo /etc/php.ini vienen como ejemplo los valores de desarrollo y de producción.

Por ejemplo, editamos php.ini:

~$ sudo nano /etc/php.ini

Para un servidor de desarrollo situado en España, podríamos establecer estos valores en /etc/php.ini:

...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Madrid
...
error_reporting = E_ALL
...
display_errors = On
...
display_startup_errors = On
...

Si necesitas un servidor de producción (que oculte los mensajes de error) no necesitas cambiar los valores por defecto.

En el caso de que en otro momento necesites hacer cambios, los valores de producción y desarrollo se detallan en los comentarios intercalados en el propio archivo de configuración, junto a cada directiva.

Tras estos mínimos cambios, podemos guardar y cerrar php.ini.

No olvides recargar la configuración del servidor web tras cada cambio en la configuración de PHP:

~$ sudo systemctl reload httpd

Tienes mayor información sobre estas configuraciones, añadir y configurar módulos, etc. en la entrada sobre la instalación de PHP en CentOS.

Probar la pila LAMP en CentOS 7

Para probar la pila LAMP en CentOS 7 crearemos un pequeño script en PHP accesible vía web:

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

El contenido de este archivo será únicamente la siguiente línea:

<?php phpinfo();

Guardamos los cambios y cerramos el archivo.

Ahora accedemos desde el navegador, añadiendo la ruta /info.php a la dirección IP o dominio del servidor CentOS 7 en el que hemos alojado la pila LAMP:

como instalar lamp en centos 7

La versión 8.0 de PHP funciona igualmente:

instalacion de la pila lamp en centos 7

Y si has decidido probar el nuevo PHP 8.1 podrás comprobar que también funciona:

la pila lamp en centos 7

En cualquier caso, la página que obtenemos nos informará de la versión de PHP instalada y su configuración, extensiones disponibles, etc.

Conclusión

Ahora que ya sabes cómo instalar LAMP en CentOS 7 y has visto lo sencillo que es y lo poco que se tarda, puedes tener tu servidor LAMP para empezar con el desarrollo de tus aplicaciones web o  instalación de potentes CMS basados en este tipo de entorno.

Para profundizar en la configuración de las partes integrantes de tu nuevo LAMP server CentOS 7 te recomiendo las entradas que he citado a lo largo del texto.

En próximas guías usaremos como base este tipo de pila LAMP sobre CentOS 7.

¡Apoya comoinstalar.me!

¿Te ha servido esta guía de instalación de la pila LAMP en CentOS 7? ¿Te gustaría ayudarnos para que siguiéramos publicando más artículos similares? ¡Apóyanos con una mínima aportación!

Puedes hacerlo dejando 1 $ de propina desde PayPal:

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

¡Gracias!

Valora esta entrada

5/5 - (4 votos)

16 comentarios en «Cómo instalar LAMP en CentOS 7»

    • Hola. El problema es que la máquina desde la que accedes (no indicas si el servidor y la máquina desde que la accedes es la misma o no) no sabe resolver el nombre miservidor a la dirección IP correspondiente. Para ello necesitas un servidor DNS configurado correctamente, o al menos añadir una entrada en el archivo hosts de la máquina desde la que accedes.

      Responder
  1. Buenas. Excelente y muy bien explicado. Ya tengo todo funcionando, ¿¿ahora cómo hago para subir mis archivos html, css, js a la carpeta /var/www/html?? ¿Qué más necesito configurar? ¡Muchas gracias por el aporte! Saludos.

    Responder
    • ¡Hola, Mario! Entiendo por tu comentario que estás trabajando de forma remota sobre tu máquina LAMP CentOS 7, seguramente a través de un cliente secure shell, ¿no? Si es así dispones del comando scp para copiar archivos entre sistemas Linux, y la aplicación WinSCP para hacerlo entre Windows y Linux. También podrías montar el servicio de FTP en la máquina CentOS 8, pero no sería la mejor opción. En cualquier caso, una vez tengas los archivos en la máquina LAMP CentOS 7 no olvides ajustar sus permisos y el contexto adecuado para SELinux.

      Responder
  2. Saludos, si tengo un dominio comprado en akky.mx, ¿cómo lo dirijo a mi servidor que hice?, tengo que configurar los DNS, ¿tienes un manual?

    Responder
    • Hola, Adrián. Los servicios de registro de nombres avanzados, como Namecheap, permiten indicar los servidores DNS en los que realizar la configuración DNS, que es el servicio básico, o directamente actuar como servidores DNS y hacer esta configuración en el mismo servicio.

      Por otro lado, servicios de hosting o VPS, como Digital Ocean, permiten configurar los dominios registrados en otro servicio, apuntando el dominio al servidor.

      Deberías consultar la documentación de tu servicio de registro de nombres y de tu servicio de hosting o VPS, para ver qué posibilidades te permiten.

      Responder
  3. ¡Muchas gracias por la información! Me ha sido muy util. Solo un detalle respecto a los comandos para el firewall. Creo que es mejor hacerlo con:

    sudo firewall-cmd –permanent –zone=public –add-service=http
    sudo firewall-cmd –permanent –zone=public –add-service=https
    sudo firewall-cmd –reload

    Responder
    • ¡Me alegro de que te haya servido! Tienes razón, lo corrijo enseguida. Intento escribir las guías orientadas al mínimo detalle posible para rebajar la dificultad, pero siempre se me cuela algo de mis años de malas prácticas.

      Responder

Deja un comentario