From d81f9348a225c05e50c9ad2bce74411b82897ad1 Mon Sep 17 00:00:00 2001 From: Carmine Savino Date: Tue, 20 Oct 2026 18:49:27 +0200 Subject: [PATCH] feat: aggiorna la gestione delle dipendenze e rimuove lo script di deploy obsoleto --- .gitignore | 2 +- build.sh | 8 ++---- deploy.sh | 36 ------------------------ docs/PREVENTIVI_BACKOFFICE.md | 53 ++++++++++++++++++++++++++--------- pnpm-lock.yaml | 8 +++--- 5 files changed, 47 insertions(+), 60 deletions(-) delete mode 100755 deploy.sh diff --git a/.gitignore b/.gitignore index 88a5813..ee8ee63 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,4 @@ kreios.zip .env.production Thumbs.db /reference/icone_profili_extra -/reference/_* \ No newline at end of file +/reference/_*deploy.env diff --git a/build.sh b/build.sh index 055df07..3ccf70d 100755 --- a/build.sh +++ b/build.sh @@ -2,12 +2,10 @@ # Compila i due frontend dentro backoffice/public, da cui li serve Laravel: # configuratore 3D -> backoffice/public/configuratore (URL /configuratore/) # app cliente -> backoffice/public/preventivo (URL /preventivo/) +# Usato in locale e dalle azioni di deploy di Plesk Git (vedi docs/PREVENTIVI_BACKOFFICE.md). set -euo pipefail ROOT="$(cd "$(dirname "$0")" && pwd)" -[ -d "$ROOT/node_modules" ] || (cd "$ROOT" && pnpm install) -[ -d "$ROOT/backoffice/cliente/node_modules" ] || (cd "$ROOT/backoffice/cliente" && pnpm install) - -(cd "$ROOT" && pnpm build) -(cd "$ROOT/backoffice/cliente" && pnpm build) +(cd "$ROOT" && pnpm install --frozen-lockfile && pnpm build) +(cd "$ROOT/backoffice/cliente" && pnpm install --frozen-lockfile && pnpm build) diff --git a/deploy.sh b/deploy.sh deleted file mode 100755 index 71eae58..0000000 --- a/deploy.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -set -euo pipefail - -# Deploy kreios.zip to the remote server and unpack it, overwriting the -# existing "kreios" folder. -# -# Usage: ./deploy.sh - -REMOTE_USER="developer" -REMOTE_HOST="cloud.aurealab.net" -REMOTE_DIR="/var/www/vhosts/cloud.aurealab.net/httpdocs" -LOCAL_ZIP="kreios.zip" - -if [ ! -f "$LOCAL_ZIP" ]; then - echo "Errore: $LOCAL_ZIP non trovato. Esegui prima ./build.sh" >&2 - exit 1 -fi - -echo "==> Upload di $LOCAL_ZIP su ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}" -if command -v rsync >/dev/null 2>&1; then - rsync -a --progress "$LOCAL_ZIP" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/" -else - scp "$LOCAL_ZIP" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/" -fi - -echo "==> Scompattazione remota (sovrascrittura cartella kreios esistente)" -ssh "${REMOTE_USER}@${REMOTE_HOST}" bash -s < Fatto." diff --git a/docs/PREVENTIVI_BACKOFFICE.md b/docs/PREVENTIVI_BACKOFFICE.md index 6edac93..5b1ec18 100644 --- a/docs/PREVENTIVI_BACKOFFICE.md +++ b/docs/PREVENTIVI_BACKOFFICE.md @@ -75,21 +75,46 @@ Dettagli in [AVVIO_LOCALE.md](AVVIO_LOCALE.md). Nessuna variabile necessaria. `VITE_PREVENTIVI_API_BASE` (root) e `VITE_API_BASE` (`backoffice/cliente`) restano disponibili solo per puntare a un'API su un dominio diverso. -## Checklist di deploy in produzione +## Deploy in produzione (Plesk + Git) -1. `./build.sh` dalla root: compila configuratore e app cliente in `backoffice/public/configuratore` e - `backoffice/public/preventivo` (cartelle ignorate da git: vanno generate in fase di deploy o caricate - insieme al backend). -2. Backend: `.env` di produzione (`APP_URL`, `DB_*`, `MAIL_*`, `ADMIN_NOTIFY_EMAIL`), poi - `php artisan migrate --force`, `php artisan storage:link`, `php artisan config:cache`. -3. Nel sito `kreiosinfissi.it` l'iframe punta a `https:///configuratore/?sistema=…&type=…`. -4. Restringere `CORS_ALLOWED_ORIGINS` (o lasciarlo vuoto) se nessun dominio esterno usa l'API. -5. Verifica end-to-end: configurare un prodotto → "Aggiungi al preventivo" → "Vai al preventivo" apre - `/preventivo/` sullo stesso dominio → completare il checkout → il preventivo compare in Filament e le - email (cliente + admin) sono inviate. +Il deploy avviene con l'estensione Git di Plesk, che scarica l'intero repository. Le build dei frontend non +sono in git: le genera `./build.sh` sul server dopo ogni pull. -`deploy.sh` (upload di `kreios.zip` su un host statico separato) appartiene al vecchio schema a server -separati e non serve più. +### Configurazione una tantum in Plesk + +1. **Git**: repository collegato al dominio, cartella di deploy es. `kreios/`. +2. **Hosting**: Document root = `kreios/backoffice/public`, PHP 8.3+. +3. **Node.js** (estensione Node.js di Plesk) con pnpm disponibile (`corepack enable`). +4. **`.env`** creato a mano in `kreios/backoffice/.env` (`APP_ENV=production`, `APP_DEBUG=false`, `APP_URL`, + `DB_*`, `MAIL_*`, `ADMIN_NOTIFY_EMAIL`), poi una volta sola: `php artisan key:generate`, + `php artisan storage:link`, `php artisan db:seed --force` (admin, catalogo e immagini del configuratore). +5. **Azioni di deploy aggiuntive** (Git → impostazioni del repository). Esempio, da adattare ai percorsi + di PHP/Node del server: + + ```bash + export PATH=/opt/plesk/node/20/bin:$PATH + PHP=/opt/plesk/php/8.3/bin/php + (cd backoffice && $PHP /usr/lib/plesk-9.0/composer.phar install --no-dev --optimize-autoloader --no-interaction) + # svuota tutte le cache di Laravel (config, route, view, eventi, cache applicativa, compilati) + (cd backoffice && $PHP artisan optimize:clear) + # esegue solo le migrazioni non ancora applicate (--force: richiesto in produzione) + (cd backoffice && $PHP artisan migrate --force) + (cd backoffice && $PHP artisan optimize && $PHP artisan queue:restart) + ./build.sh + ``` + +`build.sh` installa le dipendenze con `pnpm install --frozen-lockfile`: se `package.json` cambia, va +committato anche il `pnpm-lock.yaml` aggiornato, altrimenti il deploy fallisce. Durante la build le cartelle +`public/configuratore` e `public/preventivo` vengono svuotate e riscritte: per qualche secondo le due +pagine non sono disponibili. + +### Dopo ogni deploy + +- Nel sito `kreiosinfissi.it` l'iframe punta a `https:///configuratore/?sistema=…&type=…`. +- Restringere `CORS_ALLOWED_ORIGINS` (o lasciarlo vuoto) se nessun dominio esterno usa l'API. +- Verifica end-to-end: configurare un prodotto → "Aggiungi al preventivo" → "Vai al preventivo" apre + `/preventivo/` sullo stesso dominio → completare il checkout → il preventivo compare in Filament e le + email (cliente + admin) sono inviate. ## Riferimenti file @@ -98,4 +123,4 @@ separati e non serve più. - [`src/js/api_base.js`](../src/js/api_base.js), [`backoffice/cliente/src/api.js`](../backoffice/cliente/src/api.js) — base URL dell'API. - [`src/js/starter.js`](../src/js/starter.js) — integrazione configuratore↔backend, link all'app cliente. - [`backoffice/config/preventivi.php`](../backoffice/config/preventivi.php) — `frontend_cliente_url`, `configuratore_url`. -- [`build.sh`](../build.sh), [`dev.sh`](../dev.sh) — build e ambiente di sviluppo. +- [`build.sh`](../build.sh), [`dev.sh`](../dev.sh) — build dei frontend (anche su Plesk) e ambiente di sviluppo. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 42ae6b0..167e6dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,8 +21,8 @@ dependencies: specifier: ^3.7.1 version: 3.7.1 three: - specifier: ^0.175.0 - version: 0.175.0 + specifier: ^0.185.1 + version: 0.185.1 vite-plugin-static-copy: specifier: ^2.3.0 version: 2.3.0(vite@6.2.5) @@ -838,8 +838,8 @@ packages: source-map-support: 0.5.21 dev: true - /three@0.175.0: - resolution: {integrity: sha512-nNE3pnTHxXN/Phw768u0Grr7W4+rumGg/H6PgeseNJojkJtmeHJfZWi41Gp2mpXl1pg1pf1zjwR4McM1jTqkpg==} + /three@0.185.1: + resolution: {integrity: sha512-5aojFCXKwnjBRZvUnt3WFfEcvUJgkN5LlijRFN95hMy8WVkG4I0QNcJE+OuWvuJ0bOdStrbfXn0pkd6/QyiAlg==} dev: false /to-regex-range@5.0.1: