# Migration autonome sur cPanel

Fichier : migration_cpanel.py. Il contient tout le schéma, nécessite seulement Python 3 et psycopg2-binary et ne lit aucun fichier local de salariés.

Dans le terminal cPanel, activer le virtualenv indiqué par « Setup Python App », puis se placer dans le dossier où le script a été envoyé :

```sh
python -m pip install psycopg2-binary==2.9.13
python migration_cpanel.py --host localhost --port 5432
```

Le script préremplit uniquement le nom de base et l’utilisateur communiqués. Le mot de passe est demandé de façon masquée ; ne pas l’ajouter à la commande. localhost:5432 est une valeur par défaut adaptée à une base sur le même serveur, pas une configuration vérifiée : remplacer si l’hébergeur indique autre chose. Pour un serveur distant, utiliser les paramètres TLS de l’hébergeur, idéalement --sslmode verify-full avec PGSSLROOTCERT.

Sauvegarder une base existante avant exécution. Le script crée/met à jour les tables et index du projet, sans supprimer de tables, sans vider les données et sans créer de compte utilisateur. Les changements sont annulés si une étape échoue (doublon NIC/identifiant, droits insuffisants, etc.). Une relance est possible. Un schéma étranger/incompatible peut être refusé ; ce n’est pas un outil universel de réparation PostgreSQL.

Cela synchronise la STRUCTURE uniquement, pas les salariés/justificatifs de la base locale. Le transfert de données est une opération distincte.

Dans la configuration de l’application Python cPanel, renseigner ensuite : PGHOST, PGPORT, PGDATABASE, PGUSER, PGPASSWORD, RH_ENV=production, RH_SECRET_KEY, RH_UPLOAD_DIR et RH_ALLOWED_HOSTS. Retirer RH_DATABASE si cette variable pointe vers SQLite, ainsi que toute ancienne DATABASE_URL, car elles sont prioritaires. Redémarrer l’application. Le script ne configure pas Passenger, le DNS ou HTTPS.

Syntaxe Python vérifiée localement ; exécution PostgreSQL non vérifiée tant que la base n’est pas accessible. Ne partager que le résultat/SQLSTATE d’une erreur, jamais le mot de passe.
