创建站点

每个站点都附带一个数据库。您可以通过特定于站点的脚本对其进行自定义,或者在其上安装应用。

创建新站点

要创建新站点,请在 frappe-bench 目录下运行以下命令:

$ bench new-site library.localhost
MySQL root password:

Installing frappe...
Updating DocTypes for frappe        : [========================================] 100%
Set Administrator password:
*** Scheduler is disabled ***
Current Site set to library.localhost

此命令将创建一个新数据库,因此您需要输入 MariaDB 的 root 密码。它还会要求您为管理员用户设置密码,请设置一个您不会忘记的密码。这将在以后派上用场。

现在,您将在 sites 目录下拥有一个名为 library.localhost 的新文件夹。

如果站点创建因任何原因失败,系统会提示您回滚更改。这将删除您站点目录中的 library.localhost 或等效文件,并删除已创建的数据库/用户。这样您就可以轻松重试,而无需手动清理不可用的站点。

站点目录结构

站点目录结构大致如下:

sites/library.localhost
├── indexes
│   └── web_routes
├── locks
├── logs
├── private
│   ├── backups
│   └── files
├── public
│   └── files
└── site_config.json

indexes 文件夹包含通过网站搜索生成的索引。

locks 文件夹维护站点内文档的基于文件的锁,以及站点自身状态的指示器。

如您所见,private 文件夹将包含所有数据库备份和私有文件。私有文件是需要身份验证才能访问的用户上传文件。

public 文件夹将包含无需身份验证即可访问的文件。其中可以包含无需登录即可访问的网站图片。

site_config.json 文件包含特定于此站点且不应进行版本控制的配置。这类似于环境变量文件。如果您查看该文件的内容,会发现其中包含此站点的数据库配置值。

{
 "db_name": "_ad03fa1a016ca1c4",
 "db_password": "pz1d2gN5y35ydRO5",
 "db_type": "mariadb"
}

在浏览器中访问站点

bench 允许您创建多个站点,并在浏览器中通过同一端口分别访问它们。这就是我们在 bench 中所说的多租户支持。

Frappe 将通过将请求的主机名与站点名称进行匹配来确定要提供哪个站点,因此您应该能够通过 http://library.localhost:8000 访问您的站点。

如果您的站点名称不以 .localhost 结尾,则此方法无法直接为您工作,因为您必须告诉操作系统 site_name 应指向 localhost。为此,您可以将以下条目添加到您的 /etc/hosts 文件中。

127.0.0.1 site_name

这会将 library.localhost 映射到 localhost。Bench 有一个便捷命令可以完成此操作。

$ bench --site site_name add-to-hosts

这将要求您输入 root 密码,并向您的 /etc/hosts 文件添加一个条目。

太棒了,现在您可以在 http://library.localhost:8000 访问您的站点。恭喜您走到了这一步。

在站点上安装应用

要在我们的站点上安装我们的图书馆管理应用,请运行以下命令:

$ bench --site library.localhost install-app library_management

Installing library_management...

要确认应用是否已安装,请运行以下命令:

$ bench --site library.localhost list-apps
frappe
library_management

您应该会看到 frappelibrary_management 已作为已安装的应用出现在您的站点上。

当您创建新站点时,frappe 应用会默认安装。

登录 Desk

在继续以下操作之前,请确保站点处于开发者模式。为确保这一点,请在您的站点中运行以下命令

bench set-config -g developer_mode 1

然后使用 bench start 命令重启 bench

要在我们的应用中创建 DocType,我们必须登录 Desk。转到 http://library.localhost:8000,它应该会向您显示一个登录页面。

输入 Administrator 作为用户,并输入您在创建站点时设置的密码。

成功登录后,您将看到设置向导。这是一次性的设置向导,用于为您的站点设置本地化详细信息。请继续,选择您的语言,并完成向导。

干得好,您已经走到了这一步!

您应该会看到类似这样的 Desk:

站点命令

我们使用 --site 选项运行了几个 bench 命令。这些命令被称为站点命令。

以下是一些有用的站点命令。

Python 控制台

# access the python console
$ bench --site library.localhost console
Apps in this namespace:
frappe, library_management

In [1]:

MariaDB 控制台

# access the mariadb console
$ bench --site library.localhost mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2333498
Server version: 10.4.13-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [_ad03fa1a016ca1c4]>

数据库备份

$ bench --site library.localhost backup
Backup Summary for library.localhost at 2020-10-06 23:21:17.277960
Config  : ./library.localhost/private/backups/20201006_232116-library_test-site_config_backup.json   94.0B
Database: ./library.localhost/private/backups/20201006_232116-library_test-database.sql.gz           217.4KiB
Backup for Site library.localhost has been successfully completed

您可以通过运行以下命令查看所有站点命令的列表:

$ bench --help
Usage: bench frappe [OPTIONS] COMMAND [ARGS]...

Options:
  --site TEXT
  --profile Profile
  --verbose Verbose
  --force Force
  --help Show this message and exit.

Commands:
  add-system-manager          Add a new system manager to a site
  add-to-email-queue          Add an email to the Email Queue
  add-to-hosts                Add site to hosts
  backup                      Backup
  browse                      Opens the site on web browser
  build                       Minify + concatenate JS and CSS files, build...
  build-message-files         Build message files for translation
  build-search-index
  bulk-rename                 Rename multiple records via CSV file
  clear-cache                 Clear cache, doctype cache and defaults
  clear-website-cache         Clear website cache
  console                     Start ipython console for a site
  data-import                 Import documents in bulk from CSV or XLSX...
  destroy-all-sessions        Clear sessions of all users (logs them out)

下一步:创建 DocType