站点

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