82 lines
2.4 KiB
Markdown
82 lines
2.4 KiB
Markdown
# Sites
|
|
|
|
## Sites Directory
|
|
|
|
Frappe 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 Frappe 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
|
|
[Frappe Apps](/help/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 Frappe 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](http://en.wikipedia.org/wiki/File_locking).
|
|
|
|
* `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`](/docs/user-guide/site_config.md)
|
|
|
|
### 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-Frappe-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
|
|
|
|
`frappe new-site SITENAME`
|