# Sciences Afrique - Guide de Déploiement o2switch

## Structure du projet pour le déploiement

```
sciences afrique/
├── deploy/o2switch/          # Fichiers de déploiement o2switch
│   ├── .env.production       # Template .env pour la production
│   ├── Makefile              # Automatisation via SSH
│   └── deploy-guide.md       # Guide détaillé pas à pas
├── public/
│   ├── _migrate.php          # Script fallback (sans SSH)
│   ├── _cleanup.php          # Diagnostic & nettoyage
│   └── .htaccess             # Optimisé pour o2switch (HTTPS, cache, sécurité)
└── DEPLOYMENT.md             # Ce fichier
```

## Configuration requise o2switch

| Composant | Version/Configuration |
|-----------|----------------------|
| PHP | 8.2+ (sélectionner dans cPanel) |
| Base de données | MySQL (via cPanel) |
| Extensions PHP | mbstring, openssl, pdo_mysql, curl, xml, zip, fileinfo, gd, json, bcmath |
| Mémoire PHP | 256M minimum |
| Max execution time | 120s minimum |

## Déploiement rapide (2 méthodes)

### Méthode 1 : Via SSH (recommandé)

```bash
# 1. Connectez-vous au serveur
ssh votre_utilisateur@votre_domaine.com

# 2. Clonez/Uploadez les fichiers dans ~/sites/votre_domaine.com/

# 3. Configurez l'environnement
cp deploy/o2switch/.env.production .env
# Éditez .env avec vos informations DB, Stripe, etc.

# 4. Installez et déployez
composer install --no-dev --optimize-autoloader
php artisan key:generate
php artisan migrate --force
php artisan db:seed --class=BadgeSeeder
php artisan storage:link
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

### Méthode 2 : Sans SSH (via cPanel File Manager)

1. Uploadez tous les fichiers **SAUF** `vendor/`, `node_modules/`, `.env`, `.git/`
2. Configurez PHP 8.2 dans "Sélectionner une version de PHP"
3. Créez la base de données MySQL dans cPanel
4. Copiez `deploy/o2switch/.env.production` vers `.env` et configurez
5. Ouvrez `https://votre-domaine.com/_migrate.php?secret=sciences-afrique-install-2026`
6. Suivez les étapes dans le navigateur
7. **Supprimez** `_migrate.php` et `_cleanup.php` après l'installation

## Checklist de déploiement

- [ ] PHP 8.2 sélectionné dans cPanel
- [ ] Extensions PHP activées (mbstring, pdo_mysql, curl, etc.)
- [ ] Base de données MySQL créée
- [ ] Fichiers uploadés sur le serveur
- [ ] `.env` configuré avec les bonnes valeurs DB
- [ ] `php artisan key:generate` exécuté
- [ ] Migrations exécutées (`migrate --force`)
- [ ] `php artisan storage:link` exécuté
- [ ] Domaine pointe vers `public/`
- [ ] SSL activé (HTTPS)
- [ ] Cron configuré (`* * * * * php ... artisan schedule:run`)
- [ ] Fichiers de fallback supprimés
- [ ] `APP_DEBUG=false` dans `.env`
- [ ] Tests manuels de l'application

## Dépannage

### Erreur 500
```bash
# Vérifier les logs
tail -f storage/logs/laravel.log

# Vérifier les permissions
chmod -R 755 ~/sciencesafrique/
chmod -R 775 ~/sciencesafrique/storage/
chmod -R 775 ~/sciencesafrique/bootstrap/cache/

# Vider le cache
php artisan cache:clear
php artisan config:clear
```

### Les assets ne se chargent pas
```bash
npm run build
php artisan config:clear
```

### Erreur de base de données
Vérifiez les variables `DB_*` dans `.env` correspondent aux valeurs cPanel.

---

📖 Guide complet : [`deploy/o2switch/deploy-guide.md`](deploy/o2switch/deploy-guide.md)
