netgescon-master/netgescon-laravel/docs/guide/INSTALL_LINUX.md

8.4 KiB

NetGesCon Laravel - Guida Installazione Linux

🐧 Compatibilità Sistema Operativo

⚠️ IMPORTANTE: NetGesCon Laravel è progettato ESCLUSIVAMENTE per sistemi Linux.

  • Linux: Ubuntu 22.04+, Debian 11+, CentOS 8+, RHEL 8+
  • WSL2: Windows Subsystem for Linux (per sviluppo)
  • Windows: Non supportato nativamente
  • macOS: Non testato/supportato

📋 Prerequisiti Sistema

1. Server Requirements

# Sistema operativo
Ubuntu 22.04 LTS o successivo (raccomandato)
Debian 11+ / CentOS 8+ / RHEL 8+

# Hardware minimo
CPU: 2 core
RAM: 4GB (8GB raccomandato)
Storage: 20GB liberi

2. Software Prerequisites

# PHP 8.2+
php >= 8.2
php-extensions: mbstring, xml, json, zip, curl, gd, mysql, redis

# Database
MySQL 8.0+ o MariaDB 10.6+

# Web Server
Apache 2.4+ con mod_rewrite
o Nginx 1.18+

# Composer
Composer 2.0+

# Node.js (per asset building)
Node.js 18+ con npm/yarn

# Redis (per cache e sessioni)
Redis 6.0+

# Git
Git 2.25+

Installazione Rapida (Ubuntu/Debian)

Step 1: Aggiornamento Sistema

sudo apt update && sudo apt upgrade -y

Step 2: Installazione PHP 8.2+

# Aggiungere repository PHP
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

# Installare PHP e estensioni
sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-xml \
                 php8.2-mbstring php8.2-curl php8.2-zip php8.2-gd \
                 php8.2-json php8.2-redis php8.2-bcmath -y

Step 3: Installazione Database MySQL

sudo apt install mysql-server -y
sudo mysql_secure_installation

# Configurazione utente NetGesCon
sudo mysql -e "CREATE USER 'netgescon'@'localhost' IDENTIFIED BY 'PASSWORD_SICURA';"
sudo mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'netgescon'@'localhost' WITH GRANT OPTION;"
sudo mysql -e "FLUSH PRIVILEGES;"

Step 4: Installazione Web Server (Apache)

sudo apt install apache2 -y
sudo a2enmod rewrite ssl headers
sudo systemctl enable apache2
sudo systemctl start apache2

Step 5: Installazione Composer

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer --version

Step 6: Installazione Node.js

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install nodejs -y
npm --version && node --version

Step 7: Installazione Redis

sudo apt install redis-server -y
sudo systemctl enable redis-server
sudo systemctl start redis-server

🚀 Installazione NetGesCon

Step 1: Clone Repository

# Andare nella directory web
cd /var/www/

# Clone progetto
sudo git clone https://github.com/TUOREPO/netgescon-laravel.git
sudo chown -R www-data:www-data netgescon-laravel
cd netgescon-laravel

Step 2: Installazione Dipendenze

# Composer
composer install --optimize-autoloader --no-dev

# NPM assets
npm install
npm run production

Step 3: Configurazione Environment

# Copiare file di configurazione
cp .env.example .env

# Generare Application Key
php artisan key:generate

Step 4: Configurazione Database (.env)

# Editare .env con i tuoi dati
nano .env
# Database principale
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=netgescon_master
DB_USERNAME=netgescon
DB_PASSWORD=TUA_PASSWORD_SICURA

# Cache Redis
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

# Mail (configurare per invio email)
MAIL_MAILER=smtp
MAIL_HOST=smtp.tuodominio.com
MAIL_PORT=587
MAIL_USERNAME=noreply@tuodominio.com
MAIL_PASSWORD=password_email
MAIL_ENCRYPTION=tls

# NetGesCon specifico
NETGESCON_SISTEMA_MULTI_DB=true
NETGESCON_CARTELLE_DATI_BASE=/var/www/netgescon-data
NETGESCON_BACKUP_PATH=/var/www/netgescon-backup
NETGESCON_LOG_LEVEL=info

Step 5: Setup Database

# Creare database master
mysql -u netgescon -p -e "CREATE DATABASE netgescon_master CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# Eseguire migrazioni
php artisan migrate

# Popolare dati iniziali
php artisan db:seed

Step 6: Configurazione Permessi

# Directory dati NetGesCon
sudo mkdir -p /var/www/netgescon-data
sudo mkdir -p /var/www/netgescon-backup
sudo chown -R www-data:www-data /var/www/netgescon-data
sudo chown -R www-data:www-data /var/www/netgescon-backup

# Permessi Laravel
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache

Step 7: Configurazione Apache Virtual Host

sudo nano /etc/apache2/sites-available/netgescon.conf
<VirtualHost *:80>
    ServerName tuodominio.com
    DocumentRoot /var/www/netgescon-laravel/public
    
    <Directory /var/www/netgescon-laravel/public>
        AllowOverride All
        Require all granted
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/netgescon_error.log
    CustomLog ${APACHE_LOG_DIR}/netgescon_access.log combined
</VirtualHost>

# Per HTTPS (raccomandato)
<VirtualHost *:443>
    ServerName tuodominio.com
    DocumentRoot /var/www/netgescon-laravel/public
    
    SSLEngine on
    SSLCertificateFile /path/to/certificate.crt
    SSLCertificateKeyFile /path/to/private.key
    
    <Directory /var/www/netgescon-laravel/public>
        AllowOverride All
        Require all granted
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/netgescon_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/netgescon_ssl_access.log combined
</VirtualHost>
# Attivare sito
sudo a2ensite netgescon.conf
sudo a2dissite 000-default
sudo systemctl reload apache2

Step 8: Setup Cron Jobs

sudo crontab -e -u www-data
# NetGesCon - Laravel Scheduler
* * * * * cd /var/www/netgescon-laravel && php artisan schedule:run >> /dev/null 2>&1

# Backup automatico (ogni notte alle 2:00)
0 2 * * * cd /var/www/netgescon-laravel && php artisan netgescon:backup:auto

# Cleanup log e temp files (ogni domenica alle 3:00)
0 3 * * 0 cd /var/www/netgescon-laravel && php artisan netgescon:cleanup

🔐 Configurazione Sicurezza

1. Firewall (UFW)

sudo ufw enable
sudo ufw allow ssh
sudo ufw allow 'Apache Full'
sudo ufw status

2. SSL Certificate (Let's Encrypt)

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d tuodominio.com

3. Database Security

# Backup regolari
sudo crontab -e
# 0 1 * * * mysqldump -u netgescon -p netgescon_master > /var/www/netgescon-backup/db_$(date +\%Y\%m\%d).sql

# Configurare accesso limitato
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# bind-address = 127.0.0.1

🎯 Primo Accesso

  1. Aprire browser: https://tuodominio.com
  2. Login Super Admin:
    • Email: superadmin@netgescon.local
    • Password: SuperAdminNetGesCon2025!
  3. Cambiare password del super admin immediatamente
  4. Creare primo amministratore per test

🔧 Manutenzione Sistema

Aggiornamenti

cd /var/www/netgescon-laravel
git pull origin main
composer install --optimize-autoloader --no-dev
npm run production
php artisan migrate
php artisan config:cache
php artisan route:cache
php artisan view:cache
sudo systemctl reload apache2

Backup

# Backup database
php artisan netgescon:backup:create

# Backup files
tar -czf netgescon_backup_$(date +%Y%m%d).tar.gz \
    /var/www/netgescon-laravel \
    /var/www/netgescon-data \
    /var/www/netgescon-backup

Monitoring

# Log Laravel
tail -f storage/logs/laravel.log

# Log Apache
sudo tail -f /var/log/apache2/netgescon_error.log

# Status servizi
sudo systemctl status apache2
sudo systemctl status mysql
sudo systemctl status redis-server

🐛 Troubleshooting

1. Errore Permessi

sudo chown -R www-data:www-data /var/www/netgescon-laravel
sudo chmod -R 775 storage bootstrap/cache

2. Database Connection Error

# Verificare servizio MySQL
sudo systemctl status mysql
sudo systemctl restart mysql

# Test connessione
mysql -u netgescon -p -e "SHOW DATABASES;"

3. Cache Issues

php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear

4. Asset Issues

npm run development
# o
npm run production

📞 Supporto

  • Documentazione: README.md e TECHNICAL_SPECS.md
  • Log Progressivo: PROGRESS_LOG.md
  • Issues GitHub: [Repository Issues]
  • Email: supporto@netgescon.com

Ultima modifica: 7 Luglio 2025