We hope you find this tutorial helpful. In addition to guides like this one, we provide simple cloud infrastructure for developers. Learn more →

Cómo instalar en Ubuntu 18.04 la pila LAMP — Linux, Apache, MySQL y PHP

PostedJune 21, 2018 22.1k views LAMP Stack PHP MySQL Apache Ubuntu 18.04

Una versión anterior de este tutorial fue escrita por Brennan Bearnes.

Introducción

La pila LAMP hace referencia a un grupo de diferentes programas de código abierto que típicamente son instalados en conjunto, con el objetivo de habilitar a un servidor como prestador de los servicios de páginas web dinámicas, así como los de aplicaciones web. De hecho, este término es el acrónimo que representa al sistema operativo Linux, con el servidor de aplicaciones Apache, donde los datos del sitio son almacenados en una base de datos MySQL, y el contenido dinámico es procesado mediante PHP.

En esta guía, instalaremos una pila LAMP en un servidor Linux 18.04.

Prerrequisitos

Para poder continuar con este tutorial, necesitarás tener un servidor Ubuntu 18.04, además debes tener configurada una cuenta de usuario diferente a la de superusuario (non-root), pero que cuente con los permisos para utilizar el comando sudo, además necesitarás contar con un cortafuegos (firewall) básico. Esto lo puedes configurar usando nuestra guía inicial de configuración para Ubuntu 18.04.

Paso 1 — Instalar Apache y actualizar el cortafuegos

El servidor web, Apache es uno de los servidores web más populares en el mundo. Se encuentra bien documentado y ha sido utilizado en buena parte de la historia de la web, hechos que lo convierten en un muy buen candidato para ser escogido como el servidor por defecto de páginas web.

Instala Apache usando el administrador de paquetes de Ubuntu, apt:

  • sudo apt update
  • sudo apt install apache2

Como éste es un comando sudo, estas operaciones son ejecutadas con los privilegios de superusuario. Te preguntará por la contraseña de tu cuenta regular para verificar tus intenciones.

Una vez hayas autenticado tu contraseña, apt te informará cuáles paquetes se instalarán y cuánto espacio en disco será requerido. Digita Y y después Enter para continuar, así, la instalación procederá.

Ajuste del cortafuegos para permitir el tráfico web

Asumiendo que seguiste las instrucciones de configuración inicial del servidor y que habilitaste el cortafuegos UFW, ahora podrás asegurarte que tu cortafuegos permite el tráfico HTTP y HTTPS. Para hacerlo, verifica que el UFW tiene un perfil de aplicación para Apache mediante el comando:

  • sudo ufw app list
Output
Available applications: Apache Apache Full Apache Secure OpenSSH

Si solicitas la información del perfil Apache Full, se debería mostrar que el tráfico se encuentra habilitado para los puertos 80 y 443:

  • sudo ufw app info "Apache Full"
Output
Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp

Para permitir el tráfico de entrada HTTP y HTTPS para este perfil, digita:

  • sudo ufw allow in "Apache Full"

Puedes hacer una comprobación instantánea de que todo ha ido según lo planeado visitando la dirección IP pública de tu servidor en un navegador (si aún no conoces la dirección IP pública de tu servidor en la siguiente sección encontrarás cómo hallarla):

http://your_server_ip

Verás la página web predeterminada de Apache para Ubuntu 18.04, la cual tiene propósitos informativos y de prueba. Debería verse semejante a:

Página predeterminada de Ubuntu 18.04 Apache

Si viste esta página, entonces tu servidor web se encuentra instalado correctamente y es accesible a través del cortafuegos.

Cómo encontrar la dirección IP pública de tu servidor

Si no conoces la dirección IP pública de tu servidor, existen varias formas de encontrarla. Usualmente, es la dirección que usas para conectar tu servidor a través de SSH.

Hay diferentes formas de buscarla con la línea de comandos. En primer lugar, puedes usar la herramienta iproute2 para obtener tu IP, digitando lo siguiente:

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Esto retornará dos o tres líneas. Todas serán direcciones correctas, sin embargo, es posible que tu computador solo pueda usar una de ellas, entonces es recomendable que las pruebes todas.

Un método alternativo es el uso de la utilidad curl para contactar un servicio externo que te diga cómo él ve a tu servidor. Esto se hace preguntándole a un servidor específico cuál es tu dirección IP:

  • sudo apt install curl
  • curl http://icanhazip.com

Sin importar el método que uses para obtener tu dirección IP, escríbela en la barra de dirección de tu navegador web para ver la página predeterminada del Apache.

Paso 2 — Instalar MySQL

Ahora que tienes tu servidor web activo y funcional, es el momento de instalar MySQL. MySQL es un sistema de administración de bases de datos. Basicamente, él organizará y proveerá acceso a las bases de datos donde tu sitio podrá guardar información.

De nuevo, usa apt para adquirir e instalar este software:

  • sudo apt install mysql-server

Nota: En este caso, no es necesario que uses sudo apt update antes del comando. Ya que lo usaste recientemente cuando instalaste Apache, el índice de paquetes de tu computador debería encontrarse actualizado.

De nuevo se te desplegará una lista de paquetes a instalar, así como el espacio en disco que requerirá. Presiona Y para continuar.

Cuando la instalación esté completa, debes ejecutar un archivo de comandos de seguridad que viene preinstalado con MySQL, éste removerá algunos parámetros peligrosos, así como asegurará el acceso a tu base de datos. Ejecuta el archivo interactivo de comandos mediante:

  • sudo mysql_secure_installation

Se te preguntará si quieres configurar el conector de validación de contraseña: VALIDATE PASSWORD PLUGIN.

Nota: Habilitar esta funcionalidad dependerá de juzgar las necesidades de tu servidor. Si está habilitada una contraseña que no cumpla con un criterio específico, será rechazada por MySQL y generará un error. Esto podría ser un problema si utilizas contraseñas débiles en conjunto con software que configura automáticamente credenciales de usuario de MySQl, como por ejemplo los paquetes de Ubuntu para phpMyAdmin. Es seguro dejar esta validación deshabilitada, pero recuerda siempre utilizar contraseñas únicas y fuertes para las credenciales de las bases de datos.

Responde Y si estás de acuerdo, cualquier otra respuesta continuará sin realizar la habilitación.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Si respondiste “yes”, se te solicitará que selecciones el nivel de validación de contraseña. Debes tener en cuenta que si digitas 2 representando el nivel más fuerte, recibirás errores al intentar utilizar una contraseña que no contenga números, letras mayúsculas y minúsculas, así como caracteres especiales; además la contraseña no podrá estar basada en palabras comunes en un diccionario.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Sin importar el nivel escogido para VALIDATE PASSWORD PLUGIN, tu servidor te solicitará, a continuación, seleccionar y confirmar la contraseña para el usuario root de MySQL. Ésta es una cuenta administrativa dentro MySQL con privilegios incrementados. Puede ser entendida de manera similar a la cuenta root del servidor mismo (Sin embargo, estarás configurando una cuenta específica para MySQL). Asegúrate de utilizar una contraseña fuerte y única, no debería dejarse en blanco.

Si habilitaste la validación de contraseña, se te mostrará qué tan fuerte es la contraseña para la cuenta root que acabas de introducir y tu servidor preguntará si quieres cambiarla. Si crees que es adecuado como está, digita N para seleccionar "no" en la línea de comandos:

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Para las siguientes preguntas, presiona Y y pulsa la tecla Enter en cada sugerencia. Esto removerá algunos usuarios anónimos y la base de datos de prueba, deshabilitará ingresos remotos del root, y cargará estas nuevas reglas, de tal modo que MySQL respete inmediatamente los cambios que se acaban de hacer.

En este punto, tu sistema de bases de datos se encuentra configurado y puedes seguir con la instalación de PHP, el componente final de la pila LAMP.

Paso 3 — Instalar PHP

PHP es el componente de tu configuración que procesa código para desplegar contenido dinámico. Puede ejecutar archivos, conectarse a tus bases de datos MySQL para obtener información, y manejar la visualización del contenido procesado sobre tu servidor web.

Una vez más usaremos el sistema apt para instalar PHP. Adicionalmente lo podemos configurar para que se ejecute sobre el servidor Apache y para que se comunique con la base de datos MySQL:

  • sudo apt install php libapache2-mod-php php-mysql

Esto debería instalar PHP sin problemas, sin embargo, probaremos esta instalación en este momento.

En la mayoría de los casos, desearás modificar la forma mediante la cual Apache sirve archivos cuando un directorio es solicitado. En este momento, si un usuario solicita un directorio del servidor, Apache buscará, en primera instancia, un archivo llamado index.html. Nosotros queremos que el servidor web le dé prelación a los archivos PHP sobre cualquier otro archivo. Para lo cual haremos que el Apache busque el archivo index.php en primer lugar.

Para lograrlo, digita el siguiente comando para abrir el archivo dir.conf en un editor de texto con privilegios de superusuario:

  • sudo nano /etc/apache2/mods-enabled/dir.conf

Debería verse semejante a esto:

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Mueve el archivo de índice de PHP (subrayado arriba) a la primera posición después de la especificación DirectoryIndex, debería verse similar a:

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Cuando termines, graba y cierra el archivo presionando las teclas Ctrl + X. Confirma los cambios presionando Y, y a continuación pulsa la tecla Enter para verificar el lugar de grabación del archivo.

A continuación, deberás reiniciar el servidor Apache para que tus cambios sean reconocidos, lo puedes hacer mediante el comando:

  • sudo systemctl restart apache2

También podrás verificar el estado del servicio apache2 utilizando systemctl:

  • sudo systemctl status apache2
Sample Output
● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Tue 2018-04-23 14:28:43 EDT; 45s ago Docs: man:systemd-sysv-generator(8) Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) Tasks: 6 (limit: 512) CGroup: /system.slice/apache2.service ├─13623 /usr/sbin/apache2 -k start ├─13626 /usr/sbin/apache2 -k start ├─13627 /usr/sbin/apache2 -k start ├─13628 /usr/sbin/apache2 -k start ├─13629 /usr/sbin/apache2 -k start └─13630 /usr/sbin/apache2 -k start

Para ampliar la funcionalidad de PHP, tienes la posibilidad de instalar algunos módulos adicionales. Para ver las opciones disponibles de módulos y librerías de PHP, envía los resultados de apt search a less, un paginador que te permitirá navegar dentro de la salida de otro comando:

  • apt search php- | less

Usa las flechas para moverte hacia arriba y abajo, y pulsa Q para salir.

Como resultado obtendrás todos los componentes opcionales que puedes instalar. El sistema te mostrará una descripción corta de cada uno de ellos:

bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
  Tracks usage of TCP/IP and builds html files with graphs

bluefish/bionic 2.2.10-1 amd64
  advanced Gtk+ text editor for web and software development

cacti/bionic 1.1.38+ds1-1 all
  web interface for graphing of monitoring systems

ganglia-webfrontend/bionic 3.6.1-3 all
  cluster monitoring toolkit - web front-end

golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
  PHP-like Compression and Archive Extensions in Go

haserl/bionic 0.9.35-2 amd64
  CGI scripting program for embedded environments

kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php

kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php-l10n
…
:

Para indagar más sobre las funcionalidades de cada módulo, simplemente puedes buscar en la web su descripción, o alternativamente, puedes ver la descripción larga de cada paquete, digitando:

  • apt show package_name

La salida será extensiva, con un campo en particular llamado Description que tendrá una explicación más extensa acerca de la funcionalidad que el módulo provee.

Por ejemplo, para ver las funcionalidades del módulo php-cli, podrías digitar:

  • apt show php-cli

En compañía de mucha más información, verás algo como lo siguiente:

Output
… Description: command-line interpreter for the PHP scripting language (default) This package provides the /usr/bin/php command interpreter, useful for testing PHP scripts from a shell or performing general shell scripting tasks. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. . This package is a dependency package, which depends on Ubuntu's default PHP version (currently 7.2). …

Si después de tu consulta decides instalar algún paquete, lo puedes hacer mediante el comando apt install, de la misma forma que lo has hecho para otro software.

Si te das cuenta que necesitas instalar php-cli, puedes escribir:

  • sudo apt install php-cli

Si deseas instalar más de un módulo, lo puedes hacer listándolos separados por espacio, después del comando apt install, semejante a lo siguiente:

  • sudo apt install package1 package2 ...

Para este punto, tu pila LAMP se encuentra instalada y configurada. Sin embargo, antes de hacer más cambios o de desplegar una aplicación, sería beneficioso hacer una prueba proactiva de la configuración de PHP, quizá haya alguna situación que merezca alguna atención en este momento.

Paso 4 — Evaluar el procesamiento de PHP sobre tu servidor web

Con el objetivo de evaluar si tu sistema está configurado de manera correcta para usar PHP, crea una archivo de comandos básico, llamado info.php. Para que Apache pueda encontrar y servir este archivo de manera correcta, debe ser alojado en un directorio muy específico, que es llamado "web root".

En Ubuntu 18.04, este directorio se encuentra localizado en /var/www/html/. Crea el archivo en ese lugar digitando:

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

Esto creará un archivo en blanco. Introduce el siguiente código PHP válido, dentro del archivo de texto:

info.php
<?php
phpinfo();
?>

Cuando termines, graba y cierra el archivo.

Ahora ya puedes probar si tu servidor web se encuentra habilitado para desplegar correctamente contenido generado por este archivo de comandos PHP. Para hacerlo, visita una página web específica en tu navegador, necesitarás tu dirección pública de nuevo.

La dirección que deberás visitar es:

http://your_server_ip/info.php

La página que deberías estar viendo debe ser similar la siguiente:

Información predeterminada de PHP para Ubuntu 18.04

Esta página provee información básica sobre tu servidor, recogida desde la perspectiva de PHP. Es útil cuando necesites hacer algún tipo de seguimiento o para verificar que la configuración deseada ha sido aplicada de manera correcta.

Si pudiste ver esta página en tu navegador, tu PHP está trabajando según lo esperado.

Probablemente quieras remover este archivo después de la prueba, éste puede dar información sobre tu servidor a usuarios no autorizados. Para hacer esto, digita el siguiente comando:

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

Siempre puedes crear este archivo de nuevo en caso que necesites acceder a esta información en otra oportunidad.

Conclusión

Ahora que tienes una pila LAMP instalada, tienes varias opciones de tareas para hacer después. Básicamente, ya cuentas con una plataforma que te permitirá instalar la mayoría de tipos de sitios web, así como aplicaciones web en tu servidor.

Como siguiente paso inmediato, debes asegurarte que que la conexión a tu servidor web es segura, tu servidor debería prestar sus servicios mediante HTTPS. La manera más sencilla es usando nuestra guía: encriptemos Esto asegurará tu sitio con un certificado gratuito TLS/SSL.

Otras opciones muy populares que tienes son:

Nota: Actualizaremos los enlaces que aparecen en este artículo tan pronto se actualice nuestra documentación a la versión 18.04.

2 Comments

Creative Commons License