netgescon-master/scripts/setup-laravel.sh

172 lines
5.6 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# setup-laravel.sh - Da eseguire dopo aver trasferito il progetto
set -e
# Colori per output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
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"; }
log_step() { echo -e "${BLUE}[STEP]${NC} $1"; }
echo "🔧 Setup Laravel NetGescon"
echo "==========================="
# Verifica se siamo nella directory corretta
if [ ! -d "/var/www/netgescon/netgescon-laravel" ]; then
log_error "Directory progetto non trovata: /var/www/netgescon/netgescon-laravel"
echo "Assicurati di aver trasferito il progetto Laravel nella directory corretta."
exit 1
fi
cd /var/www/netgescon/netgescon-laravel
# Verifica file artisan
if [ ! -f "artisan" ]; then
log_error "File artisan non trovato. Assicurati di essere nella directory corretta del progetto Laravel."
exit 1
fi
log_step "1/10 Configurazione permessi..."
sudo chown -R $USER:www-data .
sudo chmod -R 755 .
sudo chmod -R 775 storage bootstrap/cache
log_info "Permessi configurati correttamente"
log_step "2/10 Installazione dipendenze PHP..."
composer install --optimize-autoloader --no-dev
log_info "Dipendenze PHP installate"
log_step "3/10 Installazione dipendenze Node.js..."
if [ -f "package.json" ]; then
npm install
log_info "Dipendenze Node.js installate"
else
log_warn "File package.json non trovato, saltato npm install"
fi
log_step "4/10 Build asset produzione..."
if [ -f "package.json" ]; then
npm run build
log_info "Asset compilati per produzione"
else
log_warn "Build asset saltato (package.json non trovato)"
fi
log_step "5/10 Configurazione .env..."
if [ ! -f ".env" ]; then
cp .env.example .env
log_info "File .env creato da .env.example"
# Configurazione automatica .env
sed -i 's/DB_DATABASE=laravel/DB_DATABASE=netgescon/' .env
sed -i 's/DB_USERNAME=root/DB_USERNAME=netgescon_user/' .env
sed -i 's/DB_PASSWORD=/DB_PASSWORD=NetGescon2024!/' .env
sed -i 's/APP_ENV=local/APP_ENV=production/' .env
sed -i 's/APP_DEBUG=true/APP_DEBUG=false/' .env
log_info "File .env configurato automaticamente"
else
log_info "File .env già esistente"
fi
log_step "6/10 Generazione chiave applicazione..."
php artisan key:generate --force
log_info "Chiave applicazione generata"
log_step "7/10 Test connessione database..."
if php artisan tinker --execute="echo \DB::connection()->getPdo() ? 'OK' : 'FAILED';" 2>/dev/null | grep -q "OK"; then
log_info "Connessione database OK"
else
log_error "Connessione database FAILED"
echo "Verifica che:"
echo "1. MySQL sia in esecuzione: sudo systemctl status mysql"
echo "2. Database 'netgescon' sia stato creato"
echo "3. Utente 'netgescon_user' esista con privilegi corretti"
echo "4. Password nel file .env sia corretta"
exit 1
fi
log_step "8/10 Esecuzione migrazioni database..."
php artisan migrate --force
log_info "Migrazioni database completate"
log_step "9/10 Esecuzione seeder..."
if php artisan db:seed --force 2>/dev/null; then
log_info "Seeder eseguiti con successo"
else
log_warn "Alcuni seeder potrebbero aver avuto problemi (normale se database già popolato)"
fi
log_step "10/10 Ottimizzazione cache..."
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan storage:link
log_info "Cache ottimizzata e storage link creato"
# Verifica finale
log_info "Verifica finale installazione..."
# Test sintassi Laravel
if php artisan --version >/dev/null 2>&1; then
LARAVEL_VERSION=$(php artisan --version)
log_info "Laravel funzionante: $LARAVEL_VERSION"
else
log_error "Problemi con Laravel"
fi
# Test database
USER_COUNT=$(php artisan tinker --execute="echo \App\Models\User::count();" 2>/dev/null | tail -1)
log_info "Utenti in database: $USER_COUNT"
echo ""
echo "═══════════════════════════════════════════════════════"
echo "✅ SETUP LARAVEL COMPLETATO!"
echo "═══════════════════════════════════════════════════════"
echo ""
echo "🌐 TEST APPLICAZIONE:"
echo " php artisan serve --host=0.0.0.0 --port=8000"
echo " Vai su: http://$(hostname -I | awk '{print $1}'):8000"
echo ""
echo "📁 DIRECTORY PROGETTO:"
echo " $(pwd)"
echo ""
echo "🔒 UTENTI DATABASE: $USER_COUNT"
echo ""
echo "═══════════════════════════════════════════════════════"
echo ""
echo "🔧 NEXT STEPS:"
echo ""
echo "1⃣ TESTA APPLICAZIONE:"
echo " php artisan serve --host=0.0.0.0 --port=8000"
echo ""
echo "2⃣ CONFIGURA NGINX:"
echo " - Crea virtual host (vedi guida completa)"
echo " - Configura dominio/IP"
echo ""
echo "3⃣ CONFIGURA BACKUP:"
echo " - Script backup automatico"
echo " - Crontab per backup periodici"
echo ""
echo "4⃣ API LEGACY (se necessario):"
echo " - Configura bridge per connessione legacy"
echo " - Test import/export dati"
echo ""
# Salva info setup
echo "=== Laravel Setup Info ===" >> ~/netgescon-setup-info.txt
echo "Data setup Laravel: $(date)" >> ~/netgescon-setup-info.txt
echo "Directory progetto: $(pwd)" >> ~/netgescon-setup-info.txt
echo "Laravel version: $LARAVEL_VERSION" >> ~/netgescon-setup-info.txt
echo "Utenti database: $USER_COUNT" >> ~/netgescon-setup-info.txt
echo "" >> ~/netgescon-setup-info.txt
log_info "Info setup salvate in: ~/netgescon-setup-info.txt"