#!/bin/bash
# mypantarei.net — passa Apache da libapache2-mod-php7.4 (mpm_prefork) a php7.4-fpm (mpm_event + proxy_fcgi).
# Usa la conf globale conf-available/php7.4-fpm.conf (attiva solo senza mod_php7).
#
# Esecuzione sul server:
#   sudo bash /var/www/html/server-ops/mypantarei/migrate-apache-php74-fpm-event.sh
#
# SPDX-License-Identifier: MIT

set -euo pipefail

if [[ "${EUID:-0}" -ne 0 ]]; then
	echo "Esegui come root: sudo bash $0" >&2
	exit 1
fi

export DEBIAN_FRONTEND=noninteractive

echo "[INFO] Test configurazione Apache (deve essere OK prima di modificare i moduli)..."
if ! apache2ctl configtest; then
	echo "[ERRORE] configtest fallito. Correggere i virtual host (es. certificati SSL mancanti) o disabilitare temporaneamente i siti interessati: a2dissite …" >&2
	exit 1
fi

echo "[INFO] Abilito moduli per FPM..."
a2enmod proxy proxy_fcgi setenvif ssl rewrite headers >/dev/null 2>&1 || true

echo "[INFO] Abilito conf php7.4-fpm (handler globale .php → socket FPM)..."
a2enconf php7.4-fpm >/dev/null 2>&1 || true

echo "[INFO] Disabilito mod_php Apache..."
if a2query -m php7.4 &>/dev/null; then
	a2dismod -f php7.4
else
	echo "[INFO] Modulo php7.4 Apache già disabilitato."
fi

if dpkg -l libapache2-mod-php7.4 &>/dev/null; then
	DPKG_STATUS="$(dpkg-query -W -f='${Status}' libapache2-mod-php7.4 2>/dev/null || true)"
	if [[ "$DPKG_STATUS" == *"ok installed"* ]]; then
		apt-get remove -y libapache2-mod-php7.4
	fi
fi

echo "[INFO] Passaggio mpm_prefork → mpm_event..."
a2dismod -f mpm_prefork 2>/dev/null || true
a2enmod mpm_event

echo "[INFO] Estensioni PHP utili a VTE (ignoro errori se già presenti)..."
apt-get update -qq
apt-get install -y --no-install-recommends \
	php7.4-fpm php7.4-cli php7.4-mysql php7.4-xml php7.4-curl php7.4-gd php7.4-mbstring \
	php7.4-zip php7.4-bcmath php7.4-imap php7.4-ldap php7.4-intl php7.4-readline php7.4-opcache \
	php7.4-soap 2>/dev/null || true
apt-get install -y --no-install-recommends php7.4-apcu php7.4-pcntl 2>/dev/null || true

install -m0644 /dev/stdin /etc/php/7.4/fpm/conf.d/99-vte-mypantarei.ini <<'EOFINI'
memory_limit = 512M
max_execution_time = 300
max_input_vars = 10000
post_max_size = 64M
upload_max_filesize = 64M
date.timezone = Europe/Rome
EOFINI

apache2ctl configtest
systemctl restart php7.4-fpm
systemctl restart apache2

echo ""
echo "[OK] Apache usa mpm_event + php7.4-fpm. Verifica: curl -sS -o /dev/null -w '%{http_code}' https://vte.mypantarei.net/ (o un URL noto)."
echo "     Cron: USE_PHP=/usr/bin/php7.4 nelle righe crontab o default già in cron/RunCron.sh delle istanze."
