Cómo instalar LAMP en Ubuntu 18.04 LTS

Cómo instalar LAMP en Ubuntu 18.04 LTS

Dedico esta entrada a explicar cómo instalar LAMP en Ubuntu 18.04 LTS paso a paso. 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 seguir esta guía de instalación LAMP en Ubuntu 18.04 LTS partiremos 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 a través de software existente en los repositorios oficiales de la propia distribución. Por tanto, la primera acción es actualizar la información de los repositorios:

~$ sudo apt update

Si hubiese actualizaciones de paquetes ya instalados, conviene actualizarlos antes de descargar el software de los componentes del sistema LAMP:

~$ sudo apt -y upgrade

Ahora ya sí que podemos descargar los paquetes que integran el entorno LAMP. Los paquetes imprescindibles son apache2, mariadb-server, php y php-mysql, con sus correspondientes dependencias. Los instalaremos mediante apt en un solo comando:

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

Esto sólo tomará unos minutos, 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:

~$ systemctl status apache2 mariadb
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Mon 2019-03-18 19:20:32 CET; 3min 9s ago
 Main PID: 9959 (apache2)
    Tasks: 6 (limit: 526)
   CGroup: /system.slice/apache2.service
           ├─9959 /usr/sbin/apache2 -k start
           ├─9977 /usr/sbin/apache2 -k start
           ├─9978 /usr/sbin/apache2 -k start
           ├─9979 /usr/sbin/apache2 -k start
           ├─9980 /usr/sbin/apache2 -k start
           └─9981 /usr/sbin/apache2 -k start

............... ubuntu64 systemd[1]: Starting The Apache HTTP Server...
............... ubuntu64 systemd[1]: Started The Apache HTTP Server.

● mariadb.service - MariaDB 10.1.38 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-03-18 19:20:14 CET; 3min 26s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 9534 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 27 (limit: 526)
   CGroup: /system.slice/mariadb.service
           └─9534 /usr/sbin/mysqld

............... ubuntu64 /etc/mysql/debian-start[9567]: mysql
............... ubuntu64 /etc/mysql/debian-start[9567]: performance_schema
............... ubuntu64 /etc/mysql/debian-start[9567]: Phase 6/7: Checking and upgrading tables
............... ubuntu64 /etc/mysql/debian-start[9567]: Processing databases
............... ubuntu64 /etc/mysql/debian-start[9567]: information_schema
............... ubuntu64 /etc/mysql/debian-start[9567]: performance_schema
............... ubuntu64 /etc/mysql/debian-start[9567]: Phase 7/7: Running 'FLUSH PRIVILEGES'
............... ubuntu64 /etc/mysql/debian-start[9567]: OK
............... ubuntu64 /etc/mysql/debian-start[9608]: Checking for insecure root accounts.
............... ubuntu64 /etc/mysql/debian-start[9615]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables

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 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
LAMP en Ubuntu 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 lamp en ubuntu 18.04 lts

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.2/. 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/.

Editaremos /etc/php/7.2/apache2/php.ini para realizar los ajustes que nos puedan interesar:

~$ sudo nano /etc/php/7.2/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

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.

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 editar el archivo /etc/mysql/mariadb.conf.d/50-server.cnf:

~$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Buscaremos 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 como root con sudo mysql:

~$ sudo mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 30
Server version: 10.1.38-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create user TU-USUARIO identified by 'TU-CONTRASEÑA';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on *.* to TU-USUARIO with grant option;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

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. 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, WordPress, phpmyadmin, 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 este sitio!

¿Crees que esta guía para instalar LAMP en Ubuntu 18.04 LTS 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. ¡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