# ArtShare — Installation locale et déploiement

Ce guide couvre :
1. l'installation du projet sur ton PC (Laragon) ;
2. la première mise en ligne sur OVH (`https://artshare.hautin.net`) ;
3. les mises à jour suivantes.

L'offre OVH Perso n'a ni SSH ni Composer côté serveur. Le principe est donc le suivant : tout est préparé sur le PC, y compris le dossier `vendor`, puis envoyé par FTP. Les commandes à lancer sur le serveur passent par la page `/maintenance`.

---

## 1. Installation locale (une seule fois)

### Prérequis

- **Laragon**, avec PHP **8.3 ou plus**. Pour vérifier : menu Laragon → *Terminal*, puis `php -v`. Si la version est plus ancienne, ajoute une version récente de PHP via *Menu → PHP → Version*.
- **GitHub Desktop**, avec le dépôt cloné dans `C:\laragon\www\artshare`.

### Étapes

1. Dans GitHub Desktop, sur la branche **main** : *Fetch origin*, puis *Pull origin*.
2. Dans Laragon, clique sur *Start All*, puis ouvre le *Terminal* et tape :
   ```
   cd C:\laragon\www\artshare
   composer install
   copy .env.example .env
   php artisan key:generate
   ```
3. Crée la base locale : *Menu Laragon → MySQL → Create database* (ou via HeidiSQL), et nomme-la `artshare`. Le fichier `.env` pointe déjà vers `artshare` avec l'utilisateur `root` sans mot de passe, ce qui correspond à la configuration par défaut de Laragon.
4. Crée les tables :
   ```
   php artisan migrate
   ```
5. Clique sur *Menu Laragon → Reload* (ou redémarre Laragon), puis ouvre **http://artshare.test**. Laragon sert automatiquement le dossier `public`.
6. Pour lancer les tests automatisés :
   ```
   php artisan test
   ```

Le fichier `.env` n'est jamais envoyé sur GitHub : il est exclu par `.gitignore`.

---

## 2. Première mise en ligne sur OVH

### 2.1 Informations à réunir (espace client OVH)

| Information | Où la trouver |
|---|---|
| Serveur, utilisateur et mot de passe FTP | Hébergement → onglet *FTP - SSH* |
| Serveur MySQL, nom de la base, utilisateur, mot de passe | Hébergement → onglet *Bases de données*. Le serveur ressemble à `xxxxx.mysql.db`. |
| Adresse d'envoi des e-mails | Plus tard, en V1 : *Emails* → créer `noreply@hautin.net` |

### 2.2 Préparer les fichiers sur le PC

Dans le terminal Laragon :
```
cd C:\laragon\www\artshare
composer install --no-dev --optimize-autoloader
```
Cette commande retire du dossier `vendor` les outils de développement, qui n'ont pas leur place sur le serveur. **Après l'envoi**, remets-les avec `composer install`, sinon `php artisan test` ne fonctionnera plus en local.

### 2.3 Envoyer par FTP (FileZilla)

1. Connecte-toi au serveur FTP.
2. Côté serveur, va dans `www/artshare`. Le dossier racine du site est `www/artshare/public`. Supprime le fichier de test `index.html` que tu y avais mis.
3. Envoie **tout le contenu** de `C:\laragon\www\artshare` dans `www/artshare`, **sauf** :
   - `.git` et `.env` ;
   - `tests` ;
   - le contenu de `storage/logs` et de `storage/framework/sessions`. Garde les dossiers eux-mêmes et leurs fichiers `.gitignore`.

Le premier envoi est long, à cause des milliers de petits fichiers du dossier `vendor`.

### 2.4 Créer le fichier `.env` du serveur

Sur le PC, prépare un fichier `env-ovh.txt`, que tu **ne mettras jamais** dans le dépôt, à partir de `.env.example`. Modifie ces lignes :

```
APP_ENV=production
APP_DEBUG=false
APP_URL=https://artshare.hautin.net
APP_KEY=           ← voir ci-dessous
LOG_LEVEL=warning

DB_HOST=xxxxx.mysql.db
DB_DATABASE=nom_de_la_base
DB_USERNAME=utilisateur
DB_PASSWORD=mot_de_passe

SESSION_SECURE_COOKIE=true

ARTSHARE_MAINTENANCE_TOKEN=   ← voir ci-dessous
```

- **APP_KEY** : génère une clé propre au serveur, différente de ta clé locale, avec `php artisan key:generate --show`, puis copie le résultat (qui commence par `base64:`).
- **Jeton de maintenance** : génère-le avec `php -r "echo bin2hex(random_bytes(24));"` (48 caractères), puis garde-le dans ton gestionnaire de mots de passe.

Envoie ce fichier par FTP dans `www/artshare`, puis renomme-le en `.env` sur le serveur.

### 2.5 Finaliser depuis le navigateur

1. Ouvre **https://artshare.hautin.net/maintenance**.
2. Saisis le jeton et choisis **Appliquer les migrations**. Le résultat doit lister les tables créées.
3. Recommence avec **Mettre en cache (après déploiement)**.
4. Ouvre **https://artshare.hautin.net** : la page d'accueil s'affiche.

---

## 3. Mises à jour suivantes

1. Fusionne la pull request sur GitHub, puis, dans GitHub Desktop : *Fetch origin* → *Pull origin*.
2. Teste en local : `composer install`, `php artisan migrate`, `php artisan test`, puis vérifie dans le navigateur.
3. Prépare l'envoi : `composer install --no-dev --optimize-autoloader`.
4. Dans FileZilla, envoie le projet en choisissant *Écraser si la source est plus récente*. Seuls les fichiers modifiés partent.
5. Sur `/maintenance` : **Appliquer les migrations** (si la version en contient), puis **Mettre en cache**.
6. Remets les outils de développement en local : `composer install`.
7. Suis la liste de tests de la version dans `docs/plan-de-travail.md`.

Si `composer.json` n'a pas changé, inutile de renvoyer le dossier `vendor`.

---

## 4. En cas de problème

| Symptôme | Piste |
|---|---|
| Page blanche ou « 500 Server Error » | Lis le dernier fichier de `storage/logs` par FTP. Vérifie le `.env` (APP_KEY, accès à la base), puis lance **Vider les caches**. |
| `/maintenance` répond « 404 » | Le jeton est absent du `.env`, ou trop court (moins de 32 caractères). |
| Modification du `.env` ou de `config/artshare.php` sans effet | La configuration est en cache : lance **Vider les caches**, puis **Mettre en cache**. |
| Erreur d'écriture dans `storage` | Vérifie par FTP que `storage` et `bootstrap/cache` sont accessibles en écriture (droits 755 pour les dossiers). |
| Ne jamais faire | Activer `APP_DEBUG=true` sur OVH : les erreurs détaillées, mots de passe compris, deviendraient visibles du public. |
