📋 Commit iniziale con: - ✅ Documentazione unificata in docs/ - ✅ Codice Laravel in netgescon-laravel/ - ✅ Script automazione in scripts/ - ✅ Configurazione sync rsync - ✅ Struttura organizzata e pulita 🔄 Versione: 2025.07.19-1644 🎯 Sistema pronto per Git distribuito
831 lines
20 KiB
Markdown
831 lines
20 KiB
Markdown
# GUIDA COMPLETA MIGRAZIONE NETGESCON SU LINUX
|
|
|
|
## FASE 1: PREPARAZIONE AMBIENTE LINUX
|
|
|
|
### 1.1 Download Ubuntu Server 22.04 LTS
|
|
```bash
|
|
# Scaricare da: https://ubuntu.com/download/server
|
|
# File: ubuntu-22.04.3-live-server-amd64.iso
|
|
```
|
|
|
|
### 1.2 Creazione VM (VirtualBox)
|
|
```bash
|
|
# Impostazioni VM consigliate:
|
|
- Nome: NetGescon-Ubuntu
|
|
- Tipo: Linux
|
|
- Versione: Ubuntu (64-bit)
|
|
- RAM: 4096 MB (minimo) / 8192 MB (consigliato)
|
|
- Storage: 80 GB dinamico VDI
|
|
- Network: Bridge Adapter (o NAT con port forwarding)
|
|
- CPU: 2-4 core
|
|
```
|
|
|
|
### 1.3 Installazione Ubuntu Server
|
|
```bash
|
|
# Durante l'installazione:
|
|
1. Lingua: English (per compatibilità)
|
|
2. Layout tastiera: Italian
|
|
3. Network: Configurazione automatica DHCP
|
|
4. Storage: Use entire disk (guided)
|
|
5. Profile setup:
|
|
- Nome server: netgescon-server
|
|
- Username: netgescon
|
|
- Password: [sicura]
|
|
6. SSH: Installa OpenSSH server ✓
|
|
7. Snap packages: Nessuno per ora
|
|
```
|
|
|
|
## FASE 2: CONFIGURAZIONE AMBIENTE SVILUPPO
|
|
|
|
### 2.1 Aggiornamento sistema
|
|
```bash
|
|
sudo apt update && sudo apt upgrade -y
|
|
sudo reboot
|
|
```
|
|
|
|
### 2.2 Installazione pacchetti base
|
|
```bash
|
|
# Pacchetti essenziali
|
|
sudo apt install -y curl wget git unzip vim htop tree
|
|
|
|
# Utilità di rete
|
|
sudo apt install -y net-tools openssh-server ufw
|
|
|
|
# Configurazione firewall
|
|
sudo ufw enable
|
|
sudo ufw allow ssh
|
|
sudo ufw allow 80
|
|
sudo ufw allow 443
|
|
sudo ufw allow 8000
|
|
```
|
|
|
|
### 2.3 Installazione PHP 8.2
|
|
```bash
|
|
# Repository PHP
|
|
sudo apt install -y software-properties-common
|
|
sudo add-apt-repository ppa:ondrej/php -y
|
|
sudo apt update
|
|
|
|
# PHP 8.2 e estensioni Laravel
|
|
sudo apt install -y php8.2 php8.2-fpm php8.2-cli php8.2-common php8.2-mysql \
|
|
php8.2-zip php8.2-gd php8.2-mbstring php8.2-curl php8.2-xml php8.2-bcmath \
|
|
php8.2-intl php8.2-sqlite3 php8.2-redis php8.2-imagick
|
|
|
|
# Verifica installazione
|
|
php -v
|
|
```
|
|
|
|
### 2.4 Installazione Composer
|
|
```bash
|
|
# Download e installazione Composer
|
|
cd /tmp
|
|
curl -sS https://getcomposer.org/installer | php
|
|
sudo mv composer.phar /usr/local/bin/composer
|
|
sudo chmod +x /usr/local/bin/composer
|
|
|
|
# Verifica
|
|
composer --version
|
|
```
|
|
|
|
### 2.5 Installazione Node.js (per asset frontend)
|
|
```bash
|
|
# NodeJS via NodeSource
|
|
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
|
sudo apt install -y nodejs
|
|
|
|
# Verifica
|
|
node --version
|
|
npm --version
|
|
```
|
|
|
|
### 2.6 Installazione Database MySQL
|
|
```bash
|
|
# Installazione MySQL Server
|
|
sudo apt install -y mysql-server
|
|
|
|
# Configurazione sicura
|
|
sudo mysql_secure_installation
|
|
# Risposte consigliate:
|
|
# - Remove anonymous users: Y
|
|
# - Disallow root login remotely: Y
|
|
# - Remove test database: Y
|
|
# - Reload privilege tables: Y
|
|
|
|
# Configurazione utente database
|
|
sudo mysql -u root -p
|
|
```
|
|
|
|
```sql
|
|
-- Creazione database e utente per NetGescon
|
|
CREATE DATABASE netgescon CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
CREATE USER 'netgescon_user'@'localhost' IDENTIFIED BY 'NetGescon2024!';
|
|
GRANT ALL PRIVILEGES ON netgescon.* TO 'netgescon_user'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
EXIT;
|
|
```
|
|
|
|
### 2.7 Installazione e configurazione Nginx
|
|
```bash
|
|
# Installazione Nginx
|
|
sudo apt install -y nginx
|
|
|
|
# Avvio e abilitazione
|
|
sudo systemctl start nginx
|
|
sudo systemctl enable nginx
|
|
|
|
# Test
|
|
curl localhost
|
|
```
|
|
|
|
## FASE 3: TRASFERIMENTO PROGETTO
|
|
|
|
### 3.1 Preparazione directory
|
|
```bash
|
|
# Creazione struttura directory
|
|
sudo mkdir -p /var/www/netgescon
|
|
sudo chown -R $USER:www-data /var/www/netgescon
|
|
sudo chmod -R 755 /var/www/netgescon
|
|
|
|
# Directory di lavoro
|
|
cd /var/www/netgescon
|
|
```
|
|
|
|
### 3.2 Opzioni di trasferimento
|
|
|
|
#### OPZIONE A: Trasferimento via SCP/SFTP
|
|
```bash
|
|
# Da Windows (PowerShell/cmd), copiare il progetto:
|
|
scp -r "u:\home\michele\netgescon\netgescon-laravel" netgescon@[IP_VM]:/var/www/netgescon/
|
|
|
|
# Oppure usare WinSCP, FileZilla, o strumenti grafici
|
|
```
|
|
|
|
#### OPZIONE B: Backup e ripristino via Git
|
|
```bash
|
|
# Su Windows: creare repository Git locale
|
|
cd "u:\home\michele\netgescon\netgescon-laravel"
|
|
git init
|
|
git add .
|
|
git commit -m "Backup completo progetto NetGescon"
|
|
|
|
# Su Linux: clonare da repository remoto o trasferire .git
|
|
```
|
|
|
|
#### OPZIONE C: Trasferimento via archivio
|
|
```bash
|
|
# Su Windows: creare archivio ZIP del progetto
|
|
# Su Linux: estrarre archivio
|
|
cd /var/www/netgescon
|
|
unzip netgescon-laravel.zip
|
|
```
|
|
|
|
### 3.3 Configurazione permessi
|
|
```bash
|
|
cd /var/www/netgescon/netgescon-laravel
|
|
|
|
# Permessi directory Laravel
|
|
sudo chown -R $USER:www-data .
|
|
sudo chmod -R 755 .
|
|
sudo chmod -R 775 storage bootstrap/cache
|
|
sudo chmod 644 .env
|
|
```
|
|
|
|
## FASE 4: CONFIGURAZIONE LARAVEL
|
|
|
|
### 4.1 Installazione dipendenze
|
|
```bash
|
|
cd /var/www/netgescon/netgescon-laravel
|
|
|
|
# Installazione dipendenze PHP
|
|
composer install --optimize-autoloader --no-dev
|
|
|
|
# Installazione dipendenze Node.js
|
|
npm install
|
|
|
|
# Build asset produzione
|
|
npm run build
|
|
```
|
|
|
|
### 4.2 Configurazione ambiente
|
|
```bash
|
|
# Copia e modifica file .env
|
|
cp .env.example .env
|
|
vim .env
|
|
```
|
|
|
|
```env
|
|
# Configurazione .env per Linux
|
|
APP_NAME="NetGescon"
|
|
APP_ENV=production
|
|
APP_KEY=
|
|
APP_DEBUG=false
|
|
APP_URL=http://localhost:8000
|
|
|
|
LOG_CHANNEL=stack
|
|
LOG_DEPRECATIONS_CHANNEL=null
|
|
LOG_LEVEL=debug
|
|
|
|
DB_CONNECTION=mysql
|
|
DB_HOST=127.0.0.1
|
|
DB_PORT=3306
|
|
DB_DATABASE=netgescon
|
|
DB_USERNAME=netgescon_user
|
|
DB_PASSWORD=NetGescon2024!
|
|
|
|
BROADCAST_DRIVER=log
|
|
CACHE_DRIVER=file
|
|
FILESYSTEM_DISK=local
|
|
QUEUE_CONNECTION=sync
|
|
SESSION_DRIVER=file
|
|
SESSION_LIFETIME=120
|
|
|
|
MEMCACHED_HOST=127.0.0.1
|
|
|
|
REDIS_HOST=127.0.0.1
|
|
REDIS_PASSWORD=null
|
|
REDIS_PORT=6379
|
|
|
|
MAIL_MAILER=smtp
|
|
MAIL_HOST=mailpit
|
|
MAIL_PORT=1025
|
|
MAIL_USERNAME=null
|
|
MAIL_PASSWORD=null
|
|
MAIL_ENCRYPTION=null
|
|
MAIL_FROM_ADDRESS="hello@example.com"
|
|
MAIL_FROM_NAME="${APP_NAME}"
|
|
```
|
|
|
|
### 4.3 Generazione chiave e cache
|
|
```bash
|
|
# Generazione chiave applicazione
|
|
php artisan key:generate
|
|
|
|
# Ottimizzazione cache
|
|
php artisan config:cache
|
|
php artisan route:cache
|
|
php artisan view:cache
|
|
|
|
# Link storage
|
|
php artisan storage:link
|
|
```
|
|
|
|
### 4.4 Migrazione database
|
|
```bash
|
|
# Esecuzione migrazioni
|
|
php artisan migrate --force
|
|
|
|
# Seeder (se necessario)
|
|
php artisan db:seed --force
|
|
```
|
|
|
|
## FASE 5: CONFIGURAZIONE NGINX
|
|
|
|
### 5.1 Configurazione virtual host
|
|
```bash
|
|
sudo vim /etc/nginx/sites-available/netgescon
|
|
```
|
|
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
listen [::]:80;
|
|
server_name localhost netgescon.local;
|
|
root /var/www/netgescon/netgescon-laravel/public;
|
|
|
|
add_header X-Frame-Options "SAMEORIGIN";
|
|
add_header X-Content-Type-Options "nosniff";
|
|
|
|
index index.php;
|
|
|
|
charset utf-8;
|
|
|
|
location / {
|
|
try_files $uri $uri/ /index.php?$query_string;
|
|
}
|
|
|
|
location = /favicon.ico { access_log off; log_not_found off; }
|
|
location = /robots.txt { access_log off; log_not_found off; }
|
|
|
|
error_page 404 /index.php;
|
|
|
|
location ~ \.php$ {
|
|
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
|
|
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
|
include fastcgi_params;
|
|
}
|
|
|
|
location ~ /\.(?!well-known).* {
|
|
deny all;
|
|
}
|
|
}
|
|
```
|
|
|
|
### 5.2 Attivazione configurazione
|
|
```bash
|
|
# Abilita sito
|
|
sudo ln -s /etc/nginx/sites-available/netgescon /etc/nginx/sites-enabled/
|
|
|
|
# Disabilita sito default
|
|
sudo unlink /etc/nginx/sites-enabled/default
|
|
|
|
# Test configurazione
|
|
sudo nginx -t
|
|
|
|
# Riavvio Nginx
|
|
sudo systemctl restart nginx
|
|
sudo systemctl restart php8.2-fpm
|
|
```
|
|
|
|
## FASE 6: TESTING E VERIFICA
|
|
|
|
### 6.1 Test applicazione
|
|
```bash
|
|
# Test via artisan serve (sviluppo)
|
|
cd /var/www/netgescon/netgescon-laravel
|
|
php artisan serve --host=0.0.0.0 --port=8000
|
|
|
|
# Test via browser:
|
|
# http://[IP_VM]:8000
|
|
```
|
|
|
|
### 6.2 Test database
|
|
```bash
|
|
# Verifica connessione database
|
|
php artisan tinker
|
|
# >>> \DB::connection()->getPdo();
|
|
# >>> User::count();
|
|
```
|
|
|
|
### 6.3 Log monitoring
|
|
```bash
|
|
# Monitoraggio log Laravel
|
|
tail -f storage/logs/laravel.log
|
|
|
|
# Monitoraggio log Nginx
|
|
sudo tail -f /var/log/nginx/error.log
|
|
sudo tail -f /var/log/nginx/access.log
|
|
```
|
|
|
|
## FASE 7: CONFIGURAZIONE API LEGACY
|
|
|
|
### 7.1 Creazione controller API bridge
|
|
```bash
|
|
php artisan make:controller Api/LegacyBridgeController
|
|
```
|
|
|
|
### 7.2 Configurazione route API
|
|
```php
|
|
// routes/api.php
|
|
Route::prefix('legacy')->group(function () {
|
|
Route::post('/import-stabili', [LegacyBridgeController::class, 'importStabili']);
|
|
Route::post('/import-condomini', [LegacyBridgeController::class, 'importCondomini']);
|
|
Route::post('/sync-data', [LegacyBridgeController::class, 'syncData']);
|
|
});
|
|
```
|
|
|
|
### 7.3 Documentazione API
|
|
```bash
|
|
# Installazione Swagger/OpenAPI
|
|
composer require darkaonline/l5-swagger
|
|
php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"
|
|
```
|
|
|
|
## FASE 8: SICUREZZA E BACKUP
|
|
|
|
### 8.1 Configurazione SSL (opzionale)
|
|
```bash
|
|
# Installazione Certbot per Let's Encrypt
|
|
sudo apt install -y certbot python3-certbot-nginx
|
|
|
|
# Certificato SSL (se dominio pubblico)
|
|
sudo certbot --nginx -d netgescon.yourdomain.com
|
|
```
|
|
|
|
### 8.2 Script backup automatico
|
|
```bash
|
|
# Script backup database e file
|
|
sudo vim /usr/local/bin/netgescon-backup.sh
|
|
```
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
BACKUP_DIR="/var/backups/netgescon"
|
|
DATE=$(date +%Y%m%d_%H%M%S)
|
|
|
|
mkdir -p $BACKUP_DIR
|
|
|
|
# Backup database
|
|
mysqldump -u netgescon_user -p'NetGescon2024!' netgescon > $BACKUP_DIR/netgescon_db_$DATE.sql
|
|
|
|
# Backup file applicazione
|
|
tar -czf $BACKUP_DIR/netgescon_files_$DATE.tar.gz -C /var/www/netgescon .
|
|
|
|
# Rimozione backup vecchi (>7 giorni)
|
|
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
|
|
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
|
|
```
|
|
|
|
```bash
|
|
# Permessi script
|
|
sudo chmod +x /usr/local/bin/netgescon-backup.sh
|
|
|
|
# Crontab per backup automatico
|
|
sudo crontab -e
|
|
# Aggiungere: 0 2 * * * /usr/local/bin/netgescon-backup.sh
|
|
```
|
|
|
|
## FASE 9: MONITORAGGIO E MANUTENZIONE
|
|
|
|
### 9.1 Script di monitoraggio
|
|
```bash
|
|
# Script controllo servizi
|
|
sudo vim /usr/local/bin/netgescon-health.sh
|
|
```
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
echo "=== NetGescon Health Check ==="
|
|
echo "Date: $(date)"
|
|
echo
|
|
|
|
# Check services
|
|
systemctl is-active nginx || echo "❌ Nginx down"
|
|
systemctl is-active mysql || echo "❌ MySQL down"
|
|
systemctl is-active php8.2-fpm || echo "❌ PHP-FPM down"
|
|
|
|
# Check disk space
|
|
df -h /var/www/netgescon | tail -1 | awk '{print "Disk usage: " $5}'
|
|
|
|
# Check database connection
|
|
cd /var/www/netgescon/netgescon-laravel
|
|
php artisan tinker --execute="echo \DB::connection()->getPdo() ? '✅ DB OK' : '❌ DB Failed';"
|
|
```
|
|
|
|
### 9.2 Log rotation
|
|
```bash
|
|
sudo vim /etc/logrotate.d/netgescon
|
|
```
|
|
|
|
```
|
|
/var/www/netgescon/netgescon-laravel/storage/logs/*.log {
|
|
daily
|
|
missingok
|
|
rotate 14
|
|
compress
|
|
delaycompress
|
|
notifempty
|
|
sharedscripts
|
|
postrotate
|
|
systemctl reload php8.2-fpm
|
|
endscript
|
|
}
|
|
```
|
|
|
|
## TROUBLESHOOTING COMUNE
|
|
|
|
### Errori 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
|
|
```
|
|
|
|
### Errori Database Connection
|
|
```bash
|
|
# Verifica stato MySQL
|
|
sudo systemctl status mysql
|
|
|
|
# Test connessione
|
|
mysql -u netgescon_user -p netgescon
|
|
```
|
|
|
|
### Errori 500 Internal Server
|
|
```bash
|
|
# Verifica log
|
|
tail -f /var/www/netgescon/netgescon-laravel/storage/logs/laravel.log
|
|
sudo tail -f /var/log/nginx/error.log
|
|
```
|
|
|
|
### Performance Tuning
|
|
```bash
|
|
# Ottimizzazione PHP-FPM
|
|
sudo vim /etc/php/8.2/fpm/pool.d/www.conf
|
|
# pm.max_children = 50
|
|
# pm.start_servers = 20
|
|
# pm.min_spare_servers = 10
|
|
# pm.max_spare_servers = 30
|
|
|
|
# Ottimizzazione MySQL
|
|
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
|
|
# innodb_buffer_pool_size = 1G
|
|
# query_cache_size = 128M
|
|
```
|
|
|
|
---
|
|
|
|
## NEXT STEPS
|
|
|
|
1. **Seguire questa guida step-by-step**
|
|
2. **Testare ogni fase prima di procedere**
|
|
3. **Configurare API bridge per connessione legacy**
|
|
4. **Implementare monitoraggio e backup**
|
|
5. **Ottimizzare performance**
|
|
|
|
Vuoi che iniziamo con la creazione della VM?
|
|
|
|
---
|
|
|
|
## SCRIPT INSTALLAZIONE AUTOMATICA
|
|
|
|
### Script setup-netgescon.sh
|
|
```bash
|
|
#!/bin/bash
|
|
set -e
|
|
|
|
echo "🚀 NetGescon Linux Setup Script"
|
|
echo "================================="
|
|
|
|
# Colori per output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
|
|
# Verifica se eseguito come utente normale
|
|
if [[ $EUID -eq 0 ]]; then
|
|
log_error "Non eseguire questo script come root. Usa il tuo utente normale."
|
|
exit 1
|
|
fi
|
|
|
|
log_info "Aggiornamento sistema..."
|
|
sudo apt update && sudo apt upgrade -y
|
|
|
|
log_info "Installazione pacchetti base..."
|
|
sudo apt install -y curl wget git unzip vim htop tree net-tools openssh-server ufw
|
|
|
|
log_info "Configurazione firewall..."
|
|
sudo ufw --force enable
|
|
sudo ufw allow ssh
|
|
sudo ufw allow 80
|
|
sudo ufw allow 443
|
|
sudo ufw allow 8000
|
|
|
|
log_info "Installazione PHP 8.2..."
|
|
sudo apt install -y software-properties-common
|
|
sudo add-apt-repository ppa:ondrej/php -y
|
|
sudo apt update
|
|
sudo apt install -y php8.2 php8.2-fpm php8.2-cli php8.2-common php8.2-mysql \
|
|
php8.2-zip php8.2-gd php8.2-mbstring php8.2-curl php8.2-xml php8.2-bcmath \
|
|
php8.2-intl php8.2-sqlite3 php8.2-redis php8.2-imagick
|
|
|
|
log_info "Installazione Composer..."
|
|
cd /tmp
|
|
curl -sS https://getcomposer.org/installer | php
|
|
sudo mv composer.phar /usr/local/bin/composer
|
|
sudo chmod +x /usr/local/bin/composer
|
|
|
|
log_info "Installazione Node.js..."
|
|
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
|
sudo apt install -y nodejs
|
|
|
|
log_info "Installazione MySQL..."
|
|
sudo apt install -y mysql-server
|
|
|
|
log_info "Installazione Nginx..."
|
|
sudo apt install -y nginx
|
|
sudo systemctl start nginx
|
|
sudo systemctl enable nginx
|
|
|
|
log_info "Creazione directory progetto..."
|
|
sudo mkdir -p /var/www/netgescon
|
|
sudo chown -R $USER:www-data /var/www/netgescon
|
|
sudo chmod -R 755 /var/www/netgescon
|
|
|
|
log_info "Configurazione MySQL..."
|
|
echo "IMPORTANTE: Configura MySQL manualmente con:"
|
|
echo "sudo mysql_secure_installation"
|
|
echo ""
|
|
echo "Poi esegui questi comandi SQL:"
|
|
echo "CREATE DATABASE netgescon CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
|
echo "CREATE USER 'netgescon_user'@'localhost' IDENTIFIED BY 'NetGescon2024!';"
|
|
echo "GRANT ALL PRIVILEGES ON netgescon.* TO 'netgescon_user'@'localhost';"
|
|
echo "FLUSH PRIVILEGES;"
|
|
|
|
log_info "Setup completato! 🎉"
|
|
echo ""
|
|
echo "NEXT STEPS:"
|
|
echo "1. Configura MySQL (vedi comandi sopra)"
|
|
echo "2. Trasferisci il progetto Laravel in /var/www/netgescon/"
|
|
echo "3. Configura Nginx virtual host"
|
|
echo "4. Esegui setup Laravel (composer install, migrations, etc.)"
|
|
|
|
# Salva log installazione
|
|
echo "$(date): NetGescon setup completato" >> ~/netgescon-setup.log
|
|
```
|
|
|
|
### Script post-installazione
|
|
```bash
|
|
#!/bin/bash
|
|
# setup-laravel.sh - Da eseguire dopo aver trasferito il progetto
|
|
|
|
set -e
|
|
cd /var/www/netgescon/netgescon-laravel
|
|
|
|
echo "🔧 Setup Laravel NetGescon"
|
|
echo "==========================="
|
|
|
|
# Verifica directory
|
|
if [ ! -f "artisan" ]; then
|
|
echo "❌ File artisan non trovato. Assicurati di essere nella directory corretta."
|
|
exit 1
|
|
fi
|
|
|
|
# Installazione dipendenze
|
|
echo "📦 Installazione dipendenze PHP..."
|
|
composer install --optimize-autoloader --no-dev
|
|
|
|
echo "📦 Installazione dipendenze Node.js..."
|
|
npm install
|
|
|
|
echo "🏗️ Build asset produzione..."
|
|
npm run build
|
|
|
|
# Configurazione permessi
|
|
echo "🔐 Configurazione permessi..."
|
|
sudo chown -R $USER:www-data .
|
|
sudo chmod -R 755 .
|
|
sudo chmod -R 775 storage bootstrap/cache
|
|
|
|
# Setup .env se non esiste
|
|
if [ ! -f ".env" ]; then
|
|
echo "⚙️ Configurazione .env..."
|
|
cp .env.example .env
|
|
echo "✋ IMPORTANTE: Modifica il file .env con i dati del database!"
|
|
echo " Database: netgescon"
|
|
echo " Username: netgescon_user"
|
|
echo " Password: NetGescon2024!"
|
|
fi
|
|
|
|
# Generazione chiave
|
|
echo "🔑 Generazione chiave applicazione..."
|
|
php artisan key:generate
|
|
|
|
# Cache ottimizzazione
|
|
echo "⚡ Ottimizzazione cache..."
|
|
php artisan config:cache
|
|
php artisan route:cache
|
|
php artisan view:cache
|
|
|
|
# Storage link
|
|
echo "🔗 Creazione storage link..."
|
|
php artisan storage:link
|
|
|
|
echo ""
|
|
echo "✅ Setup Laravel completato!"
|
|
echo ""
|
|
echo "NEXT STEPS:"
|
|
echo "1. Verifica configurazione .env"
|
|
echo "2. Esegui: php artisan migrate --force"
|
|
echo "3. Esegui: php artisan db:seed --force"
|
|
echo "4. Configura Nginx virtual host"
|
|
```
|
|
|
|
## CHECKLIST DI VERIFICA
|
|
|
|
### ✅ Pre-migrazione (Windows)
|
|
- [ ] Backup completo progetto NetGescon
|
|
- [ ] Export database (se esistente)
|
|
- [ ] Verifica file .env e configurazioni
|
|
- [ ] Test funzionalità correnti
|
|
- [ ] Documentazione personalizzazioni
|
|
|
|
### ✅ Setup VM Linux
|
|
- [ ] Ubuntu Server 22.04 LTS installato
|
|
- [ ] Configurazione rete (IP statico o DHCP)
|
|
- [ ] SSH server attivo e accessibile
|
|
- [ ] Utente netgescon creato
|
|
- [ ] Firewall UFW configurato
|
|
|
|
### ✅ Ambiente sviluppo
|
|
- [ ] PHP 8.2 installato e configurato
|
|
- [ ] Composer funzionante
|
|
- [ ] Node.js e npm installati
|
|
- [ ] MySQL server installato
|
|
- [ ] Nginx installato e attivo
|
|
|
|
### ✅ Database
|
|
- [ ] Database 'netgescon' creato
|
|
- [ ] Utente 'netgescon_user' configurato
|
|
- [ ] Privilegi assegnati correttamente
|
|
- [ ] Test connessione database OK
|
|
|
|
### ✅ Trasferimento progetto
|
|
- [ ] Codice Laravel trasferito in /var/www/netgescon/
|
|
- [ ] Permessi file corretti (755/775)
|
|
- [ ] Dipendenze Composer installate
|
|
- [ ] Asset frontend compilati
|
|
- [ ] File .env configurato
|
|
|
|
### ✅ Configurazione Laravel
|
|
- [ ] APP_KEY generata
|
|
- [ ] Cache configurazione creata
|
|
- [ ] Migrazioni database eseguite
|
|
- [ ] Seeder eseguiti (se necessario)
|
|
- [ ] Storage link creato
|
|
|
|
### ✅ Configurazione web server
|
|
- [ ] Virtual host Nginx configurato
|
|
- [ ] PHP-FPM funzionante
|
|
- [ ] Test sintassi nginx OK
|
|
- [ ] Servizi riavviati
|
|
|
|
### ✅ Testing funzionalità
|
|
- [ ] Homepage NetGescon carica
|
|
- [ ] Login utenti funziona
|
|
- [ ] Dashboard accessibile
|
|
- [ ] Menu sidebar funzionano
|
|
- [ ] AJAX navigation OK
|
|
- [ ] Upload file funziona
|
|
- [ ] Database queries OK
|
|
|
|
### ✅ Sicurezza e manutenzione
|
|
- [ ] Script backup configurato
|
|
- [ ] Crontab backup attivo
|
|
- [ ] Log rotation configurato
|
|
- [ ] Monitoraggio servizi OK
|
|
- [ ] SSL configurato (se necessario)
|
|
|
|
### ✅ API Legacy (se necessario)
|
|
- [ ] Controller API bridge creato
|
|
- [ ] Route API configurate
|
|
- [ ] Test connessione legacy system
|
|
- [ ] Documentazione API completa
|
|
|
|
## COMANDI RAPIDI EMERGENZA
|
|
|
|
### Riavvio servizi
|
|
```bash
|
|
sudo systemctl restart nginx
|
|
sudo systemctl restart php8.2-fpm
|
|
sudo systemctl restart mysql
|
|
```
|
|
|
|
### Check status servizi
|
|
```bash
|
|
sudo systemctl status nginx php8.2-fpm mysql
|
|
```
|
|
|
|
### Monitoring real-time
|
|
```bash
|
|
# Log Laravel
|
|
tail -f /var/www/netgescon/netgescon-laravel/storage/logs/laravel.log
|
|
|
|
# Log Nginx errori
|
|
sudo tail -f /var/log/nginx/error.log
|
|
|
|
# Log accessi Nginx
|
|
sudo tail -f /var/log/nginx/access.log
|
|
|
|
# Monitoraggio sistema
|
|
htop
|
|
```
|
|
|
|
### Reset cache Laravel
|
|
```bash
|
|
cd /var/www/netgescon/netgescon-laravel
|
|
php artisan cache:clear
|
|
php artisan config:clear
|
|
php artisan route:clear
|
|
php artisan view:clear
|
|
```
|
|
|
|
### Backup emergenza
|
|
```bash
|
|
# Database
|
|
mysqldump -u netgescon_user -p netgescon > backup-emergency-$(date +%Y%m%d_%H%M%S).sql
|
|
|
|
# File progetto
|
|
tar -czf backup-netgescon-$(date +%Y%m%d_%H%M%S).tar.gz /var/www/netgescon/
|
|
```
|
|
|
|
---
|
|
|
|
## SUPPORTO E CONTATTI
|
|
|
|
Per problemi durante la migrazione:
|
|
1. Controllare i log (Laravel, Nginx, MySQL)
|
|
2. Verificare permessi file e directory
|
|
3. Testare connessione database
|
|
4. Controllare configurazione Nginx
|
|
5. Verificare stato servizi Linux
|
|
|
|
**File di 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`
|