05 – Cómo instalar una pila LAMP en Ubuntu 20.04

Este tutorial te va a enseñar cómo instalar una pila LAMP en Ubuntu 20.04 LTS. Una pila de software es un conjunto de herramientas de software agrupadas. LAMP significa Linux, Apache, MariaDB/MySQL y PHP, todos ellos de código abierto y de uso gratuito. Es la pila de software más común que impulsa sitios y aplicaciones web dinámicas. Linux es el sistema operativo; Apache es el servidor web; MariaDB/MySQL es el servidor de bases de datos y PHP es el lenguaje de scripting del lado del servidor responsable de generar páginas web dinámicas.

pila LAMP

Requisitos previos para instalar una pila LAMP

Para seguir este tutorial, necesitas un sistema operativo Ubuntu 20.04 funcionando en tu ordenador local o en un servidor remoto.

Si estás buscando un VPS (Servidor Privado Virtual), puedes contratar el tuyo en CONTABO o en OVH.

Si necesitas configurar una pila LAMP con un nombre de dominio, recomiendo la compra de nombres de dominio de NameCheap porque el precio es bajo y dan protección de la privacidad whois libre para la vida.

Paso 1: Actualizar los paquetes de software

Antes de instalar la pila LAMP, es una buena idea actualizar el repositorio y los paquetes de software. Ejecuta los siguientes comandos en tu sistema operativo Ubuntu 20.04.

sudo apt update
sudo apt upgrade

Paso 2: Instalar el servidor web Apache

Introduce el siguiente comando para instalar el servidor web Apache. El paquete apache2-utils instalará algunas utilidades útiles como la herramienta de evaluación comparativa del servidor HTTP Apache (ab).

sudo apt install -y apache2 apache2-utils

Una vez instalado, Apache debería iniciarse automáticamente. Comprueba su estado con systemctl.

systemctl status apache2

Ejemplo de salida:

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-04-11 11:31:31 CST; 2s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 53003 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 53011 (apache2)
      Tasks: 55 (limit: 19072)
     Memory: 6.4M
     CGroup: /system.slice/apache2.service
             ├─53011 /usr/sbin/apache2 -k start
             ├─53012 /usr/sbin/apache2 -k start
             └─53013 /usr/sbin/apache2 -k start

Sugerencia: Si el comando anterior no sale inmediatamente, puede pulsar la tecla Q para recuperar el control del terminal.

Si no se está ejecutando, utiliza systemctl para iniciarlo.

sudo systemctl start apache2

También es una buena idea habilitar Apache para que se inicie automáticamente al arrancar el sistema.

sudo systemctl enable apache2

Comprueba la versión de Apache:

apache2 -v

Respuesta:

Server version: Apache/2.4.41 (Ubuntu)
Server built:   2020-03-05T18:51:00

Ahora escribe la dirección IP pública de tu servidor Ubuntu 20.04 en la barra de direcciones del navegador. Deberías ver la página web “¡Funciona! lo que significa que el servidor web Apache está funcionando correctamente. Si estás instalando una pila LAMP en tu ordenador Ubuntu 20.04 local, entonces escribe 127.0.0.1 o localhost en la barra de direcciones del navegador.

Si la conexión se rechaza o no se completa, es posible que haya un cortafuegos que impida las solicitudes entrantes al puerto TCP 80. Si utiliza el cortafuegos iptables, debe ejecutar el siguiente comando para abrir el puerto TCP 80.

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

Si estás usando el firewall UFW, entonces ejecuta este comando para abrir el puerto TCP 80.

sudo ufw allow http

Ahora necesitamos establecer www-data (usuario de Apache) como propietario de la raíz del documento (también conocida como raíz web). Por defecto es propiedad del usuario root.

sudo chown www-data:www-data /var/www/html/ -R

Por defecto, Apache utiliza el nombre de host del sistema como su nombre de servidor global. Si el nombre de host del sistema no se puede resolver en DNS, entonces probablemente verás el siguiente error después de ejecutar el comando sudo apache2ctl -t.

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

Para resolver este problema, podemos establecer un ServerName global en Apache. Utilice el editor de texto de línea de comandos Nano para crear un nuevo archivo de configuración.

sudo nano /etc/apache2/conf-available/servername.conf

Añada la siguiente línea en este archivo.

ServerName localhost

Guarda y cierra el archivo. Para guardar un archivo en el editor de texto Nano, pulsa Ctrl+O, y luego pulsa Enter para confirmar. Para salir, pulse Ctrl+X. A continuación, activa este archivo de configuración.

sudo a2enconf servername.conf

Vuelve a cargar Apache para que el cambio surta efecto.

sudo systemctl reload apache2

Ahora, si ejecutas de nuevo el comando sudo apache2ctl -t, no verá el mensaje de error anterior.

Paso 3: Instalar el servidor de bases de datos MariaDB

MariaDB es un sustituto directo de MySQL. Ha sido desarrollado por antiguos miembros del equipo de MySQL a quienes les preocupa que Oracle pueda convertir MySQL en un producto de código cerrado. Introduce el siguiente comando para instalar MariaDB en Ubuntu 20.04.

sudo apt install mariadb-server mariadb-client

Una vez instalado, el servidor MariaDB debería iniciarse automáticamente. Utiliza systemctl para comprobar su estado.

systemctl status mariadb

Respuesta:

● mariadb.service - MariaDB 10.3.22 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-04-10 14:19:16 UTC; 18s ago
       Docs: man:mysqld(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 9161 (mysqld)
     Status: "Taking your SQL requests now..."
      Tasks: 31 (limit: 9451)
     Memory: 64.7M
     CGroup: /system.slice/mariadb.service
             └─9161 /usr/sbin/mysqld

Si no se está ejecutando, inícialo con este comando:

sudo systemctl start mariadb

Para que MariaDB se inicie automáticamente en el arranque, ejecuta

sudo systemctl enable mariadb

Ahora ejecuta el script de seguridad posterior a la instalación.

sudo mysql_secure_installation

Cuando te pida que introduzcas la contraseña de root de MariaDB, pulsa la tecla Enter ya que la contraseña de root aún no está establecida. A continuación, introduce y para establecer la contraseña de root para el servidor MariaDB.

A continuación, puedes pulsar Enter para responder a todas las preguntas restantes, lo que eliminará el usuario anónimo, deshabilitará el inicio de sesión de root remoto y eliminará la base de datos de prueba. Este paso es un requisito básico para la seguridad de la base de datos MariaDB. (Observe que Y está en mayúsculas, lo que significa que es la respuesta por defecto).

Por defecto, el paquete de MariaDB en Ubuntu utiliza unix_socket para autenticar el inicio de sesión del usuario, lo que básicamente significa que puede utilizar el nombre de usuario y la contraseña del sistema operativo para iniciar sesión en la consola de MariaDB. Así que puedes ejecutar el siguiente comando para iniciar sesión sin proporcionar la contraseña de root de MariaDB.

sudo mariadb -u root -p

Para salir, ejecuta

exit;

Comprueba la información de la versión del servidor MariaDB.

mariadb --version

Como puedes ver, hemos instalado MariaDB 10.3.22.

mariadb  Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Paso 4: Instalar PHP7.4

En el momento de escribir esto, PHP7.4 es la última versión estable de PHP y tiene una pequeña ventaja de rendimiento sobre PHP7.3. Introduce el siguiente comando para instalar PHP7.4 y algunos módulos PHP comunes.

sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline

Activa el módulo Apache php7.4 y reinicia el servidor web Apache.

sudo a2enmod php7.4
sudo systemctl restart apache2

Comprueba la información de la versión de PHP.

php --version

Respuesta:

PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

Para probar los scripts PHP con el servidor Apache, necesitamos crear un archivo info.php en el directorio raíz del documento.

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

Pega el siguiente código PHP en el archivo.

<?php phpinfo(); ?>

Para guardar un archivo en el editor de texto Nano, pulsa Ctrl+O, y luego pulsa Enter para confirmar. Para salir, pulsa Ctrl+X.  Ahora, en la barra de direcciones del navegador, introduce server-ip-address/info.php. Sustituye dirección-ip-del-servidor por tu IP real. Si sigues este tutorial en tu ordenador local, escribe 127.0.0.1/info.php o localhost/info.php.

Deberías ver la información de PHP de tu servidor. Esto significa que los scripts PHP pueden funcionar correctamente con el servidor web Apache.

Cómo ejecutar PHP-FPM con Apache

Existen básicamente dos formas de ejecutar código PHP con el servidor web Apache:

  • Módulo PHP de Apache
  • PHP-FPM.

En los pasos anteriores, se utiliza el módulo PHP7.4 de Apache para manejar el código PHP, lo cual suele estar bien. Pero en algunos casos, es necesario ejecutar el código PHP con PHP-FPM en su lugar. He aquí cómo hacerlo.

Desactivar el módulo PHP7.4 de Apache.

sudo a2dismod php7.4

Instalar PHP-FPM.

sudo apt install php7.4-fpm

Habilitar el módulo proxy_fcgi y setenvif.

sudo a2enmod proxy_fcgi setenvif

Habilita el archivo de configuración /etc/apache2/conf-available/php7.4-fpm.conf.

sudo a2enconf php7.4-fpm

Reinicia Apache para que los cambios surtan efecto.

sudo systemctl restart apache2

Ahora, si actualizas la página info.php en tu navegador, encontrarás que la API del servidor ha cambiado de Apache 2.0 Handler a FPM/FastCGI, lo que significa que el servidor web Apache pasará las peticiones PHP a PHP-FPM.

¡Enhorabuena! Has instalado con éxito la pila LAMP (Apache, MariaDB y PHP7.4) en Ubuntu 20.04. Por la seguridad de su servidor, debes eliminar el archivo info.php ahora para evitar miradas indiscretas.

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

Ahora ya puedes instalar cualquier otra herramienta que requiera una pila LAMP o regresar a tuturiales como la instalacion de Mautic o de WordPress, ambos necesitan una pila LAMP.

¡Que tengas un Ingenioso día!

¡que tengas un ingenioso día!

Contrata tu plan Ingenios@ de Sistemas por 5€ al mes y responderé a todas tus preguntas sobre tecnología en el menor tiempo posible. Pasa a formar parte de la comunidad Ingenios@s de Sistemas y disfruta de contenido exclusivo y aprende sobre sistemas Open Source, Blockchain, SmarContract, Web3, Inteligencia Artificial y Reaidad Virtual, súbete al tren de la Revolución 4.0

Si quieres estar al día y no perderte nada Suscribete al Podcast Ingenios@s de Sistemas, un episodio diario que te mantendrá informado y formado en esta vertiginosa carrera.

Deja un comentario

Share to...