# Deploiement OVH - CRM SYNOLUVIA

## 1. Organisation retenue

Structure souhaitee sur l'hebergement OVH :

```text
/
├── www/                  # site vitrine existant
├── ovh/                  # logiciels existants
└── programme/
    └── crm/              # application Laravel CRM
        ├── app/
        ├── bootstrap/
        ├── config/
        ├── database/
        ├── public/       # seul dossier expose par le sous-domaine
        ├── resources/
        ├── routes/
        ├── storage/
        ├── vendor/
        └── .env
```

Le sous-domaine du CRM doit pointer vers :

```text
programme/crm/public
```

et jamais vers :

```text
programme/crm
```

Cette separation evite d'exposer `.env`, `vendor`, `storage`, `database` ou les fichiers sources Laravel.

## 2. Preparation locale avant envoi

Depuis la VM :

```bash
cd ~/programme/crm
php artisan optimize:clear
php artisan test
npm run build
```

Verifier que le dossier suivant existe apres le build :

```text
public/build
```

## 3. Fichiers a envoyer sur OVH

Envoyer tout le dossier applicatif vers :

```text
programme/crm
```

Sauf elements de developpement inutiles :

```text
node_modules/
.git/
tests/              # optionnel, peut rester hors production
storage/app/imports/*.xlsx
storage/app/imports/reports/*.json
```

Le dossier `vendor/` doit etre present sur OVH si Composer n'est pas execute en SSH.

## 4. Installation par SSH OVH, si disponible

```bash
cd programme/crm
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan storage:link
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

Si Node est disponible sur l'hebergement :

```bash
npm ci
npm run build
```

Sinon, faire le build dans la VM puis transferer `public/build`.

## 5. Permissions a verifier

Les dossiers suivants doivent etre accessibles en ecriture par PHP :

```text
storage/
bootstrap/cache/
```

En SSH, selon les droits disponibles :

```bash
chmod -R ug+rw storage bootstrap/cache
```

Eviter les permissions trop larges en production.

## 6. Fichier .env OVH

Partir de :

```text
.env.production.example
```

Puis creer sur OVH :

```text
.env
```

Points critiques :

```text
APP_ENV=production
APP_DEBUG=false
APP_URL=https://crm.synoluvia.fr
DB_CONNECTION=mysql
DB_HOST=serveur mysql OVH
DB_DATABASE=base OVH
DB_USERNAME=utilisateur OVH
DB_PASSWORD=mot de passe OVH
FILESYSTEM_DISK=public
```

Apres modification du `.env`, relancer :

```bash
php artisan config:clear
php artisan config:cache
```

## 7. Mise a jour d'un lot en production

Procedure recommandee :

```bash
cd programme/crm
php artisan down
# depot des fichiers du nouveau lot
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan up
```

Si le lot contient du front Vue :

```bash
npm ci
npm run build
```

ou envoyer le `public/build` genere depuis la VM.

## 8. Controle apres deploiement

Ouvrir :

```text
/production-ovh
```

Verifier :

```text
- tables CRM principales OK ;
- storage public OK ;
- APP_DEBUG false ;
- caches production OK ;
- connexion admin OK ;
- pages prospects, relances, notes, modeles e-mail OK.
```
