Saltar a contenido

Puesta en marcha

Para poder trabajar con un entorno de desarrollo local, hemos de preparar nuestro entorno de desarrollo con las herramientas comentadas. A lo largo del curso, vamos a utilizar la versión 8.X de PHP.

XAMPP

XAMPP es una distribución compuesta con el software necesario para desarrollar en entorno servidor. Se compone de las siguientes herramientas en base a sus siglas:

  • X para el sistema operativo (de ahí que se conozca también como LAMP o WAMP o MAMP, si hablamos de Linux, Windows o macOS).
  • A para Apache.
  • M para MySQL / MariaDB. También incluye phpMyAdmin para la administración de la base de datos desde un interfaz web.
  • P para PHP.
  • la última P para Perl.

Desde la propia página se puede descargar el archivo ejecutable para el sistema operativo de nuestro ordenador. Se recomienda leer la FAQ de cada sistema operativo con instrucciones para su puesta en marcha.

XAMPP en Windows

Si vas a trabajar con tu propio ordenador, XAMPP es una solución más sencilla que Docker, sobre todo si trabajas con Windows como sistema operativo.

Docker

Docker es un gestor de contenedores, considerando un contenedor como un método de virtualización del sistema operativo.

El uso de contenedores requiere menos recursos que una máquina virtual, por lo tanto, su lanzamiento y detención son más rápidos que las máquinas virtuales.

Así pues, Docker permite crear, probar e implementar aplicaciones rápidamente, a partir de una serie de plantillas que se conocen como imágenes de Docker.

Para ello es necesario tener instalado Docker Desktop en nuestros entornos de desarrollo (el cual ya incluye en núcleo de Docker y la herramienta docker compose).

Versiones

A lo largo del curso vamos a usar PHP 8.3. Respecto a Docker, para escribir los apuntes hemos utilizado la version 27 y la version 2.29.3 de docker compose. Finalmente, la versión de Docker Desktop que hemos utilizado es la 4.34.2.

Plantilla Servidor Web + PHP

Docker se basa en el uso de imágenes para crear contenedores. Docker Compose simplifica el trabajo con múltiples contenedores, y por ello, para facilitar el arranque, nos centraremos en Docker Compose utilizando una plantilla que únicamente va a contener como servicios Apache/Nginx y PHP.

Para ello, vamos a rellenar el archivo docker-compose.yaml con:

  # Services
  services:
    # Apache + PHP
    apache_php:
      image: php:8-apache
      # Preparamos un volumen para almacenar nuestro código
      volumes:
        - ./src/:/var/www/html
      expose:
        - 80
      ports:
        - 80:80
  # Services
  services:
    nginx:
      image: nginx:1.19
      ports:
        - 80:80
      volumes:
        - ./src:/var/www/php
        - ./.docker/nginx/conf.d:/etc/nginx/conf.d # cargamos la configuración de un fichero externo
      depends_on:
        - php   # enlazamos nginx con php
    php:
      image: php:8.0-fpm
      working_dir: /var/www/php
      volumes:
        - ./src:/var/www/php

Dentro de la carpeta que contenga dicho archivo, hemos de crear una carpeta src donde colocaremos nuestro código fuente. Para facilitar la puesta en marcha, tenéis la plantilla de Apache/PHP (versión 2 con a2enmod rewrite) o Nginx/PHP disponible para su descarga.

Cuando estemos listos, lanzaremos el servicio mediante:

docker-compose up -d

Si queremos ver el contenido de los archivos de log del servicio utilizaremos:

docker-compose logs -f

Finalmente, si queremos acceder a un terminal interactivo dentro del contenedor:

docker exec -it nombreContenedor bash

Otros comandos que podemos llegar a utilizar son:

  • docker ps: Ver los contenedores que se están ejecutando
  • docker ps -a: Ver todos los contenedores
  • docker start nombreContenedor: Arrancar un contenedor
  • docker images: Ver las imágenes que tenemos descargadas

Otra forma más sencilla para lanzar de nuevo los contenedores y gestionarlos una vez creados es utilizar el interfaz gráfico que ofrece Docker Desktop.

Docker stack

Existen diversas opciones mediante Docker que ofrecen soluciones completas y empaquetas para todo el stack de desarrollo. En posteriores sesiones utilizaremos tanto Devilbox como Laradock

Pero quiero saber cómo funciona...

En el módulo de Despliegue de Aplicaciones Web estudiaréis en profundidad, además de Docker, Apache y otros servicios que nos servirán de ayuda para el desarrollo en entorno servidor.

Entorno de desarrollo

En este curso vamos a emplear Visual Studio Code como entorno de desarrollo (IDE). Existen otras alternativas, siendo PhpStorm la más conocida pero siendo de pago. Otra posibilidad es utilizar Eclipse, aunque es un entorno bastante pesado.

VSCode es un editor de código fuente que se complementa mediante extensiones. Para facilitar el trabajo a lo largo del curso vamos a utilizar las siguientes extensiones:

En la siguiente sesión comenzaremos a utilizar Intelephense pero en esta sesión nos vamos a centrar en Docker (más adelante instalaremos nuevas extensiones).

Por ejemplo, si abrimos la extensión de Docker, podréis visualizar tanto los contenedores como las imágenes de vuestro sistema. Desde cada contenedor, mediante clic derecho, podemos iniciar/detener/reiniciar cada contenedor, así como ver su contenido o abrir un terminal dentro del mismo.

Docker en VSCode

Docker en VSCode.

Hola Mundo

Y como no, nuestro primer ejemplo será un Hola Mundo en PHP.

Si nombramos el archivo como index.php, al acceder a http://localhost automáticamente cargará el resultado:

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hola Mundo</title>
</head>
<body>
    <?php
        echo "Hola Mundo";
    ?>
</body>
</html>

Hola Mundo

Hola Mundo.

Actividades

  • 📝 AC 103. (RA1 / CE1c CE1e / IC1 / 3p) El Departamento de infraestructuras ha contratado un servidor web para desplegar la aplicación. El DevOps1 a cargo del proyecto nos solicita que configuremos un entorno de desarrollo local con PHP. No olvidéis que debemos mostrar el proceso y las principales características.

  • 🔬 AP 104. (RA1 / CE1c CE1e / IC1 / 3p) Como parte de la documentación que debemos generar para el proyecto que nos han solicitado, debéis mostrar y comentae las principales variables que aparecen en el fichero php.ini del servidor que se ha configurado para trabajar en local.


  1. DevOps es un enfoque de desarrollo de software que integra prácticas de desarrollo (Dev) y operaciones (Ops) para mejorar la colaboración, la automatización y la entrega continua de aplicaciones, facilitando así un ciclo de vida del software más ágil y eficiente.