Documentation Frappe Framework

Frappe Framework

Sites

Frappe est une plateforme multi-tenant : chaque tenant est un site avec sa propre base de données. Cette page décrit le dossier sites, la création d’un site, sa structure, son fichier site_config.json et la façon dont Frappe choisit le site à servir.

3 min de lectureMis à jour le Source : docs.frappe.io

Un site, un tenant

Frappe est une plateforme multi-tenant (multitenant) : chaque tenant s’appelle un site. Un site possède sa propre base de données. Les sites se trouvent dans un dossier nommé sites, considéré comme le dossier de travail courant quand vous lancez une commande bench.

Le dossier sites

Le dossier frappe-bench/sites héberge tous les sites du bench. Il contient aussi d’autres fichiers et dossiers, décrits ci-dessous.

apps.txt

Ce fichier liste les apps Frappe. Une app doit y figurer avant de pouvoir être installée sur un site. Elle y est ajoutée automatiquement par les commandes bench get-app et bench new-app.

common_site_config.json

Ce fichier reçoit la configuration commune à tous les sites. En savoir plus sur la configuration du site.

assets

Le dossier assets contient les fichiers à servir au navigateur du client : en général des fichiers *.js, *.css et des images. Il est généré automatiquement par la commande bench build. En production, c’est Nginx qui sert ce dossier.

Créer un nouveau site

Pour créer un site, lancez la commande suivante depuis le dossier frappe-bench :

terminal
$ bench new-site mysite.localhost

Installing frappe...
Updating DocTypes for frappe        : [========================================]
Updating country info               : [========================================]
*** Scheduler is disabled ***

Le dossier du site, mysite.localhost, est alors créé dans le dossier sites.

Structure du dossier d’un site

terminal
sites/mysite.localhost
├── locks
├── private
│   ├── backups
│   └── files
├── public
│   └── files
├── site_config.json
└── task-logs

locks

Ce dossier est utilisé par le planificateur (scheduler) pour synchroniser les différentes tâches grâce au verrouillage de fichiers.

private

Ce dossier contient les fichiers dont l’accès exige une authentification : fichiers privés et sauvegardes. Ils sont accessibles via une URL de la forme /private/files/private-file.png.

public

Ce dossier contient les fichiers accessibles publiquement, via une URL de la forme /files/public-file.png.

site_config.json

Ce fichier contient la configuration propre au site.

Le fichier site_config.json

Chaque dossier de site contient un fichier site_config.json qui stocke la configuration spécifique au site. Ses valeurs sont disponibles dans la variable locale frappe.conf, sous forme de dictionnaire.

Exemple de site_config.json :

json
{
    "db_name": "test_frappe",
    "db_password": "test_frappe",
    "admin_password": "admin",
}

Pour en savoir plus sur la gestion des configurations au niveau du site ou du bench, consultez la page Configuration (site_config.json).

Résolution du site

Quand Frappe répond à une requête HTTP, il choisit automatiquement le site selon l’un des critères suivants :

  • l’en-tête Host de la requête HTTP correspond à un site ;
  • l’en-tête X-Frappe-Site-Name de la requête HTTP correspond à un site.

Vous pouvez aussi forcer le serveur de développement à servir un site précis en le lançant avec la commande :

terminal
bench --site mysite.localhost serve

Définir un site comme site courant

Pour qu’un site soit utilisé par défaut, lancez :

terminal
bench use mysite.localhost

Après cette commande, les commandes propres à un site peuvent être lancées sans le paramètre --site.

Par exemple, au lieu de :

terminal
bench --site mysite.localhost migrate

vous pouvez simplement lancer :

terminal
bench migrate

Pages liées