基准命令

本页面仅涉及 bench 项目中存在的命令,
这些命令是 CLI 工具的直接组成部分。这些命令定义在
frappe/bench 下。

有关任何框架命令的参考,请查看 Frappe 命令。

使用 bench CLI

➜ bench
Usage: bench [OPTIONS] COMMAND [ARGS]...

 Bench manager for Frappe

Options:
 --version
 --help Show this message and exit.

Commands:
 backup Backup single site
 backup-all-sites Backup all sites in current bench
 config Change bench configuration
 disable-production Disables production environment for the bench.
 download-translations Download latest translations
 exclude-app Exclude app from updating
 find Finds benches recursively from location
 get-app Clone an app from the internet or filesystem and...

同样,可以通过使用 --help 标志单独执行命令来检查所有可用的标志和选项。例如 init 命令:

➜ bench init --help
Usage: bench init [OPTIONS] PATH

 Initialize a new bench instance in the specified path

Options:
 --python TEXT Path to Python Executable.
 --ignore-exist Ignore if Bench instance exists.
 --apps_path TEXT path to json files with apps to install
 after init

命令

在 Click 的结构下,bench 是主命令组,目前 bench 下有三个主要的命令组,分别是

通用命令

一组不能广泛归类到其他命令中的命令。诸如 init、get-app、find 等命令属于此类别。这些命令直接属于 bench 组,因此可以在 shell 中直接以 bench 为前缀调用。因此,这些命令的用法如下

➜ bench COMMAND [ARGS]...

常用命令

  • init:在指定路径初始化一个新的 bench 实例。这会创建一个完整的 bench 文件夹,其中包含一个 apps 文件夹(包含当前 bench 中所有可用的 Frappe 应用)、一个 sites 文件夹(按各个站点文件夹存储所有站点数据)、一个 config 文件夹(包含你的 redis、NGINX 和 supervisor 配置文件)。env 文件夹包含当前 bench 的所有 Python 依赖以及已安装的 Frappe 应用所具有的依赖。

  • restart:重启 web、supervisor、systemd 进程单元。用于生产环境设置。

  • update:如果在 bench 目录中执行且不带任何标志,将执行备份、拉取、设置依赖、构建、运行补丁并重启 bench。使用特定标志则只执行某些任务而非全部。

  • migrate-env:将虚拟环境迁移到所需的 Python 版本。这会使用指定的 Python 版本重新生成 env 文件夹。

  • retry-upgrade:重试失败的升级

  • disable-production:禁用 bench 的生产环境。

  • renew-lets-encrypt:为站点 SSL 续期 Let’s Encrypt 证书。

  • backup:备份单个站点数据。也可用于备份文件。

  • backup-all-sites:备份当前 bench 中的所有站点。

  • get-app:从互联网或文件系统下载应用并在你的 bench 中进行设置。这会克隆 Frappe 项目的 git 仓库并将其安装到 bench 环境中。

  • remove-app:从当前 bench 中完全移除指定的 Frappe 应用,如果该应用未安装在任何站点上,则重新构建资源。

  • exclude-app:在 bench update 期间排除应用不进行更新

  • include-app:包含应用以进行更新。所有 Frappe 应用在安装时默认都会被包含。

  • remote-set-url:设置应用远程 URL

  • remote-reset-url:将应用远程 URL 重置为 frappe 官方地址

  • remote-urls:显示应用的远程 URL

  • switch-to-branch:将所有应用切换到指定分支,或用空格分隔指定多个应用

  • switch-to-develop:将 Frappe 和 ERPNext 切换到 develop 分支

高级设置相关

  • set-nginx-port:设置站点的 NGINX 端口
  • set-ssl-certificate:设置站点的 SSL 证书路径
  • set-ssl-key:设置站点的 SSL 证书私钥路径
  • set-url-root:设置站点的 URL 根路径
  • set-mariadb-host:设置 bench 的 MariaDB 主机
  • set-redis-cache-host:设置 bench 的 Redis 缓存主机
  • set-redis-queue-host:设置 bench 的 Redis 队列主机
  • set-redis-socketio-host:设置 bench 的 Redis socketio 主机
  • use:设置 bench 的默认站点
  • download-translations:下载最新翻译

开发

  • start:启动 Frappe 开发进程。使用 Procfile 启动 Frappe 开发环境。
  • src:打印 bench 源文件夹路径,可通过 cd $(bench src) 用于 cd 进入 bench 安装仓库。
  • find:从当前位置或指定路径递归查找 bench。
  • pip:使用当前 bench 的 pip 来管理 Python 包。有关 pip 用法的帮助:bench pip help [COMMAND] 或 bench pip [COMMAND] -h。
  • new-app:在 apps 文件夹下创建一个新的 Frappe 应用。

发布 bench

  • release:创建 Frappe 应用的发布版本
  • prepare-beta-release:从 develop 分支准备主要 beta 版本

设置命令

此命令组包含用于操作 Frappe 环境所需的要求和环境的命令。用于在当前 bench 上下文中设置 Frappe 环境的设置命令需要使用 bench setup 作为前缀来执行。因此,这些命令的一般用法是

➜ bench setup COMMAND [ARGS]...
  • sudoers:将命令添加到 sudoers 列表,以允许无需 root 密码执行 bench 命令

  • env:为您的 bench 设置 Python 虚拟环境。这会在 bench 目录根下设置一个 env 文件夹。

  • redis:生成 Redis 的配置

  • fonts:将 Frappe 字体添加到系统

  • config:生成或覆盖 sites/common_site_config.json

  • backups:为 bench 备份添加 cronjob

  • socketio:为 socketio 服务器设置 node 依赖

  • requirements:设置 Python 和 Node 依赖

  • manager:使用 Bench Manager 应用设置 bench-manager.local 站点,这是一个安装在它上面的 bench GUI。

  • procfile:为 bench start 生成 Procfile

  • production:为指定用户设置 Frappe 生产环境。这会安装 ansible、NGINX、supervisor、fail2ban 并生成相应的配置文件。

  • nginx:为 NGINX 生成配置文件

  • fail2ban:设置 fail2ban,这是一个入侵预防软件框架,保护计算机服务器免受暴力攻击

  • systemd:为 systemd 生成配置

  • firewall:为系统设置防火墙

  • ssh-port:设置系统的 SSH 端口

  • reload-nginx:检查 NGINX 配置文件并重新加载服务

  • supervisor:为 supervisor 生成配置

  • lets-encrypt:为站点设置 lets-encrypt SSL

  • wildcard-ssl:为多租户 bench 设置通配符 SSL 证书

  • add-domain:为特定站点添加自定义域名

  • remove-domain:从站点移除自定义域名

  • sync-domains:检查域名是否有变化。如果有,更新域名列表。

  • role:通过 ansible 角色安装依赖

配置命令

配置命令组处理当前 bench(不是 CLI 工具)配置的更改。配置组命令用于在当前 bench 上下文中操作配置。这些命令的用法是

➜ bench config COMMAND [ARGS]...
  • set-common-config:在通用配置中设置值,参数为 -c、configs 或 –config
  • remove-common-config:从当前 bench 的通用配置中移除特定键
  • update_bench_on_update:在运行 bench update 时启用/禁用 bench 更新
  • restart_supervisor_on_update:启用/禁用 supervisor 进程的自动重启
  • restart_systemd_on_update:启用/禁用 systemd 单元的自动重启
  • dns_multitenant:在运行 bench update 时启用/禁用 bench 多租户
  • serve_default_site:配置 nginx 在端口 80 上服务默认站点
  • http_timeout:设置 HTTP 超时

安装命令

安装命令组处理用于安装系统依赖以设置 Frappe 环境的命令。这些命令的用法是

 bench install COMMAND [ARGS]...
  • prerequisites:安装先决条件库、基本工具如 b2zip、htop、screen、vim、x11-fonts、python 库、cups 和 Redis
  • nodejs:安装 Node.js v8
  • nginx:安装 NGINX。如果指定了用户,则为该用户设置 sudoers
  • packer:安装 Oracle virtualbox 和 packer 1.2.1
  • psutil:通过 pip 安装 psutil
  • mariadb:安装并设置指定版本的 MariaDB 和 root 密码
  • wkhtmltopdf:为 linux 安装 wkhtmltopdf v0.12.3
  • supervisor:安装 supervisor。如果指定了用户,则为该用户设置 sudoers
  • fail2ban:安装 fail2ban,这是一个入侵预防软件框架,保护计算机服务器免受暴力攻击
  • virtualbox:安装 virtualbox。

一般用法

本节涵盖 Bench CLI 的一般用法,足以让您熟悉基本用法。

创建一个新 bench

init 命令将创建一个安装了 frappe 框架的 bench 目录。它将设置为定期备份。

➜ bench init frappe-bench && cd frappe-bench

添加站点

Frappe 应用由 frappe 站点运行,您必须至少创建一个站点。new-site 命令允许您这样做。

➜ bench new-site site1.local

添加应用

get-app 命令会从远程 git 仓库获取远程 frappe 应用并
安装它们。例如:erpnext

➜ bench get-app erpnext https://github.com/frappe/erpnext

安装应用

要在新站点上安装应用,请使用 bench install-app 命令。

➜ bench --site site1.local install-app erpnext

启动 bench

要开始使用 bench,请使用 bench start 命令

➜ bench start

要登录 Frappe / ERPNext,请打开浏览器并访问
[your-external-ip]:8000,可能是 localhost:8000

默认用户名是“Administrator”,密码是你在
创建新站点时设置的密码。

更新 bench

从你的 bench 目录更新所有应用和站点。此操作会为你执行
备份、设置依赖、构建资源、运行迁移并重启你的
进程管理器。

➜ bench update

更新 Bench 配置

要更新你的 bench 的通用站点配置,你可以使用
config 命令组下的 set-common-config 和 remove-common-config 命令。
要了解更多可用的 Frappe 站点配置,
请查看 Site Config 和 Bench Config 文档。

要添加或更新现有的配置键,你可以运行类似这样的命令

➜ bench config set-common-config -c enable_frappe_logger true

要删除现有的配置键,你可以运行类似这样的命令

➜ bench config remove-common-config enable_frappe_logger

Bench Manager

如需基于 UI 的方式来管理你的部署,请查看 Bench Manager。

➜ bench setup manager

你可以通过在任意现有 bench 上运行上述命令来轻松设置它。

这会做什么?

  1. 创建一个新站点 bench-manager.local
  2. 获取 bench_manager 应用
  3. 在站点 bench-manager.local 上安装 Bench Manager 应用

你可以使用这个站点通过
bench-manager.local 的 /desk 视图来管理你的 bench 操作。