# Guide de déploiement - LLMbots.fr Laravel

## Prérequis

- PHP >= 8.2 avec extensions : pdo_mysql, mbstring, xml, curl, zip, gd
- Composer
- MySQL/MariaDB (serveur distant)
- Serveur web (Apache/Nginx)
- Node.js et NPM (pour les assets)

## Configuration de la base de données

### Fichier `.env`

Après avoir uploadé les fichiers sur le serveur, créez un fichier `.env` à la racine avec la configuration suivante :

```env
APP_NAME="LLMbots.fr"
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=https://votre-domaine.com

APP_LOCALE=fr
APP_FALLBACK_LOCALE=fr

LOG_CHANNEL=stack
LOG_LEVEL=error

# Configuration MySQL - SERVEUR DISTANT
DB_CONNECTION=mysql
DB_HOST=votre-serveur-mysql.com
DB_PORT=3306
DB_DATABASE=nom_de_la_base
DB_USERNAME=nom_utilisateur
DB_PASSWORD=mot_de_passe
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci

SESSION_DRIVER=database
SESSION_LIFETIME=120

CACHE_STORE=database
QUEUE_CONNECTION=database

MAIL_MAILER=smtp
MAIL_FROM_ADDRESS="noreply@llmbots.fr"
MAIL_FROM_NAME="LLMbots.fr"
```

**Important** : Remplacez les valeurs suivantes :
- `APP_URL` : L'URL de votre site
- `DB_HOST` : L'adresse IP ou le nom de domaine du serveur MySQL
- `DB_DATABASE` : Le nom de votre base de données
- `DB_USERNAME` : Le nom d'utilisateur MySQL
- `DB_PASSWORD` : Le mot de passe MySQL

## Étapes de déploiement

### 1. Upload des fichiers

Uploader tous les fichiers du projet sur le serveur (sauf `node_modules`, `vendor`, `.env`)

### 2. Configuration des permissions

```bash
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
```

### 3. Installation des dépendances

```bash
composer install --optimize-autoloader --no-dev
npm install
npm run build
```

### 4. Configuration de l'application

```bash
# Copier .env.example vers .env (si nécessaire)
cp .env.example .env

# Générer la clé d'application
php artisan key:generate

# Configurer le fichier .env avec vos informations de base de données
nano .env
```

### 5. Base de données

```bash
# Exécuter les migrations (crée les tables si elles n'existent pas)
php artisan migrate --force

# Si vous migrez depuis l'ancien projet, les tables existent déjà
# Alors exécutez seulement pour vérifier :
php artisan migrate:status

# Exécuter les seeders pour les bots IA
php artisan db:seed --class=BotSeeder
```

### 6. Lien symbolique pour le stockage

```bash
php artisan storage:link
```

### 7. Optimisation pour la production

```bash
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
```

### 8. Configuration du serveur web

#### Apache (.htaccess déjà configuré)

Assurez-vous que `mod_rewrite` est activé.

#### Nginx

```nginx
server {
    listen 80;
    server_name votre-domaine.com;
    root /chemin/vers/llmbots/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}
```

## Migration depuis l'ancien projet

Si vous migrez depuis le projet PHP natif :

1. Les tables existent déjà dans la base de données
2. Exécutez `php artisan migrate:status` pour vérifier
3. Si des migrations manquent, exécutez `php artisan migrate`
4. Vérifiez que le seeder des bots a été exécuté : `php artisan db:seed --class=BotSeeder`

## Vérification

1. Accédez à `https://votre-domaine.com`
2. Testez la connexion à la base de données
3. Testez l'upload d'un fichier de logs
4. Vérifiez les logs dans `storage/logs/laravel.log`

## Commandes utiles

```bash
# Vider le cache
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

# Vérifier la configuration
php artisan config:show database

# Tester la connexion à la base de données
php artisan db:show

# Voir les routes
php artisan route:list
```

## Sécurité

- Ne jamais commit le fichier `.env`
- Utiliser `APP_DEBUG=false` en production
- Configurer HTTPS avec un certificat SSL
- Limiter les permissions des fichiers sensibles
- Utiliser des mots de passe forts pour la base de données

