DPIOT / 1

Preparar el servidor del aula con Debian

Entorno de servidor para el aula: Windows aloja Debian en WSL, y Debian ejecuta Apache, PHP 8.4 y la base de datos.

Curso 2026 / 2027Daniel Serrano Carrasco

01 / Objetivo

Abrir la consigna docente ↗

La preparación separa cuatro funciones: WSL 2 proporciona Debian, Apache2 publica las páginas, PHP 8.4 interpreta los programas y MariaDB almacena los datos. phpMyAdmin ofrece su administración desde una interfaz web.

02 / Instalar y comprobar WSL

Abre PowerShell con permisos de administración para instalar Debian; completa el reinicio si lo pide Windows:

wsl --install -d Debian
wsl --list --verbose

En el primer inicio de Debian define tu usuario Linux. Revisa después la columna VERSION: debe mostrar 2. Si la distribución ya existía, puedes convertirla con:

wsl --set-version Debian 2
Instalación limpia opcional

La siguiente operación solo corresponde a un reinicio completo del entorno, después de respaldar sus archivos: wsl --unregister Debian borra íntegramente la distribución; la instalación habitual no necesita ejecutar esa orden.

03 / Apache y PHP 8.4

A partir de aquí se trabaja dentro de Debian. Identifica antes la edición instalada para no combinar paquetes de bookworm (12) con los de trixie (13).

cat /etc/os-release
sudo apt update
sudo apt upgrade
sudo apt install -y apache2 ca-certificates curl gnupg lsb-release

Antes de instalar, revisa qué candidato ofrecen los repositorios para PHP 8.4:

apt-cache policy php8.4

Cuando exista candidato, continúa con los paquetes indicados. En caso contrario, sigue la referencia de Sury para la edición de Debian detectada y repite sudo apt update.

Configurar Sury cuando PHP 8.4 no está disponible

Este procedimiento incorpora claves y una fuente externa de paquetes; corresponde únicamente al caso en que los repositorios actuales no ofrezcan la versión requerida.

sudo apt install -y lsb-release ca-certificates curl
curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
printf 'deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ %s main\n' "$(lsb_release -sc)" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
sudo apt install -y php8.4 libapache2-mod-php8.4 php8.4-cli php8.4-mysql php8.4-mbstring php8.4-curl php8.4-xml php8.4-zip php8.4-bcmath php8.4-gd
sudo a2enmod php8.4
sudo service apache2 restart
php -v

El directorio publicado por Apache puede prepararse para editar allí los ejercicios:

sudo chown -R "$USER":"$USER" /var/www/html
mkdir -p /var/www/html/practicas
cd /var/www/html/practicas
printf '<?php echo "PHP activo: ".PHP_VERSION; ?>' > index.php

Abre http://localhost/practicas/. La respuesta correcta muestra información de la versión, no el texto del programa.

04 / MariaDB y phpMyAdmin

Instala el servidor de base de datos y su interfaz:

sudo apt install -y mariadb-server mariadb-client phpmyadmin
sudo service mariadb start
sudo service apache2 restart
mariadb --version

Al configurar phpMyAdmin, marca Apache2 con la barra espaciadora y completa la base de datos si el asistente la propone. Si no se publica, verifica primero qué configuración quedó instalada:

ls /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
sudo service apache2 reload

Entra a MariaDB con sudo mariadb para preparar una base de datos y una cuenta específica del ejercicio. Cambia la clave de muestra antes de lanzar:

CREATE DATABASE practicas CHARACTER SET utf8mb4;
CREATE USER 'practicas'@'localhost' IDENTIFIED BY 'CAMBIA_ESTA_CLAVE';
GRANT ALL PRIVILEGES ON practicas.* TO 'practicas'@'localhost';
EXIT;

Abre http://localhost/phpmyadmin/ y verifica que la cuenta accede a la base de datos. La administración de esta guía utiliza sudo mariadb y se usa un usuario propio para el trabajo del aula.

05 / Herramientas y diagnóstico

sudo apt install -y git curl wget nano vim htop tree unzip rsync openssh-server
sudo service ssh start
ProblemaRevisión
Apache no respondeRevisa sudo service apache2 status y comprueba si Windows tiene otro proceso escuchando en el puerto 80.
PHP se descarga o se ve como textoComprueba que libapache2-mod-php8.4 y su módulo están activos; reinicia Apache después de corregirlos.
phpMyAdmin no apareceVerifica la publicación en Apache y la carga de las extensiones PHP mysql y mbstring.
Fallan dependenciasContrasta VERSION_CODENAME con apt-cache policy para localizar una fuente de paquetes que no corresponda a tu edición.

06 / Evidencias y comprobaciones

Documenta los cinco controles con capturas obtenidas en tu instalación y anota las órdenes ejecutadas. La guía describe el procedimiento; no acredita que el equipo del aula ya lo haya completado.