Creazione delle 3 VM Ubuntu e installazione dei servizi Backend, Frontend e DB
Obiettivo
In questa prima parte della guida descriviamo come creare tre macchine virtuali Ubuntu e configurare ciascuna con i servizi necessari:
- Frontend: server web statico con HTML
- Backend: applicazione Node.js con API REST
- DB01: server PostgreSQL
1. Creazione delle VM Ubuntu
Requisiti minimi per ciascuna VM
Sistema operativo: Ubuntu Server 22.04 LTS
CPU: 1 vCPU
RAM: 1-2 GB
Disco: 10 GB
Scheda di rete: Bridged o NAT (consigliato Bridged)
Nomi e indirizzi IP
| VM | Nome Host | IP |
|---|---|---|
| Frontend | frontend | 192.168.16.151 |
| Backend | backend | 192.168.16.152 |
| DB01 | db01 | 192.168.16.153 |
Configurare ogni VM con IP statico via Netplan.
2. Installazione e configurazione del Database (DB01)
Installazione di PostgreSQL
sudo apt update && sudo apt install postgresql -y
Creazione utente e database
sudo -u postgres psql
CREATE DATABASE myapp;
CREATE USER backend_user WITH ENCRYPTED PASSWORD ‘backend_pass’;
GRANT ALL PRIVILEGES ON DATABASE myapp TO backend_user;
\q
3. Installazione del Backend (backend)
sudo apt install nodejs npm -y
Struttura base del progetto
mio-backend/
├── server.js
├── db.js
├── routes/
│ └── users.js
├── package.json
Esempio di server.js
const express = require(‘express’);
const cors = require(‘cors’);
const app = express();
app.use(cors());
app.use(express.json());
const usersRoute = require(‘./routes/users’);
app.use(‘/api/users’, usersRoute);
app.listen(3000, () => {
console.log(‘Server backend in ascolto sulla porta 3000’);
});
Connessione al DB (db.js)
onst { Pool } = require(‘pg’);
const pool = new Pool({
user: ‘backend_user’,
host: ‘192.168.16.153’,
database: ‘myapp’,
password: ‘backend_pass’,
port: 5432,
});
module.exports = pool;
Installazione dipendenze
npm init -y
npm install express cors pg
4. Installazione del Frontend (frontend)
Creazione file index.html
<!DOCTYPE html>
<html>
<head>
<title>Gestione Utenti</title>
<script>
const backendURL = “http://192.168.16.152:3000/api/users”;
async function getUsers() {
const res = await fetch(backendURL);
const users = await res.json();
document.body.innerHTML += JSON.stringify(users);
}
window.onload = getUsers;
</script>
</head>
<body>
<h1>Lista Utenti</h1>
</body>
</html>
Installazione di un web server (es. Apache)
sudo apt install apache2 -y
sudo cp index.html /var/www/html/index.html
Nella prossima parte vedremo come configurare lo switch automatico di rete e IP per scenari di Disaster Recovery (DR) utilizzando Netplan e systemd.
