# Déploiement cPanel

## Préparation

Utiliser PHP 8.1 ou plus récent avec `pdo_mysql`, `mbstring`, `fileinfo`, `openssl` et `zlib`. Créer une base et un utilisateur MySQL dédiés, limités à cette base. Générer une clé `APP_KEY` aléatoire d'au moins 64 caractères hexadécimaux.

## Arborescence recommandée

Placer l'application dans `/home/COMPTE/gestion-commerciale` et configurer la racine du domaine sur `/home/COMPTE/gestion-commerciale/public`. Ne copier dans `public_html` que le contenu public si cPanel interdit une autre racine; dans ce cas, adapter `public/index.php` vers le chemin privé absolu.

Le fichier `.env`, `app/`, `config/`, `database/`, `storage/` et `BACKUP_PATH` ne doivent jamais être servis par HTTP. Utiliser `755` pour les dossiers, `644` pour les fichiers, et `770` ou la valeur minimale compatible avec l'hébergeur pour les dossiers d'écriture. Ne jamais utiliser `777`.

## Installation

1. Copier `.env.example` vers `.env`.
2. Définir `APP_ENV=production`, `APP_DEBUG=false`, l'URL HTTPS, la clé, les identifiants MySQL et un `BACKUP_PATH` hors de `public_html`.
3. Depuis Terminal cPanel : `php bin/install.php`.
4. Exécuter `php bin/health-check.php`.
5. Se connecter avec le compte initial, remplacer immédiatement le mot de passe et vérifier les informations société.

## Cron

Créer une tâche cPanel toutes les cinq minutes :

```text
*/5 * * * * /usr/local/bin/php /home/COMPTE/gestion-commerciale/bin/cron.php >> /home/COMPTE/gestion-commerciale/storage/logs/cron.log 2>&1
```

Adapter le chemin PHP indiqué par cPanel. La planification fonctionnelle et la rétention se configurent dans Paramètres.

## Contrôles après déploiement

Vérifier HTTPS, connexion/déconnexion, 403 sans permission, rejet CSRF, création/validation/PDF d'une facture, paiement, chèque reçu puis encaissé, soldes caisse/banque, rapport CSV/PDF, création/téléchargement d'une sauvegarde et accès HTTP refusé à `.env`, `storage/` et `database/`.

Avant une mise à jour, créer une sauvegarde vérifiée. Copier les nouveaux fichiers, exécuter `php bin/install.php`, puis `php bin/health-check.php`. Conserver l'ancienne version applicative pour rollback; ne restaurer une base qu'après validation explicite et sauvegarde de l'état courant.
