Cómo instalar LAMP en Ubuntu 18.04 LTS

Dedico esta entrada a explicar cómo instalar LAMP en Ubuntu 18.04 LTS Bionic Beaver paso a paso, incluyendo las últimas versiones de PHP (hasta PHP 8.0) y MariaDB. Una guía rápida para convertir nuestra máquina, servidor o VPS Ubuntu en un potente servidor de aplicaciones web que requieren como base una pila LAMP.

Anteriormente he dedicado entradas aisladas dedicadas a cada componente, que entran un poco más en profundidad:

Puedes seguir todas y cada una de estas guías por separado, o continuar con esta guía de instalación LAMP en Ubuntu 18.04, donde llegaremos al mismo resultado pero mucho más rápidamente.

Antes de instalar LAMP en Ubuntu 18.04 LTS

Para poder seguir esta guía de instalación LAMP en Ubuntu 18.04 LTS debes partir de unos mínimos requisitos:

  • Un sistema Ubuntu 18.04 actualizado (da igual si es local, virtualizado, o un VPS Ubuntu remoto).
  • Acceso al sistema con un usuario con privilegios de sudo.
  • Conexión a Internet.

Imagino que si estás aquí es porque cumples estos puntos. Si es así, abre una terminal… ¡y empezamos!

Cómo instalar LAMP en Ubuntu 18.04 LTS

Vamos a realizar la instalación de un sistema LAMP en Ubuntu 18.04 LTS a través de software existente en los repositorios oficiales de la propia distribución, pero también desde repositorios externos.

De hecho, en lo que respecta a MariaDB, la versión 10.1 de los repositorios de Ubuntu 18.04 está bastante obsoleta, puesto que la versión estable en el momento de redactar esta guía es la 10.5. Otro tanto ocurre con PHP, ya que la versión 7.2 incluida en la distribución resulta insuficiente para muchas aplicaciones que requieren versiones superiores.

Por ello instalaremos el repositorio oficial de MariaDB y un repositorio auxiliar de PHP, para lo que instalaremos previamente algunas herramientas. Actualizamos las listas de paquetes:

~$ sudo apt update

E instalamos las herramientas:

~$ sudo apt install -y gnupg software-properties-common

Añadimos la clave pública del repositorio de MariaDB para comprobar las firmas:

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

Instalamos el repositorio de MariaDB para Ubuntu 18.04:

~$ sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.wtnet.de/mariadb/repo/10.5/ubuntu bionic main'

Y finalmente añadimos el repositorio para PHP 8 y versiones anteriores:

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

Esta última operación solicitará confirmación, para lo que habrá que pulsar la tecla Intro.

Conviene actualizar de nuevo las listas de paquetes de todos los repositorios, incluyendo el que acabamos de añadir:

~$ sudo apt update

Seguramente habrá paquetes actualizables, así que es buena idea instalar las últimas versiones:

~$ sudo apt upgrade -y

Ahora ya sí que podemos descargar los paquetes que integran el entorno LAMP. Los paquetes imprescindibles son apache2, mariadb-server, libapache2-mod-php y php-mysql, con sus correspondientes dependencias.

Con respecto a PHP, al indicar en el nombre de los paquetes la partícula php (sin número de versión) estamos haciendo referencia a la última versión estable disponible de PHP (la 8.1 en el momento de actualizar este artículo). Para una versión específica habría que especificar php7.X, estando disponibles las versiones desde la 7.0 a la 7.4, ó también php8.X. para las versiones 8.0 y 8.1.

Instalaremos los paquetes que componen la pila LAMP mediante apt en un solo comando:

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

Si necesitases PHP 7.4 habría que modificar el comando anterior:

~$ sudo apt -y install apache2 mariadb-server libapache2-mod-php7.4 php7.4-mysql

O para la versión 8.0:

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

Esto sólo tomará unos instantes, quedando el sistema instalado con la configuración por defecto.

Los servicios que se instalan son apache2.service y mariadb.service, o sus versiones breves apache2 y mariadb, y podemos comprobar que están activos y funcionando mediante el comando systemctl status mariadb apache2:

instalar lamp en ubuntu 18.04 lts

Tanto Apache como MariaDB están listos para recibir conexiones.

Configurar el firewall para la pila LAMP en Ubuntu 18.04

Si tienes activado el firewall UFW en Ubuntu 18.04 y vas a conectar desde otros sistemas en red, necesitarás añadir alguna regla.

Para permitir las conexiones mediante el protocolo HTTP estándar (puerto 80/TCP) añade esta regla:

~$ sudo ufw allow http

Y si tienes previsto servir contenido cifrado a través del protocolo HTTPS seguro (puerto 443/TCP), añade esta otra:

~$ sudo ufw allow https

Comprobar el funcionamiento de Apache y PHP en Ubuntu 18.04

Antes de comprobar el servidor web a través de navegador, vamos a crear un script mínimo en PHP de modo que podamos comprobar tanto Apache como su integración con PHP.

La ruta donde se encuentra la web por defecto de este sistema LAMP en Ubuntu 18.04 es /var/www/html/. Crearemos un archivo info.php en esa ruta con permisos de sudo:

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

El contenido de este archivo será mínimo, tan solamente una línea de código:

<?php phpinfo();

Una vez guardados los cambios ya podemos abrir una ventana de navegador y acceder al servidor LAMP Ubuntu 18.04 escribiendo en la barra de direcciones su dirección IP, dominio o localhost, según corresponda, añadiendo /info.php. Por ejemplo http://localhost/info.php, http://192.168.1.5/info.php, etc.

como instalar lamp en ubuntu 18.04 lts bionic beaver
LAMP en Ubuntu 18.04 LTS funcionando

Esta página no sólo sirve para confirmar que Apache y PHP trabajan juntos, sino que mostrará información sobre versiones, rutas de archivos de configuración, módulos de PHP instalados (como php-mysql para trabajar con MariaDB, etc.).

Una vez analizada la información es buena idea eliminar este script, o moverlo fuera de la carpeta web, para que esta información no pueda ser utilizada por algún visitante malicioso.

Comprobar el funcionamiento de MariaDB

La mejor forma de comprobar el funcionamiento de MariaDB es entrar a través del cliente de consola mysql, que se instaló junto con el servidor.

La configuración por defecto de MariaDB Server crea un usuario root sin contraseña para el sistema de bases de datos. Sólo es posible conectar a MariaDB como administrador root a través de sudo.

instalar la pila lamp en ubuntu 18.04 lts bionic beaver

Cómo configurar LAMP en Ubuntu 18.04 LTS

La configuración por defecto de los componentes de la pila LAMP en Ubuntu 18.04 es bastante buena, pero necesitamos realizar algún ajuste manual.

Apache

La ruta de configuración principal se encuentra en /etc/apache2/, dentro de la que encontraríamos el archivo principal, apache2.conf, y los directorios de configuración de módulos y servidores virtuales, tanto disponibles como activos.

PHP

La ruta principal de configuración está en /etc/php/7.x/. El archivo que se encarga de la configuración de PHP para Apache, el famoso php.ini, se encuentra a su vez dentro del directorio anidado apache2/.

Por ejemplo, para la versión 7.4 editaremos /etc/php/7.4/apache2/php.ini para realizar los ajustes que nos puedan interesar:

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

Un ajuste importante que siempre conviene hacer es la zona horaria del servidor. Buscaremos dentro de php.ini la directiva date.timezone:

...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
...

Por defecto no tiene un valor asignado, así que si queremos asegurarnos de que se ajuste a una zona horaria concreta, descomentaremos la línea y le daremos el valor que corresponda (puedes ver todos los valores disponibles por países en la dirección que ofrece el comentario, http://php.net/date.timezone):

date.timezone = Europe/Madrid

Otro ajuste que deberíamos realizar es el tratamiento de errores según si el servidor Ubuntu pertenece a un entorno de desarrollo o de producción. En desarrollo es muy interesante que cualquier error de las aplicaciones PHP se muestre para poder depurarlo y corregirlo. Sin embargo, en producción es mejor ocultarlos, ya que no sabemos quién puede ver ese mensaje y si podría utilizar la información para aprovechar una vulnerabilidad.

Si se trata de un servidor de producción, no hay que hacer nada, ya que los valores por defecto son los de producción. Sin embargo, si necesitas que se muestren los mensajes de error para desarrollo, buscaremos en php.ini las siguientes líneas:

...
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
...
display_errors = Off
...
display_startup_errors = Off
...

Cambiaremos los valores por los que corresponden a entornos de desarrollo:

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

Seguramente habrás visto que encima de cada una de estas directivas los comentarios explican cuáles son sus correspondientes valores de desarrollo y producción, por si en algún momento necesitas realizar cambios.

Cada vez que hagas cambios en php.ini no tomarán efecto hasta recargar la configuración del servicio Apache2. Por tanto, tras guardar los cambios y salir a la línea de comandos, recargaremos el servicio con systemctl:

~$ sudo systemctl reload apache2

Finalmente, existe otro archivo php.ini usado para la versión de PHP de consola, ubicado en la ruta /etc/php/7.x/cli/php.ini, que también deberíamos configurar. Como mínimo, deberíamos realizar la misma configuración de zona horaria que en la versión de PHP para el servidor web.

MariaDB

En esta pila LAMP, MariaDB viene configurado por defecto con unos valores muy seguros, ya que:

  • No incorpora usuarios anónimos ni bases de datos de pruebas.
  • El usuario root no puede conectar remotamente y sólo puede iniciar sesión con sudo.
  • No se permiten conexiones remotas.

La ruta principal de configuración de MariaDB es /etc/mysql/, en la que se encuentran los archivos y directorios de configuración, siendo el más importante my.cnf.

~$ sudo nano /etc/mysql/my.cnf

Juego de caracteres

Por defecto el juego de caracteres de la versión nativa de MariaDB para Ubuntu 18.04 puede estar configurado como latin1, pero es más interesante usar utf8 o utf8mb4, por lo que buscaremos la sección mysqld y añadiremos la siguiente línea:

...
[mysqld]
...
character-set-server = utf8
...

Permitir conexiones remotas

Si prefieres activar las conexiones remotas al servidor, porque prefieras trabajar con un cliente gráfico como MySQL Workbench, por ejemplo, tendremos que buscar la directiva bind-address:

...
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1
...

El valor 127.0.0.1 especifica a MariaDB que sólo acepte conexiones locales. Si comentamos o borramos esta línea, se permitirán conexiones desde el exterior:

# bind-address           = 127.0.0.1

Para que los cambios tomen efecto hay que reiniciar el servidor:

~$ sudo systemctl restart mariadb

Y ya se puede conectar desde otro punto de la red con MySQL Workbench.

Crear un usuario administrador

Como root de MariaDB sólo puede acceder localmente y a través de sudo, quizás te interese un usuario nuevo con el que administrar, accediendo mediante contraseña y conectar remotamente cuando lo necesites.

Accederemos a MariaDB desde el terminal de consola como root con el comando sudo mysql:

~$ sudo mysql

Creamos el nuevo usuario administrador indicando la contraseña:

> create user TU-USUARIO identified by 'TU-CONTRASEÑA';

Y le concedemos permisos totales sobre todas las bases de datos:

> grant all privileges on *.* to TU-USUARIO with grant option;

Finalmente, cerramos la conexión con el servicio:

> exit

Con unos pocos comandos creamos este nuevo usuario que tendrá permisos para crear bases de datos y usuarios que las puedan manejar. Además, por defecto se creará con acceso remoto.

Conclusión

Si has llegado hasta aquí, ya sabes cómo instalar y configurar LAMP en Ubuntu 18.04 LTS Bionic Beaver. Me darás la razón en que es un proceso rápido y sencillo.

Ahora ya estás en condiciones de desarrollar tus propias aplicaciones o instalar sistemas que se apoyen en un sistema LAMP en Ubuntu 18.04. Por ejemplo, sistemas CMS, gestores de bases de datos,  etc.

Sigue este portal para ver cómo instalar y configurar estas y otras aplicaciones en tu servidor o VPS Ubuntu.

Si tienes cualquier duda, pregunta, sugerencia, quieres notificarme algún error o proponer algún nuevo tutorial, déjame un mensaje.

¡Apoya comoinstalar.me!

¿Crees que esta guía para instalar LAMP en Ubuntu 18.04 LTS Bionic Beaver te ha resultado de tanta ayuda que querrías agradecerlo de algún modo? Pues nada más fácil que realizar una mínima contribución para ayudar a mantener este sitio, ya sea dejando una propina de 1 $ en PayPal:

O, si te sientes especialmente agradecido, invitándome a un café:

¡Gracias!

Valora esta entrada

5/5 - (4 votos)

8 comentarios en «Cómo instalar LAMP en Ubuntu 18.04 LTS»

  1. Al pasar este comando: sudo apt-key adv –recv-keys –keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
    me arroja error: gpg:keyserver receive failed: invalid argument

    Responder
  2. Hola necesito ayuda urgente por favor con:

    «Una vez guardados los cambios ya podemos abrir una ventana de navegador y acceder al servidor LAMP Ubuntu escribiendo en la barra de direcciones su dirección IP, dominio o localhost, según corresponda, añadiendo /info.php. Por ejemplo http://localhost/info.php, http://192.168.1.5/info.php, etc.»

    Ejecuto el comando ifconfig para saber la dirección IP de mi máquina de Linux la cual está en VirtualBox, intenté con todas las direcciones IP posibles, la de mi máquina Windows, la IP de Linux, la IP de broadcast, de todas las maneras y el resultado en el navegador siempre termina siendo «No se puede acceder a este sitio«, no sé cómo más hacerlo o por qué no me carga la interfaz gráfica de PHP, seguí todos los pasos al pie de la letra.

    Responder
    • Hola, Nicolás. Antes de intentar conectar a los servicios LAMP de tu máquina Ubuntu 18.04 LTS debes asegurarte de que tanto la máquina anfitriona como la máquina virtual están en red. Hasta que un ping entre ambas máquinas no confirme la conectividad no podrás hacer mucho más.

      Comprueba que el adaptador de red de la máquina Ubuntu 18.04 está configurado como «Adaptador puente» y que coge dirección IP desde tu router.

      En la entrada sobre la instalación de Ubuntu 18.04 LTS en VirtualBox encontrarás más información de cómo configurar el adaptador de red de tu servidor LAMP.

      Responder

Deja un comentario

Ads Blocker Image Powered by Code Help Pro

¡Detectado un bloqueador de publicidad!

Hemos detectado que está usando extensiones para bloquear anuncios prublicitarios. Por favor, ayúdenos desactivando dicho bloqueador para este sitio web. ¡Gracias!