Frappe 是一个多租户平台,每个租户被称为一个“站点”。每个站点都有自己独立的数据库。站点位于名为 sites 的目录中,该目录在执行 bench 命令时被视为当前工作目录。
站点目录
站点目录 frappe-bench/sites 存放着此 bench 的所有站点。该目录还包含一些其他文件和目录,下面将逐一说明。
apps.txt
此文件包含 Frappe 应用的列表。一个应用必须先在此文件中列出,才能被安装到站点上。当运行 bench get-app 命令或 bench new-app 命令时,该文件会自动更新。
common_site_config.json
所有站点通用的配置可以放在此文件中。了解更多关于站点配置的信息。
assets
assets 目录包含需要提供给客户端浏览器使用的文件,通常包括 *.js、*.css 和图片文件。该目录通过 bench build 命令自动生成。在生产环境中,此目录由 Nginx 提供服务。
创建新站点
要创建新站点,请在 frappe-bench 目录下运行以下命令:
$ bench new-site mysite.localhost
Installing frappe...
Updating DocTypes for frappe : [========================================]
Updating country info : [========================================]
*** Scheduler is disabled ***
现在,mysite.local 目录将在 sites 目录中被创建。
目录结构
sites/mysite.localhost
├── locks
├── private
│ ├── backups
│ └── files
├── public
│ └── files
├── site_config.json
└── task-logs
locks
此目录供调度器使用,通过文件锁机制来同步各种任务。
private
此目录包含需要身份验证才能访问的文件,例如私有文件和备份。可以通过 URL:/private/files/private-file.png 访问这些文件。
public
此目录包含可公开访问的文件。可以通过 URL:/files/public-file.png 访问这些文件。
site_config.json
此文件包含站点特定的配置信息。
站点配置
每个站点目录下都有一个名为 site_config.json 的文件,用于存储该站点特定的配置。这些配置值会以字典的形式保存在 frappe.conf 局部变量中。
site_config.json 示例:
{
"db_name": "test_frappe",
"db_password": "test_frappe",
"admin_password": "admin",
}
要了解更多关于管理站点或 Bench 级别配置的信息,请查阅这份综合文档。
站点解析
在处理 HTTP 请求时,系统会根据以下条件自动选择一个站点:
- HTTP 请求中的
Host头信息与某个站点匹配 - HTTP 请求中的
X-Frappe-Site-Name头信息与某个站点匹配
也可以通过以下命令启动开发服务器,强制其服务于特定站点:
bench --site mysite.localhost serve
将某个站点设置为当前站点
要强制将某个站点设为默认站点,请运行以下命令:
bench use mysite.localhost
运行此命令后,执行站点特定命令时无需再添加 --site 参数。
例如,无需运行:
bench --site mysite.localhost migrate
只需运行:
bench migrate