# Operazioni server mypantarei (VTE multi-istanza)

## Migrazione VTE 26 una istanza alla volta

Guida completa (PHP 8.3, Apache per Directory, cron, checklist ufficiale): **[README-vte26-one-by-one.md](README-vte26-one-by-one.md)**.

## Stato rilevato (workspace / inventario)

- **Ubuntu 24.04 LTS (Noble)** tipico dopo upgrade; in alternativa ancora **22.04** finché non completi `do-release-upgrade`.
- **Apache:** `mpm_prefork` + `libapache2-mod-php7.4` ancora attivi; **php7.4-fpm** già installato (Ondřej) ma non usato per le richieste web finché c’è mod_php.
- **Virtual host:** `vte.conf` / `vte-le-ssl.conf` → `vte2472`; `vtesmau.conf` / `vtesmau-le-ssl.conf` → `vtesmau` + `vteguzzini`; `vte_dev*` → `vte_dev`; `interventi*`; `wpp*` (solo reverse proxy, niente PHP Apache).

## Backup MySQL + cron VTE (www-data)

Dopo pulizia disco su `/backup`, allineare backup e cron:

```bash
sudo bash /var/www/html/server-ops/mypantarei/apply-server-backup-and-vte-cron.sh
```

Lo script:

- sposta **automysqlbackup** da `/backup` a `/var/backups/mysql` con retention (daily 14g, weekly 60g, monthly 365g);
- imposta cron VTE in `/etc/cron.d/` come utente **www-data** (`vte2472` con PHP 7.4, `vteguzzini` con wrapper PHP 8.3);
- rimuove i job **duplicati** dal crontab utente `pantarei`.

Solo cron VTE (senza toccare automysqlbackup): `DISABLE_AUTOMYSQLBACKUP=1 sudo bash .../apply-server-backup-and-vte-cron.sh`

Disabilitare del tutto i dump automatici: `sudo chmod -x /etc/cron.daily/automysqlbackup`

## 1) Migrazione web: mod_php → PHP 7.4 FPM + mpm_event

Eseguire **da SSH sul server** (richiede root):

```bash
sudo bash /var/www/html/server-ops/mypantarei/migrate-apache-php74-fpm-event.sh
```

Lo script:

- abilita `proxy_fcgi` e la conf globale `php7.4-fpm` (handler `unix:/run/php/php7.4-fpm.sock` per tutti i vhost, senza patchare ogni file);
- disabilita `php7.4` (modulo Apache) e rimuove `libapache2-mod-php7.4`;
- passa a **`mpm_event`**;
- `apache2ctl configtest` e restart `apache2` + `php7.4-fpm`.

**Prerequisito:** `apache2ctl configtest` deve essere verde. Se fallisce (es. certificato Let’s Encrypt mancante per un sito), correggere o temporaneamente `sudo a2dissite …` il sito problematico, poi rilanciare.

## 2) Upgrade Ubuntu 22.04 → 24.04

Dopo smoke test su tutti gli URL HTTPS:

```bash
sudo apt update && sudo apt full-upgrade -y
sudo do-release-upgrade
```

### Errore apt: `Conflicting values set for option Signed-By` (Microsoft)

Se `do-release-upgrade` (o `apt update`) fallisce con messaggio tipo  
`Signed-By regarding source https://packages.microsoft.com/ubuntu/22.04/prod/`  
`... microsoft-prod.gpg != ,` di solito ci sono **due** definizioni dello stesso repo: una con `signed-by=` e una senza.

Su questo host tipico:

- [`/etc/apt/sources.list.d/microsoft-prod.list`](file:///etc/apt/sources.list.d/microsoft-prod.list) — riga corretta con `signed-by=/usr/share/keyrings/microsoft-prod.gpg`
- [`/etc/apt/sources.list.d/mssql-release.list`](file:///etc/apt/sources.list.d/mssql-release.list) — **duplicato** senza `signed-by` (stesso URL `jammy main`)

**Correzione:** tenere un solo file per quel repo (backup + rimozione del duplicato):

```bash
sudo cp -a /etc/apt/sources.list.d/mssql-release.list /etc/apt/sources.list.d/mssql-release.list.bak-$(date +%Y%m%d)
sudo rm -f /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo do-release-upgrade
```

Se ti servono pacchetti Microsoft/SQL **solo** da `microsoft-prod.list`, non perdi nulla; in caso contrario verifica con `apt-cache policy mssql-tools` dopo `apt update`.

In finestra persistente (`screen` / `tmux`). Dopo 24.04: verificare che il PPA `ondrej/php` sia attivo e reinstallare eventuali `php7.4-*` mancanti; `sudo bash migrate-apache-php74-fpm-event.sh` è idempotente e può essere rilanciato.

## 3) Cron VTE

I `cron/RunCron.sh` delle istanze usano default `USE_PHP=/usr/bin/php7.4` (override possibile con variabile d’ambiente `USE_PHP`).

Wrapper opzionale (stesso effetto, path esplicito):

```bash
/var/www/html/server-ops/mypantarei/vte-RunCron-php74.sh /var/www/html/vte2472
/var/www/html/server-ops/mypantarei/vte-RunCron-php74.sh /var/www/html/vtesmau
/var/www/html/server-ops/mypantarei/vte-RunCron-php74.sh /var/www/html/vteguzzini
/var/www/html/server-ops/mypantarei/vte-RunCron-php74.sh /var/www/html/vte_dev
```

## Certificati SSL e `apache2ctl configtest`

Se `configtest` segnala certificati mancanti (es. `interventi.mypantarei.net`), rinnovare con **certbot** o disabilitare temporaneamente il sito finché i file esistono sotto `/etc/letsencrypt/live/...`.

## Backup (oltre snapshot)

```bash
sudo tar czf /root/backup-etc-apache-php-$(date +%Y%m%d).tgz /etc/apache2 /etc/php /etc/mysql /etc/mariadb 2>/dev/null
# mysqldump per ogni DB da config.inc.php delle istanze
```
