Replace custom scripts with systemd for managing backend and frontend services

Replace custom process management scripts (`check_backend.sh`, `check_frontend.sh`, `restart_all.sh`) with `systemctl` commands to ensure proper service management and virtual environment utilization.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 7a657272-55ba-4a79-9a2e-f1ed9bc7a528
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 9aa98b1a-1ee1-47f9-a579-83bad5992ed1
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/449cf7c4-c97a-45ae-8234-e5c5b8d6a84f/7a657272-55ba-4a79-9a2e-f1ed9bc7a528/MmMtYN7
This commit is contained in:
marco370 2026-02-16 12:02:53 +00:00
parent 3e0bd64b14
commit 34d830b275
4 changed files with 85 additions and 50 deletions

View File

@ -0,0 +1,41 @@
Cerca il watchdog che riavvia il backend
grep -r "Backend Python NON attivo" /opt/ids/ --include="*.sh"
grep -r "Backend Python NON attivo" /etc/cron* /var/spool/cron/
# Verifica cron jobs attivi
crontab -l
crontab -l -u ids
# Verifica timer systemd
systemctl list-timers --all | grep ids
/opt/ids/deployment/check_backend.sh: echo "[$(date)] Backend Python NON attivo, riavvio..." >> "$LOG_FILE"
# ============================================
# SISTEMA IDS - CONFIGURAZIONE AUTOMATICA
# ============================================
# Training ML ogni 12 ore (alle 00:00 e 12:00)
0 */12 * * * /opt/ids/deployment/cron_train.sh
# Detection automatica ogni 5 minuti
*/3 * * * * /opt/ids/deployment/cron_detect.sh
# Verifica processo backend Python ogni 5 minuti (riavvia se non attivo)
*/5 * * * * /opt/ids/deployment/check_backend.sh >> /var/log/ids/cron.log 2>&1
# Verifica processo frontend ogni 5 minuti (riavvia se non attivo)
*/5 * * * * /opt/ids/deployment/check_frontend.sh >> /var/log/ids/cron.log 2>&1
# Pulizia log settimanale (ogni domenica alle 02:00)
0 2 * * 0 find /var/log/ids -name "*.log" -size +100M -exec truncate -s 50M {} \; >> /var/log/ids/cron.log 2>&1
# Restart completo del sistema ogni settimana (domenica alle 03:00)
0 3 * * 0 /opt/ids/deployment/restart_all.sh >> /var/log/ids/cron.log 2>&1
# Backup database giornaliero (alle 04:00)
0 4 * * * /opt/ids/deployment/backup_db.sh >> /var/log/ids/cron.log 2>&1
0 3 * * * /opt/ids/deployment/cleanup_database.sh >> /var/log/ids/cleanup.log 2>&1
Mon 2026-02-16 13:05:00 CET 4min 9s left Mon 2026-02-16 12:05:00 CET 55min ago ids-analytics-aggregator.timer ids-analytics-aggregator.service
Mon 2026-02-16 13:14:33 CET 13min left Mon 2026-02-16 12:13:57 CET 46min ago ids-cleanup.timer ids-cleanup.service
Mon 2026-02-23 03:00:00 CET 6 days left Mon 2026-02-16 03:00:00 CET 10h ago ids-ml-training.timer ids-ml-training.service
- - Mon 2026-02-16 12:48:47 CET 12min ago ids-auto-block.timer ids-auto-block.service
- - Mon 2026-02-16 13:00:01 CET 48s ago ids-list-fetcher.timer ids-list-fetcher.service

View File

@ -1,34 +1,28 @@
#!/bin/bash
# =========================================================
# CHECK BACKEND - Verifica e riavvia backend Python se necessario
# Usa systemctl per gestire il servizio (con virtual environment)
# =========================================================
PROCESS_NAME="python3.11 python_ml/main.py"
PID_FILE="/var/log/ids/backend.pid"
LOG_FILE="/var/log/ids/backend.log"
WORK_DIR="/opt/ids"
mkdir -p /var/log/ids
# Check if backend is running
if pgrep -f "$PROCESS_NAME" > /dev/null; then
# Backend running, update PID
pgrep -f "$PROCESS_NAME" > "$PID_FILE"
# Check if systemd service is active
if systemctl is-active --quiet ids-ml-backend; then
exit 0
else
echo "[$(date)] Backend Python NON attivo, riavvio..." >> "$LOG_FILE"
echo "[$(date)] Backend Python NON attivo, riavvio via systemctl..." >> "$LOG_FILE"
# Kill any orphaned Python processes
pkill -f "python_ml/main.py" 2>/dev/null
# Restart via systemctl (usa il venv configurato nel service)
systemctl restart ids-ml-backend
# Wait a moment
sleep 2
# Wait for startup
sleep 3
# Start backend
cd "$WORK_DIR/python_ml"
nohup /usr/bin/python3.11 main.py >> "$LOG_FILE" 2>&1 &
NEW_PID=$!
echo $NEW_PID > "$PID_FILE"
echo "[$(date)] Backend riavviato con PID: $NEW_PID" >> "$LOG_FILE"
if systemctl is-active --quiet ids-ml-backend; then
echo "[$(date)] Backend riavviato con successo via systemctl" >> "$LOG_FILE"
else
echo "[$(date)] ERRORE: Backend non si è avviato. Controlla: journalctl -u ids-ml-backend" >> "$LOG_FILE"
fi
fi

View File

@ -1,41 +1,28 @@
#!/bin/bash
# =========================================================
# CHECK FRONTEND - Verifica e riavvia frontend Node.js se necessario
# Usa systemctl per gestire il servizio
# =========================================================
PROCESS_NAME="npm run dev"
PID_FILE="/var/log/ids/frontend.pid"
LOG_FILE="/var/log/ids/frontend.log"
WORK_DIR="/opt/ids"
mkdir -p /var/log/ids
# Check if frontend is running
if pgrep -f "vite" > /dev/null; then
# Frontend running, update PID
pgrep -f "vite" > "$PID_FILE"
# Check if systemd service is active
if systemctl is-active --quiet ids-frontend; then
exit 0
else
echo "[$(date)] Frontend Node NON attivo, riavvio..." >> "$LOG_FILE"
echo "[$(date)] Frontend Node NON attivo, riavvio via systemctl..." >> "$LOG_FILE"
# Kill any orphaned Node processes
pkill -f "vite" 2>/dev/null
pkill -f "npm run dev" 2>/dev/null
# Restart via systemctl
systemctl restart ids-frontend
# Wait a moment
sleep 2
# Wait for startup
sleep 3
# Start frontend with environment variables from .env
cd "$WORK_DIR"
if [ -f "$WORK_DIR/.env" ]; then
# Load .env and start npm with those variables
nohup env $(cat "$WORK_DIR/.env" | grep -v '^#' | xargs) npm run dev >> "$LOG_FILE" 2>&1 &
if systemctl is-active --quiet ids-frontend; then
echo "[$(date)] Frontend riavviato con successo via systemctl" >> "$LOG_FILE"
else
# Fallback: start without .env (will use system env vars)
nohup npm run dev >> "$LOG_FILE" 2>&1 &
echo "[$(date)] ERRORE: Frontend non si è avviato. Controlla: journalctl -u ids-frontend" >> "$LOG_FILE"
fi
NEW_PID=$!
echo $NEW_PID > "$PID_FILE"
echo "[$(date)] Frontend riavviato con PID: $NEW_PID" >> "$LOG_FILE"
fi

View File

@ -1,17 +1,17 @@
#!/bin/bash
# =========================================================
# RESTART ALL - Riavvio completo sistema IDS
# Usa systemctl per gestire tutti i servizi
# =========================================================
LOG_FILE="/var/log/ids/cron.log"
echo "$(date): === RESTART SETTIMANALE SISTEMA IDS ===" >> "$LOG_FILE"
# Stop all services
# Stop all services via systemctl
echo "$(date): Arresto servizi..." >> "$LOG_FILE"
pkill -f "python_ml/main.py"
pkill -f "vite"
pkill -f "npm run dev"
systemctl stop ids-ml-backend 2>/dev/null
systemctl stop ids-frontend 2>/dev/null
sleep 5
@ -20,10 +20,23 @@ echo "$(date): Pulizia file temporanei..." >> "$LOG_FILE"
rm -f /var/log/ids/*.pid
find /tmp -name "ids_*" -mtime +7 -delete 2>/dev/null
# Restart services
# Restart services via systemctl
echo "$(date): Riavvio servizi..." >> "$LOG_FILE"
/opt/ids/deployment/check_backend.sh >> "$LOG_FILE" 2>&1
systemctl start ids-ml-backend
sleep 3
/opt/ids/deployment/check_frontend.sh >> "$LOG_FILE" 2>&1
systemctl start ids-frontend
# Verify
if systemctl is-active --quiet ids-ml-backend; then
echo "$(date): ML Backend avviato con successo" >> "$LOG_FILE"
else
echo "$(date): ERRORE: ML Backend non si è avviato" >> "$LOG_FILE"
fi
if systemctl is-active --quiet ids-frontend; then
echo "$(date): Frontend avviato con successo" >> "$LOG_FILE"
else
echo "$(date): ERRORE: Frontend non si è avviato" >> "$LOG_FILE"
fi
echo "$(date): Restart completato!" >> "$LOG_FILE"