# README - Script di Migrazione NetGescon su Linux ## Panoramica Questa directory contiene script automatizzati per facilitare la migrazione completa di NetGescon da ambiente Windows a Linux Ubuntu Server 22.04 LTS. ## File Inclusi ### 📋 Documentazione - `GUIDA-MIGRAZIONE-LINUX-COMPLETA.md` - Guida completa step-by-step - `README.md` - Questo file ### 🔧 Script di Setup - `setup-netgescon.sh` - Installazione ambiente Linux completo - `setup-laravel.sh` - Configurazione progetto Laravel - `nginx-config.sh` - Configurazione Nginx automatica ### 💾 Script di Manutenzione - `backup-netgescon.sh` - Backup completo automatico - `monitor-netgescon.sh` - Monitoraggio sistema e salute ## Utilizzo Rapido ### 1. Preparazione VM Linux ```bash # Crea VM Ubuntu Server 22.04 LTS con: # - RAM: 4-8 GB # - Storage: 80 GB # - Network: Bridge/NAT con port forwarding ``` ### 2. Setup Ambiente (su Linux) ```bash # Copia setup-netgescon.sh sulla VM Linux chmod +x setup-netgescon.sh ./setup-netgescon.sh ``` ### 3. Configurazione Database ```bash sudo mysql_secure_installation sudo mysql -u root -p # Esegui i comandi SQL mostrati dallo script ``` ### 4. Trasferimento Progetto ```bash # Da Windows: copia netgescon-laravel/ in /var/www/netgescon/ # Metodi: SCP, SFTP, WinSCP, FileZilla, USB, etc. # Su Linux: setup Laravel chmod +x setup-laravel.sh ./setup-laravel.sh ``` ### 5. Configurazione Web Server ```bash chmod +x nginx-config.sh ./nginx-config.sh ``` ### 6. Test Finale ```bash # Test applicazione php artisan serve --host=0.0.0.0 --port=8000 # Accedi via browser: # http://IP_VM:8000 ``` ## Script Dettagliati ### setup-netgescon.sh **Cosa fa:** - Aggiorna sistema Ubuntu - Installa PHP 8.2 + estensioni Laravel - Installa Composer, Node.js, MySQL, Nginx - Configura firewall UFW - Crea directory progetto con permessi corretti **Requisiti:** - Ubuntu Server 22.04 LTS - Connessione internet - Utente con privilegi sudo **Tempo:** ~10-15 minuti ### setup-laravel.sh **Cosa fa:** - Configura permessi Laravel - Installa dipendenze PHP (composer install) - Installa dipendenze frontend (npm install) - Configura file .env automaticamente - Genera APP_KEY - Esegue migrazioni e seeder - Ottimizza cache Laravel **Requisiti:** - Progetto Laravel in /var/www/netgescon/netgescon-laravel/ - Database MySQL configurato - Dipendenze di sistema installate **Tempo:** ~5-10 minuti ### nginx-config.sh **Cosa fa:** - Crea virtual host Nginx ottimizzato per Laravel - Configura PHP-FPM integration - Abilita gzip compression - Aggiunge security headers - Configura asset caching - Testa e riavvia servizi **Tempo:** ~2-3 minuti ### backup-netgescon.sh **Cosa fa:** - Backup database MySQL - Backup file applicazione (tar.gz) - Backup configurazioni sistema - Crea manifest dettagliato - Rimuove backup vecchi (>7 giorni) - Log operazioni **Configurazione crontab automatica:** ```bash sudo crontab -e # Aggiungi: 0 2 * * * /path/to/backup-netgescon.sh ``` ### monitor-netgescon.sh **Cosa fa:** - Verifica stato servizi (Nginx, PHP-FPM, MySQL) - Controlla uso risorse (CPU, RAM, Disk) - Testa connessione database - Verifica risposta HTTP - Analizza log errori - Controlla backup recenti - Genera report dettagliato **Uso raccomandato:** ```bash # Controllo manuale ./monitor-netgescon.sh # Controllo automatico ogni ora crontab -e # Aggiungi: 0 * * * * /path/to/monitor-netgescon.sh >> /var/log/netgescon/monitor.log ``` ## Troubleshooting Comune ### Errore: Permission Denied ```bash sudo chown -R $USER:www-data /var/www/netgescon sudo chmod -R 755 /var/www/netgescon sudo chmod -R 775 /var/www/netgescon/netgescon-laravel/storage ``` ### Errore: Database Connection Failed ```bash # Verifica MySQL sudo systemctl status mysql # Test connessione mysql -u netgescon_user -p netgescon # Verifica .env cat /var/www/netgescon/netgescon-laravel/.env | grep DB_ ``` ### Errore: Nginx 502 Bad Gateway ```bash # Verifica PHP-FPM sudo systemctl status php8.2-fpm # Log errori sudo tail -f /var/log/nginx/error.log # Riavvio servizi sudo systemctl restart nginx php8.2-fpm ``` ### Errore: Laravel 500 Internal Server Error ```bash # Log Laravel tail -f /var/www/netgescon/netgescon-laravel/storage/logs/laravel.log # Verifica permessi storage sudo chmod -R 775 /var/www/netgescon/netgescon-laravel/storage # Reset cache cd /var/www/netgescon/netgescon-laravel php artisan cache:clear php artisan config:clear ``` ## File di Configurazione ### Nginx Virtual Host - Percorso: `/etc/nginx/sites-available/netgescon` - Document root: `/var/www/netgescon/netgescon-laravel/public` - PHP-FPM socket: `/var/run/php/php8.2-fpm.sock` ### Database - Nome: `netgescon` - Utente: `netgescon_user` - Password: `NetGescon2024!` (modificabile) ### Directory Progetto - Base: `/var/www/netgescon/` - Laravel: `/var/www/netgescon/netgescon-laravel/` - Storage: `/var/www/netgescon/netgescon-laravel/storage/` ## Performance e Sicurezza ### Ottimizzazioni Incluse - PHP OPcache abilitato - Nginx gzip compression - Asset caching (1 anno) - Security headers - Database connection pooling ### Backup e Monitoraggio - Backup automatico giornaliero (2:00 AM) - Retention 7 giorni - Monitoraggio health check - Log centralizzati ## Supporto ### Log Principali - Laravel: `/var/www/netgescon/netgescon-laravel/storage/logs/laravel.log` - Nginx: `/var/log/nginx/error.log` - MySQL: `/var/log/mysql/error.log` - Sistema: `/var/log/syslog` ### Comandi Utili ```bash # Status servizi sudo systemctl status nginx php8.2-fpm mysql # Riavvio servizi sudo systemctl restart nginx php8.2-fpm mysql # Test configurazione sudo nginx -t php artisan config:cache # Monitoring real-time htop iotop netstat -tlnp ``` ## Versioni Supportate - **Ubuntu:** 22.04 LTS (Jammy Jellyfish) - **PHP:** 8.2.x - **Laravel:** 10.x/11.x - **MySQL:** 8.0.x - **Nginx:** 1.22.x - **Node.js:** 18.x LTS ## Note di Sicurezza - Firewall UFW configurato automaticamente - Password database sicura (modificabile) - Permessi file Laravel ottimizzati - Security headers Nginx - Debug mode disabilitato in produzione --- **Per supporto tecnico dettagliato, consultare `GUIDA-MIGRAZIONE-LINUX-COMPLETA.md`**