Creación de Cliente-Servidor
Requerimiento - Cliente/Servidor (recrear el ambiente, ya con una máquina virtual o con dos computadoras en Red)
Para cumplir con el requisito solicitado por el profesor Henry Picado, se va a utilizar una máquina virtual con el sistema operativo Ubuntu donde se realizara la instalación de la base de datos MySQL y como cliente se utilizara una computadora con el sistema operativo Windows donde se ejecutara la aplicación web.
Información de acceso de la VM
- Usuario: eco-celestial
- Contraseña: eco_celestial1234
- IP: 192.168.50.240/24
- SSH:
ssh eco-celestial@192.168.50.240
Luego de crear la máquina virtual se le va a estar configurando una IP estática a nuestra máquina esto para que se mas fácil de identificar y de esa forma nos aseguramos que nuestra IP no vaya a cambiar debido a DHCP. Esto también nos facilita las configuraciones y de esta forma mejoramos la configuración. revisar mas a fondo para parafrasear mejor la idea
-
Instalar MySQL Server
Actualizamos el sistema y procedemos a instalar MySQL Server
apt update apt install mysql-server -yVerificamos que el servicio de MySQL esté corriendo
systemctl status mysql -
Asegurar MySQL (password root y ajustes básicos)
Ejecuta el comando:
mysql_secure_installationTe va a ir preguntando varias cosas. Aquí te pongo exactamente qué responder.
-
Would you like to setup VALIDATE PASSWORD component? Responde: n
-
Remove anonymous users? (Press y|Y for Yes, any other key for No). Responde: y
-
Disallow root login remotely? Responde: y
-
Remove test database and access to it? Responde: y
-
Reload privilege tables now? Responde: y
-
-
Permitir conexiones desde tu Windows (clave)
Por defecto MySQL solo acepta localhost. Por lo cual se debe editar el archivo:
nano /etc/mysql/mysql.conf.d/mysqld.cnfBuscamos la línea:
bind-address = 127.0.0.1Y se cambia por la línea:
bind-address = 0.0.0.0Reiniciamos MySQL
systemctl restart mysql -
Crear la base de datos y un usuario remoto
Entramos a MySQL
mysql mysql -u root -pCreamos la base de datos
CREATE DATABASE eco_celestial;Crea un usuario que se conecte desde tu PC (Windows): (pon tu IP real del host o usa % para permitir desde cualquier IP de la red)
CREATE USER 'eco_celestial'@'%' IDENTIFIED BY 'eco_celestial1234'; GRANT ALL PRIVILEGES ON eco_celestial.* TO 'eco_celestial'@'%'; FLUSH PRIVILEGES; EXIT;
CREATE USER 'eco_celestial'@'localhost' IDENTIFIED BY 'tu_clave';
GRANT ALL PRIVILEGES ON eco_celestial.* TO 'eco_celestial'@'localhost';
GRANT DROP ON . TO 'eco_celestial'@'localhost';
FLUSH PRIVILEGES;
-
Abrir el puerto del firewall en Ubuntu
Si tienes UFW activo:
ufw allow 3306/tcp ufw enable ufw status -
Probar conexión desde Windows
Crear un archivo en nuestro proyecto Laragon. Ruta de ejemplo:
C:\laragon\www\eco_celestial_mvc\test_conexion.phpAl archivo
test_conexion.phpse le debe agregar la información:<?php $host = "192.168.50.240"; // IP de tu VM $db = "eco_celestial"; $user = "eco_celestial"; $pass = "eco_celestial1234"; // el que le pusiste al usuario en MySQL Ubuntu try { $pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass); echo "✅ Conexión exitosa al MySQL remoto 🎉"; } catch (PDOException $e) { echo "❌ Error de conexión: " . $e->getMessage(); } ?>En el navegador abrir la dirección de nuestro proyecto, por ejemplo,
http://localhost:90/eco_celestial_mvc/test_conexion.php.Otra alternativa seria usar la terminal de Larago y ejecutar los comandos:
mysql --version mysql -h 192.168.50.240 -u eco_celestial -pSi entra y pide la contraseña creada anteriormente en MySQL en el paso 4 significa que esta funcionando.
-
Conectar tu sistema aplicación PHP (Windows) a MySQL en Ubuntu
En nuestro proyecto MVC, abrimos el archivo de configuración de la base de datos
config/database.phpy cambiamos:$host = 'localhost'; $db = 'eco_celestial'; $user = 'root'; $pass = '';Por la información de la IP configurada en nuestra máquina virtual y la información creada en MySQL, por ejemplo:
$host = '192.168.50.240'; // IP de la VM Ubuntu $db = 'eco_celestial'; $user = 'eco_celestial'; $pass = 'eco_celestial1234';Si la conexión es exitosa nuestra app en Windows estará conectada a MySQL en Ubuntu (Cliente/Servidor real).
Respuesta de ChatGPT
Opción recomendada (la más práctica): BD en una Máquina Virtual
📌 Cliente: tu Windows (navegador + aplicación PHP)
📌 Servidor: una VM con Ubuntu/Debian corriendo MySQL
Por qué te la recomiendo:
- Es lo más fácil de explicar en la exposición.
- Se nota clarísimo el modelo cliente/servidor (porque están en equipos distintos).
- No dependes de internet ni de tarjeta de crédito.
- Te sirve perfecto para demostrar la red (IP, ping, conexión, puertos).
Cómo quedaría:
- Windows (host): XAMPP + tu app PHP
- VM Linux: MySQL Server
- En
config/database.phpconectas con la IP de la VM, por ejemplo:$host = '192.168.1.50';
✅ Evidencia que puedes mostrar al profe:
- Captura de
ip aen Linux mostrando IP - Captura de
pingdesde Windows a la VM - Captura de MySQL corriendo y la BD con tablas
- Captura de tu sistema funcionando conectado a esa IP
Mi consejo final (lo que yo haría en tu caso)
✅ Usa Máquina Virtual con MySQL Server
Es la opción más segura para cumplir el requisito y es fácil de demostrar.
📌 Además te permite decir:
“La aplicación está en el cliente (Windows), y la base de datos está en el servidor (Linux), conectados por red LAN.”
Eso cumple perfecto con Cliente/Servidor.