Cómo instalar LAMP en Ubuntu 20.04 LTS

En este artículo explicamos cómo instalar la pila LAMP en Ubuntu 20.04 LTS Focal Fossa paso a paso, de modo que en muy pocos minutos dispondrás de Apache, MariaDB/MySQL y PHP integrados en tu servidor o VPS Ubuntu.

Antes de instalar LAMP en Ubuntu 20.04 LTS

Para completar los pasos de esta guía de instalación de la pila LAMP Server en Ubuntu 20.04 sólo necesitas partir de los siguientes requerimientos básicos:

  • Una instalación actualizada de Ubuntu 20.04 LTS Focal Fossa.
  • Acceso a línea de comandos con un usuario con capacidades de sudo.
  • Conexión a Internet.

Cómo instalar LAMP en Ubuntu 20.04

Vamos a instalar la pila LAMP en Ubuntu 20.04 LTS en su mayoría desde los repositorios de la distribución, por lo que el primer paso será actualizar las listas de paquetes:

~$ sudo apt update

¿PHP 8 en Ubuntu 20.04?

Con Ubuntu 20.04 LTS Focal Fossa disponemos por defecto de PHP 7.4 en los repositorios oficiales, pero ¿y si necesitas una versión posterior o anterior? Si necesitas la versión 8.2, 8.1, 8.0, ó versiones anteriores como la 7.3 será necesario configurar un repositorio adicional.

Instalaremos previamente alguna herramienta necesaria:

~$ sudo apt install software-properties-common

Ya podemos instalar el repositorio:

~$ sudo add-apt-repository ppa:ondrej/php

Se nos mostrará un aviso informativo que pasaremos por alto pulsando la tecla intro.

A partir de este momento, en cualquier paquete de PHP que necesitemos, si no especificamos número de versión el nombre se referirá a la última versión estable (PHP 8.2 en el momento de actualizar este tutorial). Si queremos una versión distinta cambiaremos la partícula php por php7.x ó php8.x. Por ejemplo, si necesitamos el módulo de Apache para PHP 8.0, en lugar de instalar libapache2-mod-php (que correspondería a PHP 8.2) instalamos el paquete libapache2-mod-php8.0.

¿MariaDB superior a la versión 10.3?

La versión de este motor de bases de datos incluida en Ubuntu 20.04 LTS es la 10.3, pero ya hay muchas aplicaciones que trabajan sobre la pila LAMP que requieren versiones superiores. Podemos usar una versión más reciente instalando el repositorio oficial.

Para ello instalamos la clave pública con la que poder verificar las firmas de los paquetes del repositorio:

~$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Creamos el archivo de repositorio:

~$ sudo nano /etc/apt/sources.list.d/mariadb.list

Con este contenido:

deb [arch=amd64,arm64,ppc64el] http://mirror.wtnet.de/mariadb/repo/10.7/ubuntu focal main

La URL anterior corresponde a la versión 10.7, si quieres otra sustituye adecuadamente el número de versión.

Instalación de los paquetes

A continuación habrá que instalar los paquetes que componen los distintos elementos de la pila LAMP para Ubuntu 20.04, para lo que actualizaremos las listas de paquetes de la distribución y los repositorios adicionales:

~$ sudo apt update

(ten en cuenta lo dicho antes sobre los nombres de paquetes de PHP). El siguiente comando instalará PHP 7.4 si no has instalado el repositorio adicional, o la versión considerada por defecto en dicho repositorio alternativo si lo has instalado:

~$ sudo apt install -y apache2 libapache2-mod-php php-mysql mariadb-server

Si quieres instalar una versión concreta del repositorio alternativo habrá que indicarla en la nomenclatura de los paquetes, por ejemplo para la versión 8.2:

~$ sudo apt install -y apache2 libapache2-mod-php8.2 php8.2-mysql mariadb-server

O para la 8.1:

~$ sudo apt install -y apache2 libapache2-mod-php8.1 php8.1-mysql mariadb-server

En unos instantes se descargarán e instalarán estos paquetes y sus dependencias, creándose los servicios apache2.service y mariadb.service, o apache2 y mariadb si prefieres los nombres cortos. Ambos servicios quedan iniciados y habilitados para su arranque automático junto a Ubuntu 20.04.

En cualquier momento puedes comprobar el estado de los servicios que forman la pila LAMP en Ubuntu 20.04 mediante el comando systemctl status apache2 mariadb:

como instalar lamp en ubuntu 20.04 lts focal fossa

Configurar el firewall UFW de Ubuntu 20.04 para la pila LAMP

Si tienes activado el firewall UFW en Ubuntu 20.04 y necesitas acceder desde red a los servicios que ofrece la pila LAMP, debes añadir algunas reglas.

Para permitir el acceso HTTP estándar:

~$ sudo ufw allow http

Para permitir el acceso HTTPS si estás ofreciendo conexiones seguras:

~$ sudo ufw allow https

Si quisieras permitir el acceso remoto al servicio de bases de datos (aunque no es recomendable):

~$ sudo ufw allow mysql

Estos cambios se aplican inmediatamente.

Configurar LAMP en Ubuntu 20.04 LTS

Para configurar los componentes de la pila LAMP en Ubuntu 20.04 LTS Focal Fossa realizaremos unos mínimos ajustes.

Apache

Es interesante para evitar alertas y eventos en los registros asignar un valor a la variable ServerName en el archivo de configuración principal:

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

Al principio de la configuración global añadiremos esta directiva con el dominio, nombre o incluso dirección IP del servidor Ubuntu 20.04:

...
#ServerRoot "/etc/apache2"

ServerName ubuntu2004.local.lan:80
...

Guardados los cambios, los aplicamos recargando la configuración del servicio:

~$ sudo systemctl reload apache2

PHP

El archivo de configuración principal es el famoso php.ini, que editaremos (modifica la ruta siguiente de acuerdo con la versión de PHP que hayas instalado):

~$ sudo nano /etc/php/7.4/apache2/php.ini

Un valor que es importante configurar es la zona horaria, para que las aplicaciones web calculen la hora correctamente, por lo que buscaremos la directiva date.timezone:

...
;date.timezone =
...

Por defecto esta directiva está desactivada, así que la activaremos eliminando el carácter ; inicial y le daremos el valor de la zona horaria que le interese:

...
date.timezone = Europe/Madrid
...

Si no conoces el valor de la zona horaria que te interesa, puedes consultarlo en la documentación de PHP.

En cuanto al tratamiento de errores, la configuración por defecto está dirigida a entornos de producción, por lo que se ocultan los mensajes de error. Pero si tu entorno es de desarrollo, necesitarás activar los mensajes de error para facilitar la depuración. Habrá que modificar los valores de las siguientes directivas tal como se muestra a continuación:

...
error_reporting = E_ALL
...
display_errors = On
...
display_startup_errors = On
...

En los comentarios figuran los valores de producción y desarrollo, por lo que es fácil revertir los cambios.

Guardados los cambios, los aplicamos recargando la configuración del servicio web:

~$ sudo systemctl reload apache2

Existe también otro archivo php.ini para la versión de PHP de consola o CLI. Podemos editarlo teniendo en cuenta su ruta de ubicación:

~$ sudo nano /etc/php/7.4/cli/php.ini

Haremos los cambios necesarios de modo similar, aunque en este caso los nuevos ajustes se aplican directamente.

MariaDB

La configuración por defecto de MariaDB prácticamente no necesita ajustes, ya que sus valores son operativos. Para conectar al servicio con el usuario root de MariaDB se necesita lanzar el cliente mysql con sudo:

~$ sudo mysql

Si prefieres acceder con root mediante contraseña, puedes cambiar la forma de autenticación una vez iniciada sesión:

> alter user root@localhost identified via mysql_native_password;

Hecho esto habrá que crear la contraseña:

> alter user root@localhost identified by 'XXXXXXXX';

Y actualizaremos la tabla de privilegios para aplicar los cambios de inmediato:

> flush privileges;

Ya podemos cerrar la conexión:

> exit

Desde este momento hay que especificar el usuario y solicitar contraseña para poder conectar:

~$ mysql -u root -p
Enter password:
...
MariaDB [(none)]>

En cualquier momento puedes volver al sistema de autenticación sin contraseña, por socket de Unix, iniciando sesión y cambiando de nuevo el método:

> alter user root@localhost identified via unix_socket;

Y conviene refrescar la tabla de permisos nuevamente:

> flush privileges;

Cómo probar la pila LAMP en Ubuntu 20.04

Para probar la pila LAMP en Ubuntu 20.04 crearemos un pequeño script en PHP fácilmente accesible vía web:

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

El contenido será esta única línea:

<?php phpinfo();

Una vez, guardado el archivo podremos acceder desde un navegador. Bastará con introducir como URL la dirección IP o dominio del servidor Ubuntu 20.04 añadiendo la ruta /info.php (o como hayas decidido nombrar el archivo).

Por ejemplo, el servidor Ubuntu 20.04 sobre el que realizamos este tutorial es accesible en el dominio ubuntu2004.local.lan, por lo que accedemos con http://ubuntu2004.local.lan/info.php como dirección:

instalar y configurar lamp en ubuntu 20.04 lts focal fossa

Esta página nos ofrecerá gran cantidad de información sobre la configuración del servicio web y PHP, extensiones disponibles, etc.

Por ejemplo, si hemos instalado una versión alternativa de PHP:

la pila lamp en ubuntu 20.04 lts focal fossa

Conclusión

Ahora que sabes cómo instalar y configurar la pila LAMP en Ubuntu 20.04 LTS Focal Fossa ya puedes comenzar a desarrollar potentes aplicaciones web, o establecer la base sobre la que se apoyan aplicaciones de terceros.

Si te ha surgido alguna duda o pregunta, quieres sugerir mejoras de este artículo o crees que necesita una actualización, notificar algún error, etc., puedes dejar un comentario que leeré encantado.

¡Apoya comoinstalar.me!

¿Ya tienes el entorno funcionando gracias a esta guía de instalación y configuración de la pila LAMP en Ubuntu 20.04? Si es así y quieres agracecérnoslo, cualquier pequeña ayuda contribuirá más de lo que imaginas al mantenimiento de este sitio y la elaboración de nuevos tutoriales sobre Ubuntu 20.04 o la pila LAMP.

Puedes ayudar dejando una propina de 1 $ con el saldo que no usas en PayPal:

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

¡Gracias!

Valora esta entrada

5/5 - (10 votos)

45 comentarios en «Cómo instalar LAMP en Ubuntu 20.04 LTS»

  1. He seguido el tutorial al pie de la letra, y el único problema que he tenido es con iniciar ubuntu2004… Sé que no tengo que usar ese dominio pero soy nuevo en esto y no tengo ni idea de qué dominio tendría que usar, he probado a poner mi dirección IP, pero tampoco funcionaba y no sé cómo solucionarlo.

    Responder
    • Hola, Pablo. Si no sabes qué dominio usar es que no tienes dominio configurado. En caso de trabajar localmente podrías usar http://127.0.0.1 ó http://localhost (añadiendo el resto de la URL de que se trate). Después de realizar la configuración, ¿has repetido el comando systemctl status mostrado en el tutorial tras la instalación para comprobar que el servicio web sigue en pie?

      Responder
      • Hola, gracias por la respuesta.
        Sí, he comprobado que tras el comando systemctl todo sigue en pie, probando con http://127.0.0.1 ó http://localhost no me aparece nada, me dice que no se ha encontrado la URL en el servidor.
        Para poder aclarar más cosas, estoy usando Virtualbox para usar Ubuntu, tenemos un dominio comprado en Ionos en el que hemos instalado GLPi, por eso estoy intentando instalar OCS, así que no sé si podría usar el dominio que tenemos en Ionos contratado para la instalación de LAMP en Ubuntu.

        Responder
        • Pablo, el problema que tienes es que estás usando la dirección de la máquina anfitriona en lugar de la de la máquina virtual Ubuntu. Teclea en la consola de Ubuntu el comando ip a para obtener la dirección IP de la máquina Ubuntu. Si al crear la máquina virtual elegiste el tipo de red adecuado, podrás acceder desde la máquina anfitriona a la virtual vía IP.

          Responder
  2. Excelente tutorial, sólo tengo una pregunta, ¿cuál es la diferencia, aparte de la instalación, con las instalaciones que haces por medio de apt?

    Responder
    • Hola, Gabriel. Para instalar la aplicación a la que te refieres basta con instalar la extensión MySQL que menciona este tutorial. ¿Qué versión de PHP estás utilizando?

      Responder
  3. Para acceder a la URL, no es necesario especificar local.lan, sino simplemente el nombre de tu dominio en este caso ubuntu2004/info.php y debería funcionar sin problemas.

    Responder
    • No solo no es necesario especificar local.lan, sino que no funcionará, a no ser que sea el dominio de tu red, por eso al principio del párrafo se especifica que es un EJEMPLO. Por otro lado, ubuntu2004 no es un dominio, sino el hostname o nombre de máquina. En caso de una red compleja o trabajar en un servidor o VPS en Internet, difícilmente se podrá acceder sólo con el nombre de máquina.

      Responder
    • A ver, Fernando, alma de cántaro, lo que no funciona es tu comprensión lectora. Es normal que no puedas acceder a esa URL porque tal como se indica claramente, el subdominio ubuntu2004.local.lan pertenece a mi red local. Justo en el párrafo anterior se explica que debe utilizarse la dirección IP o dominio (si existe) de TU máquina Ubuntu 20.04 LTS.

      Responder
  4. La versión 7.4, por algún motivo no estaba instalada, la he instalado y me ha creado una carpeta en la ruta /etc/php/7.4/cli, la cual dentro tiene un php.ini, la ruta no es la misma, ¿pero debería funcionar esta instalación modificando ese archivo?

    Responder
    • Hola, Brais. Ese php.ini corresponde a la versión de consola de PHP, la que llamas con el comando php. Creo que te falta instalar también el módulo de PHP 7.4 para Apache, que es el que crea el php.ini que te interesa.

      Responder
      • Genial, he instalado el módulo de PHP 7.4, he hecho los cambios en php.ini y ha funcionado a la perfección, es extraño porque en teoría se me había instalado todo bien pero parece ser que lo que hizo fué saltarse la instalación de PHP sin dar ningún error y se me pasó, ya he conseguido ejecutar phpinfo sin problemas, eso quiere decir que está la pila LAMP correctamente instalada, ¿no?

        Muchas gracias.

        Responder
  5. Buenas tardes, he seguido el tutorial y todo bien hasta el momento de localizar la carpteta de PHP, accedo a /etc/php/7.4 y ahí dentro sólo está la carpeta llamada mods-available, no está el php.ini, en ninguna de las 2 rutas que se exponen, ¿a qué puede ser debido? Hasta ese momento no he tenido error alguno.

    Un saludo.

    Responder
  6. Buenas noches. Cometí un error y ahora cada vez que quiero iniciar sesión con mysql me dice el error que el plugin ‘micontrasena‘ no está cargado. ¿Qué podría hacer?

    Responder
  7. No consigo entrar con el comando sudo mysql, me da error.

    sudo mysql
    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

    Responder
    • Hola, valek. ¿Has comprobado que el servicio MariaDB esté funcionando? Por ejemplo con systemctl status mariadb. Si el servicio no está en funcionamiento quizá puedas encontrar el motivo en el registro de errores, en el archivo /var/log/mysql/error.log.

      Responder
  8. Hola,
    No consigo ver la información del info.php creado con el tutorial…
    No sé si quizá es por que cometí algún fallo al seguir tus pasos.

    Responder
    • Hola, Roberto. Deberías indicar algo más de información sobre tu problema.

      ¿Accedes local o remotamente? ¿Puedes acceder a la página web principal del servidor LAMP (sin añadir /info.php)? ¿Con qué URL completa visitas la página info.php? ¿Qué errores o qué comportamiento obtienes al acceder?

      Responder
      • Tengo el mismo problema, no puedo ver la información del PHP, mientras tanto sí puedo ver la información del Apache pero cuando agrego el /info.php se queda en blanco.

        Responder
        • ¡Hola, Iván! Revisa el contenido del archivo info.php, puede que haya algún error. Si crees que todo está correcto revisa el archivo de registro de Apache, en /var/log/apache2/error.log, donde quizás encuentres información sobre el problema.

          Responder

Deja un comentario