Changes to "Multi-sites" between 2020-05-08 23:57:48 and 2021-05-01 17:28:17



1
2
3
4
5
6
7
8
9
10


11
12
13
14
15
16
17
18
19
20
21
22
23
24

25
26
27


28
29
30


31
32
33





34
35
36
37



38


39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

28
29


30
31
32


33
34
35


36
37
38
39
40
41
42


43
44
45
46
47
48
49
+
+










+
+













-
+

-
-
+
+

-
-
+
+

-
-
+
+
+
+
+


-
-
+
+
+

+
+

# Installation multi-sites (ferme ou usine à Garradins)

Il est possible assez facilement de personnaliser l'installation de Garradin pour héberger plusieurs associations avec le même code, permettant de n'avoir qu'une seule copie du code à mettre à jour. C'est comme ça que fonctionne le service garradin.eu, ainsi que les instances chez AnimaFac par exemple.

Pour mettre en place ce fonctionnement il faut jouer avec la constante `DATA_ROOT` dans le fichier `config.local.php`.

## Exemple

Faire pointer les sous-domaines des associations vers un répertoire où a été placé le code de Garradin (sans procéder à l'installation). Dans le répertoire créer un fichier `config.local.php` contenant :

```
<?php

namespace Garradin;

if (!preg_match('/^([a-z]+)\.monsite\.tld$/', $_SERVER['SERVER_NAME'], $match)) {
    die('Accès invalide');
}

$user = $match[1];
$user_data_dir = __DIR__ . '/users/' . $user;

if (!is_dir($user_data_dir)) {
    mkdir($user_data_dir, 0700, true);
}

// Définir le dossier où sont stockés les données
define('Garradin\DATA_ROOT', $user_data_dir);
const DATA_ROOT = $user_data_dir;

// Désactiver le log des erreurs visible dans l'interface (sécurité)
define('Garradin\ERRORS_ENABLE_LOG_VIEW', false);
// Désactiver le log des erreurs PHP visible dans l'interface (sécurité)
const ENABLE_TECH_DETAILS = false;

// Ne pas afficher les erreurs de code
define('Garradin\SHOW_ERRORS', false);
// Ne pas afficher les erreurs de code PHP
const SHOW_ERRORS = false;

// Envoyer les erreurs par mail à cette adresse
define('Garradin\MAIL_ERRORS', 'administrateur@monsite.tld');
// Envoyer les erreurs PHP par mail à cette adresse
const MAIL_ERRORS = 'administrateur@monsite.tld';

// Indiquer que l'on va utiliser cron pour lancer les tâches à exécuter (envoi de rappels de cotisation)
const USE_CRON = true;
```

Ainsi chaque instance stockera ses données dans le répertoire
`garradin/users/identifiant`.
Ainsi chaque instance stockera ses données dans le répertoire `garradin/users/identifiant`.

Il faut ensuite créer un cron qui lance `scripts/cron.php` de chaque association au moins une fois par jour.

Pour gérer les mises à jour il existe un script en ligne de commande `scripts/upgrade.php`.

Si vous avez besoin de plus d'aide pour mettre en place un tel service vous pouvez [contacter les développeurs](https://garradin.eu/contact/).