fix mailing an email
This commit is contained in:
+227
-27
@@ -20,6 +20,223 @@ echo "==> Pulizia cache..."
|
||||
rm -rf bootstrap/cache/*.php storage/framework/cache/data/* storage/framework/sessions/* storage/framework/views/* storage/logs/* 2>/dev/null || true
|
||||
echo " OK"
|
||||
|
||||
echo "==> Generazione post-deploy.sh..."
|
||||
cat > post-deploy.sh << 'POSTDEPLOY'
|
||||
#!/bin/bash
|
||||
# post-deploy.sh — Generated by build-dist.sh
|
||||
# Usage: bash post-deploy.sh {check|upgrade|install} [--yes]
|
||||
set -u
|
||||
APP_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
ARTISAN="php ${APP_DIR}/artisan"
|
||||
DIAGNOSE="php ${APP_DIR}/diagnose.php"
|
||||
RED='\033[31m'; GREEN='\033[32m'; YELLOW='\033[33m'
|
||||
CYAN='\033[36m'; BOLD='\033[1m'; NC='\033[0m'
|
||||
|
||||
MODE="${1:-check}"
|
||||
BATCH=false; [ "${2:-}" = "--yes" ] && BATCH=true
|
||||
|
||||
echo -e "${CYAN}${BOLD}============================================${NC}"
|
||||
echo -e "${CYAN}${BOLD} Glastree Post-Deploy — ${MODE}${NC}"
|
||||
echo -e "${CYAN}${BOLD}============================================${NC}"
|
||||
echo ""
|
||||
|
||||
IS_FRESH=false; [ ! -f "${APP_DIR}/.env" ] && IS_FRESH=true
|
||||
|
||||
log() { echo -e " ${BOLD}$1${NC}"; }
|
||||
ok() { echo -e " ${GREEN}✅ $1${NC}"; }
|
||||
warn() { echo -e " ${YELLOW}⚠ $1${NC}"; }
|
||||
fail() { echo -e " ${RED}❌ $1${NC}"; }
|
||||
|
||||
check_artisan() {
|
||||
if [ ! -f "${APP_DIR}/artisan" ]; then
|
||||
fail "artisan non trovato. Esegui da root dell'applicazione."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
run_step() {
|
||||
local step="$1" desc="$2"; shift 2
|
||||
log "${step} ${desc}"
|
||||
if "$@" 2>&1 | sed 's/^/ /'; then
|
||||
ok "${desc}"
|
||||
return 0
|
||||
else
|
||||
local rc=$?
|
||||
fail "${desc} — exit code ${rc}"
|
||||
return ${rc}
|
||||
fi
|
||||
}
|
||||
|
||||
run_diagnose() {
|
||||
if ${DIAGNOSE} 2>&1 | tail -5; then
|
||||
ok "Diagnostica OK"
|
||||
else
|
||||
warn "Diagnostica ha rilevato problemi (non bloccante)"
|
||||
fi
|
||||
}
|
||||
|
||||
run_check() {
|
||||
echo -e "${YELLOW}═══════════ CONTROLLO ═══════════${NC}" ; echo ""
|
||||
|
||||
echo -e "${BOLD}[0] Diagnostica sistema${NC}"
|
||||
run_diagnose ; echo ""
|
||||
|
||||
echo -e "${BOLD}[1] Ambiente${NC}"
|
||||
if $IS_FRESH; then warn ".env non trovato — fresh install necessario"
|
||||
else ok ".env presente"
|
||||
fi ; echo ""
|
||||
|
||||
echo -e "${BOLD}[2] Migration pendenti${NC}"
|
||||
if [ -f "${APP_DIR}/artisan" ]; then
|
||||
$ARTISAN migrate:status 2>&1 | grep -E '(Pending|Ran)' | head -5 || true
|
||||
PENDING=$(php -r "echo trim(shell_exec('${ARTISAN} migrate:status 2>&1 | grep -c Pending || true'));" 2>/dev/null || echo "0")
|
||||
if [ "${PENDING:-0}" -gt 0 ] 2>/dev/null; then
|
||||
warn "${PENDING} migration da eseguire"
|
||||
else
|
||||
ok "Nessuna migration pendente"
|
||||
fi
|
||||
else
|
||||
warn "artisan non disponibile — skip migration check"
|
||||
fi ; echo ""
|
||||
|
||||
echo -e "${BOLD}[3] Storage & Permessi${NC}"
|
||||
for d in storage/framework/cache/data storage/framework/sessions \
|
||||
storage/framework/views storage/logs bootstrap/cache \
|
||||
storage/app/public storage/app/backups; do
|
||||
p="${APP_DIR}/${d}"
|
||||
if [ -d "$p" ]; then
|
||||
[ -w "$p" ] && ok "${d}" || warn "${d} — non scrivibile"
|
||||
else
|
||||
warn "${d} — mancante"
|
||||
fi
|
||||
done ; echo ""
|
||||
|
||||
echo -e "${BOLD}[4] Symlink storage${NC}"
|
||||
if [ -L "${APP_DIR}/public/storage" ]; then
|
||||
ok "public/storage → $(readlink "${APP_DIR}/public/storage")"
|
||||
else
|
||||
warn "public/storage non presente"
|
||||
fi ; echo ""
|
||||
|
||||
echo -e "${BOLD}[5] Cache${NC}"
|
||||
for d in bootstrap/cache storage/framework/cache/data \
|
||||
storage/framework/sessions storage/framework/views; do
|
||||
c=$(find "${APP_DIR}/${d}" -type f 2>/dev/null | wc -l)
|
||||
[ "$c" -gt 0 ] && warn "${d}: ${c} file" || ok "${d}: vuoto"
|
||||
done
|
||||
echo "" ; echo -e "${YELLOW}═══════════ FINE CONTROLLO ═══════════${NC}"
|
||||
}
|
||||
|
||||
run_upgrade() {
|
||||
echo -e "${YELLOW}═══════════ UPGRADE ═══════════${NC}" ; check_artisan
|
||||
|
||||
run_step "[1/9]" "Directory storage" mkdir -p \
|
||||
"${APP_DIR}/storage/framework/cache/data" \
|
||||
"${APP_DIR}/storage/framework/sessions" \
|
||||
"${APP_DIR}/storage/framework/views" \
|
||||
"${APP_DIR}/storage/logs" "${APP_DIR}/bootstrap/cache" \
|
||||
"${APP_DIR}/storage/app/public" \
|
||||
"${APP_DIR}/storage/app/public/logos" \
|
||||
"${APP_DIR}/storage/app/public/documenti/eventi" \
|
||||
"${APP_DIR}/storage/app/backups" \
|
||||
"${APP_DIR}/storage/app/documenti" \
|
||||
"${APP_DIR}/storage/app/private/avatars/gruppi" || true
|
||||
|
||||
run_step "[2/9]" ".gitignore storage" bash -c \
|
||||
"echo '*'>'${APP_DIR}/storage/app/public/.gitignore'; echo '!.gitignore'>>'${APP_DIR}/storage/app/public/.gitignore'" || true
|
||||
|
||||
run_step "[3/9]" "Permessi" chmod -R 775 \
|
||||
"${APP_DIR}/storage" "${APP_DIR}/bootstrap/cache" || true
|
||||
|
||||
run_step "[4/9]" "Symlink storage" bash -c \
|
||||
"rm -f '${APP_DIR}/public/storage'; ln -sf '../storage/app/public' '${APP_DIR}/public/storage'" || true
|
||||
|
||||
run_step "[5/10]" "Migrazioni DB" $ARTISAN migrate --force || true
|
||||
|
||||
run_step "[6/10]" "Seed diocesi" $ARTISAN db:seed --class=DiocesiSeeder --force || true
|
||||
|
||||
run_step "[7/10]" "Dump autoload" composer dump-autoload --no-dev --optimize || true
|
||||
|
||||
run_step "[8/10]" "Key generate" $ARTISAN key:generate --force || true
|
||||
|
||||
run_step "[9/10]" "Pulizia cache" bash -c \
|
||||
"$ARTISAN config:clear && $ARTISAN route:clear && $ARTISAN view:clear" || true
|
||||
|
||||
run_step "[10/10]" "Verifica finale" $DIAGNOSE || true
|
||||
|
||||
echo "" ; echo -e "${GREEN}${BOLD}✅ Upgrade completato.${NC}"
|
||||
}
|
||||
|
||||
run_install() {
|
||||
echo -e "${YELLOW}═══════════ INSTALL (fresh) ═══════════${NC}" ; check_artisan
|
||||
|
||||
run_step "[1/10]" "Directory storage" mkdir -p \
|
||||
"${APP_DIR}/storage/framework/cache/data" \
|
||||
"${APP_DIR}/storage/framework/sessions" \
|
||||
"${APP_DIR}/storage/framework/views" \
|
||||
"${APP_DIR}/storage/logs" "${APP_DIR}/bootstrap/cache" \
|
||||
"${APP_DIR}/storage/app/public" \
|
||||
"${APP_DIR}/storage/app/public/logos" \
|
||||
"${APP_DIR}/storage/app/public/documenti/eventi" \
|
||||
"${APP_DIR}/storage/app/backups" \
|
||||
"${APP_DIR}/storage/app/documenti" \
|
||||
"${APP_DIR}/storage/app/private/avatars/gruppi" || true
|
||||
|
||||
run_step "[2/10]" ".gitignore storage" bash -c \
|
||||
"echo '*'>'${APP_DIR}/storage/app/public/.gitignore'; echo '!.gitignore'>>'${APP_DIR}/storage/app/public/.gitignore'" || true
|
||||
|
||||
run_step "[3/10]" "Permessi" chmod -R 775 \
|
||||
"${APP_DIR}/storage" "${APP_DIR}/bootstrap/cache" || true
|
||||
|
||||
run_step "[4/10]" "File .env" cp "${APP_DIR}/.env.example" "${APP_DIR}/.env" || true
|
||||
warn "MODIFICA .env con i tuoi dati DB/URL prima di proseguire"
|
||||
if ! $BATCH; then read -p " Fatto? (Invio per continuare) " _; fi
|
||||
|
||||
run_step "[5/10]" "Symlink storage" bash -c \
|
||||
"rm -f '${APP_DIR}/public/storage'; ln -sf '../storage/app/public' '${APP_DIR}/public/storage'" || true
|
||||
|
||||
run_step "[6/10]" "Dump autoload" composer dump-autoload --no-dev --optimize || true
|
||||
|
||||
run_step "[7/10]" "Key generate" $ARTISAN key:generate --force || true
|
||||
|
||||
run_step "[8/11]" "Migrazioni DB" $ARTISAN migrate --force || true
|
||||
|
||||
run_step "[9/11]" "Seed diocesi" $ARTISAN db:seed --class=DiocesiSeeder --force || true
|
||||
|
||||
run_step "[10/11]" "Pulizia cache" bash -c \
|
||||
"$ARTISAN config:clear && $ARTISAN route:clear && $ARTISAN view:clear" || true
|
||||
|
||||
run_step "[11/11]" "Verifica finale" $DIAGNOSE || true
|
||||
|
||||
echo "" ; echo -e "${GREEN}${BOLD}✅ Installazione completata.${NC}"
|
||||
}
|
||||
|
||||
case "$MODE" in
|
||||
check) run_check ;;
|
||||
upgrade)
|
||||
run_check ; echo ""
|
||||
if $BATCH; then run_upgrade
|
||||
else
|
||||
read -p "Procedere con l'upgrade? (s/N) " c
|
||||
[ "$c" = "s" ] || [ "$c" = "S" ] && run_upgrade || echo "Annullato."
|
||||
fi
|
||||
;;
|
||||
install) run_install ;;
|
||||
*)
|
||||
echo "Uso: bash post-deploy.sh {check|upgrade|install} [--yes]"
|
||||
echo " check — diagnostica (nessuna modifica)"
|
||||
echo " upgrade — aggiorna installazione esistente"
|
||||
echo " install — fresh install"
|
||||
echo " --yes — batch (nessuna conferma)"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
POSTDEPLOY
|
||||
|
||||
chmod +x post-deploy.sh
|
||||
|
||||
echo " OK"
|
||||
|
||||
echo "==> Creazione archivio: ${ARCHIVE}"
|
||||
|
||||
tar czf "${ARCHIVE}" \
|
||||
@@ -60,6 +277,8 @@ tar czf "${ARCHIVE}" \
|
||||
--warning=no-file-changed \
|
||||
.
|
||||
|
||||
rm -f post-deploy.sh
|
||||
|
||||
echo ""
|
||||
echo "============================================"
|
||||
echo " Archivio creato: ${ARCHIVE}"
|
||||
@@ -70,33 +289,14 @@ echo "Per estrarre sul server di destinazione:"
|
||||
echo " tar xzf ${ARCHIVE}"
|
||||
echo ""
|
||||
echo "Poi esegui:"
|
||||
echo " # 0. Diagnostica preliminare"
|
||||
echo " php diagnose.php"
|
||||
echo " # Upgrade di un'installazione esistente:"
|
||||
echo " bash post-deploy.sh upgrade"
|
||||
echo ""
|
||||
echo " # 1. Crea directory necessarie (se non esistono già)"
|
||||
echo ' mkdir -p storage/framework/cache/data storage/framework/sessions storage/framework/views storage/logs bootstrap/cache storage/app/public storage/app/public/logos storage/app/public/documenti/eventi storage/app/backups storage/app/documenti storage/app/private/avatars/gruppi'
|
||||
echo " # Fresh install:"
|
||||
echo " bash post-deploy.sh install"
|
||||
echo ""
|
||||
echo " # 2. Crea file .gitignore in storage/app/public (serve a Laravel)"
|
||||
echo ' echo "*" > storage/app/public/.gitignore'
|
||||
echo ' echo "!.gitignore" >> storage/app/public/.gitignore'
|
||||
echo " # Solo controllo (nessuna modifica):"
|
||||
echo " bash post-deploy.sh check"
|
||||
echo ""
|
||||
echo " # 3. Permessi (web server = www-data)"
|
||||
echo ' chmod -R 775 storage bootstrap/cache'
|
||||
echo ' chown -R www-data:www-data storage bootstrap/cache'
|
||||
echo ""
|
||||
echo " # 4. Configura ambiente"
|
||||
echo " cp .env.example .env # modifica DB, APP_URL, etc."
|
||||
echo " php artisan key:generate"
|
||||
echo ""
|
||||
echo " # 5. Pulisci cache e ricrea symlink storage (relativo per portabilità)"
|
||||
echo ' rm -f public/storage'
|
||||
echo ' ln -sf ../storage/app/public public/storage'
|
||||
echo " php artisan config:clear"
|
||||
echo " php artisan route:clear"
|
||||
echo " php artisan view:clear"
|
||||
echo ""
|
||||
echo " # 6. Avvia installazione MySQL"
|
||||
echo " php install.php"
|
||||
echo ""
|
||||
echo " # 7. Verifica finale"
|
||||
echo " php diagnose.php"
|
||||
echo " # Batch mode (nessuna conferma):"
|
||||
echo " bash post-deploy.sh upgrade --yes"
|
||||
|
||||
Reference in New Issue
Block a user