seitime-frappe/frappe/docs/user/en/guides/basics/sites.md
2017-07-31 17:39:44 +05:30

2.4 KiB
Executable file

Sites

Sites Directory

Frappé is a multitenant platform and each tenant is called a site. Sites exist in a directory called sites_dir, assumed as the current working directory when running a frappe command or other services like Celery worker or a WSGI server.

You can set sites_dir with an environment variable SITES_DIR or pass --sites_dir option to the frappe command.

Apart from the sites, the sites_dir should contain the following.

apps.txt

apps.txt contain a list of Python packages to treat as Frappé apps. Every frappe app that you intend to use in you site should have an entry in this file. Also, they should be in the PYTHONPATH. For more information, refer Frappé Apps.

common_site_config.json

common_site_config.json is an optional file. Configuration common to all sites can be put in this file.

assets

Assets contain files that are required to be served for the browser client. These generally include *.js, *.css, *.png files. This directory is auto generated using the bench build command.

languages.txt

languages.txt is an autogenerated file which maps every language to it's code.

Site

A site is a directory in sites_dir which represents a tenant in Frappé Platform.

Directory Structure

site
├── locks
├── private
│   └── backups
├── public
│   └── files
│		└── testfile.txt
└── site_config.json
  • locks directory is used by the scheduler to synchronize various jobs using the file locking concept.

  • private directory contains files that require authentication to access. Presently, it is limited only to backups.

  • public directory contains files that can directly served. In the above example, testfile.txt can be accessed by the URL, http://site/files/testfile.txt

  • site_config.json contains site specific configuration

Site Config

See configuration options for site_config.json

Site Resolution

While responding to an HTTP request, a site is automatically selected based on,

  • Host header in the HTTP request matches a site
  • X-Frappé-Site-Name header in the HTTP request matches a site

It is also possible to force the development server to serve a specific site by starting it with the following command. bench --site SITENAME serve

Adding a new site

bench new-site SITENAME