Desplegando un Stack LAMPP en Docker
/ 4 min read
Tabla de contenidos
Descripción
Para esta tarea, se requiere instalar un stack LAMPP y ejecutar un archivo PHP en él.
¿Qué es un Stack LAMPP?
Un stack LAMP es un conjunto de programas instalados en un servidor para ejecutar aplicaciones web. Estos programas son:
- Linux: El sistema operativo del servidor.
- Apache: El servidor web.
- MySQL: El sistema de gestión de bases de datos.
- PHP: El lenguaje de programación del lado del servidor.
- PhpMyAdmin: Una herramienta para gestionar bases de datos MySQL.
Instalando el Stack LAMP
En mi caso, lo instalaré en un contenedor Docker. Para hacer esto, utilizaré la imagen oficial de Ubuntu 20.04.
Preparando el Contenedor
Para preparar el contenedor, el primer paso es crearlo:
docker run -ti --name despliegue_lampp -p 3000:80 -v ~/docker/despliegue_lampp:/var/www/html ubuntu:20.04Una vez creado, actualizamos los repositorios de paquetes y el sistema:
apt update && apt upgradeUna vez hecho esto, podemos comenzar a instalar los paquetes necesarios para el stack LAMPP.
Instalando Apache
Para ejecutar Apache en Ubuntu, lo primero que debemos hacer es instalar el paquete apache2:
apt install apache2Mientras se instala, nos pedirá configurar tzdata, que es el paquete responsable de la configuración de la zona horaria. En mi caso, elegiré la zona horaria de Madrid.
Una vez instalado, podemos comprobar que el servicio está detenido:
service apache2 statusPara iniciarlo, ejecutamos el siguiente comando y comprobamos que se ha iniciado correctamente:
service apache2 startservice apache2 statusCon esto, tenemos Apache instalado y en funcionamiento. Al ser un contenedor, podemos acceder a él desde el navegador de nuestra máquina anfitriona (host). Para hacer esto, necesitamos navegar a http://localhost:3000.
Instalando MySQL
En mi caso, instalaré MariaDB, que es un fork de MySQL. Para instalarlo, ejecutamos el siguiente comando:
apt install mariadb-serverUna vez instalado, podemos comprobar que el servicio está detenido, y para iniciarlo usamos el siguiente comando y comprobamos que se ha iniciado correctamente:
service mysql statusservice mysql startservice mysql statusCon esto, tenemos MySQL instalado y en funcionamiento.
Ahora utilizaremos el comando mysql_secure_installation para establecer la contraseña del usuario root y eliminar usuarios anónimos, usuarios de prueba y bases de datos de prueba. Para hacer esto, ejecutamos el siguiente comando:
mysql_secure_installationNos hará una serie de preguntas, a las que debemos responder con y (sí) o n (no):
- Enter current password for root: Presiona Enter (sin contraseña por defecto)
- Set root password?: Y (e introduce la contraseña deseada)
- Remove anonymous users?: Y
- Disallow root login remotely?: Y (crearemos un usuario separado para phpMyAdmin)
- Remove test database?: Y
- Reload privilege tables?: Y
Con esto, tenemos MySQL configurado y asegurado.
Crear un Usuario de Conexión para phpMyAdmin
Como hemos desactivado el acceso remoto para el usuario root, crearemos un usuario de conexión para phpMyAdmin. Para hacer esto, ejecutamos el siguiente comando:
mysql -u root -pEsto nos llevará a la consola de MySQL. Ahora crearemos el usuario de conexión para phpMyAdmin:
CREATE USER 'webmanager'@'%' identified by 'password';GRANT ALL PRIVILEGES ON *.* TO 'webmanager'@'%';FLUSH PRIVILEGES;exitPodemos verificar que podemos acceder con el usuario que creamos:
mysql -u webmanager -pInstalando PHP
La instalación de PHP es muy sencilla; solo necesitamos ejecutar el siguiente comando:
apt install php libapache2-mod-php php-mysqlCon esto, tenemos PHP instalado y funcionando. Podemos verificarlo con el siguiente comando:
php -vPara poder ejecutar archivos PHP en Apache, necesitamos reiniciar el servicio, ya que se inició antes de que tuviéramos PHP instalado. Para reiniciar el servicio, ejecutamos el siguiente comando:
service apache2 restartUna vez reiniciado, podemos verificar que podemos ejecutar archivos PHP en el navegador. Para hacer esto, creamos un archivo index.php en el directorio /var/www/html:
echo "<?php phpinfo(); ?>" > /var/www/html/index.phpAhora, si accedemos a http://localhost:3000 en nuestro navegador, deberíamos ver la página de información de PHP.
Conclusión
Con esto, hemos desplegado con éxito un stack LAMPP completo en un contenedor Docker. Esta configuración es perfecta para entornos de desarrollo y se puede replicar fácilmente en diferentes máquinas. El enfoque basado en contenedores garantiza la consistencia y facilita la gestión de múltiples entornos de desarrollo.