基准流程文件

bench start 使用 honcho 在开发者模式下管理多个进程。

进程

运行 frappe 所需的各种进程包括:

  1. bench start – Web 服务器
  2. redis_cache 用于缓存(通用)
  3. redis_queue 用于管理后台工作进程的队列
  4. redis_socketio 作为消息代理,用于实时更新 / 来自后台工作进程的更新
  5. web 用于 frappe Web 服务器。
  6. socketio 用于实时消息传递。
  7. schedule 用于触发定时任务
  8. worker_* Redis 工作进程,用于处理异步任务

另外,如果你正在为 frappe 进行开发,可以添加:

bench watch 以自动构建 desk JavaScript 应用。

示例

 redis_cache: redis-server config/rediscache.conf
 redis_socketio: redis-server config/redissocketio.conf
 redis_queue: redis-server config/redisqueue.conf
 web: bench serve --port 8000
 socketio: /usr/bin/node apps/frappe/socketio.js
 watch: bench watch
 schedule: bench schedule
 worker_short: bench worker --queue short
 worker_long: bench worker --queue long
 worker_default: bench worker --queue default

基准测试命令速查表

可打印的 Bench CLI 速查表

在此处获取最重要的 Bench CLI 命令的 A4 大小可打印速查表 [这里](/files/Bench Cheatsheet v1.1.pdf)。下载、打印并放在你的桌子上!

常规用法

  • bench --version – 显示 bench 版本

  • bench version – 显示所有应用的版本

  • bench src – 显示 bench 仓库目录

  • bench --help – 显示所有命令和帮助

  • bench [command] --help – 显示命令的帮助

  • bench init [bench-name] – 创建一个新的 bench(从主目录运行)

    • --python TEXT Python 可执行文件的路径。
    • --ignore-exist 如果 Bench 实例已存在则忽略。
    • --apps_path TEXT 初始化后要安装的应用的 json 文件路径
    • --frappe-path TEXT frappe 仓库的路径
    • --frappe-branch TEXT 克隆 frappe 的特定分支
    • --clone-from TEXT 从路径复制仓库
    • --clone-without-update 从路径复制仓库但不更新
    • --no-procfile 拉取 bench 中所有应用的更改
    • --no-backups 为 bench 中的所有站点运行迁移
    • --no-auto-update 为 bench 构建 JS 和 CSS 产物
    • --skip-redis-config-generation 如果已经指定了 common-site-config 文件,则跳过 redis 配置生成
    • --verbose 安装期间输出详细日志
  • bench --site [site-name] COMMAND – 为命令指定站点

  • bench update – 拉取 bench-repo 和所有应用的更改,应用补丁,构建 JS 和 CSS,然后进行迁移。

    • --pull 拉取 bench 中所有应用的更改
    • --patch 为 bench 中的所有站点运行迁移
    • --build 为 bench 构建 JS 和 CSS 产物
    • --bench 更新 bench
    • --requirements 更新依赖项
    • --restart-supervisor 更新后重启 supervisor 进程
    • --no-backup 更新前不进行备份
    • --reset 忽略本地更改并更新
    • --dev 在新的 bench 上启用开发者模式,并安装运行测试所需的开发者依赖项。
  • bench restart 重启所有 bench 服务

  • bench backup 创建默认站点的备份。

备份将保存到 ~/frappe-bench/sites/{your site}/private/backups/。

  • bench backup-all-sites 备份所有站点

    • --with-files 备份包含文件的站点
  • bench restore 恢复

    • --with-private-files 恢复包含私有文件的站点(tar 文件路径)
    • --with-public-files 恢复包含公共文件的站点(tar 文件路径)
  • bench migrate 运行补丁、同步架构并重建文件/翻译

    • --rebuild-website TEXT 迁移后重建网页
  • bench migrate-env [python-version] 将虚拟环境迁移到所需的 Python 版本

  • bench --site [sitename] set-admin-password [password] 将重置管理员密码

  • bench destroy-all-sessions 销毁所有会话

配置

  • bench config – 更改 bench 配置

    • auto_update [on/off] 启用/禁用 bench 自动更新
    • dns_multitenant [on/off] 启用/禁用 DNS 多租户
    • http_timeout 设置 HTTP 超时
    • restart_supervisor_on_update 启用/禁用 supervisor 自动重启
    • serve_default_site 配置 nginx 以在以下地址提供默认站点
    • update_bench_on_update 启用/禁用运行 bench 时的 bench 更新…
  • bench setup – 设置组件

    • auto-update 为 bench 自动更新添加 cronjob

    • backups 为 bench 备份添加 cronjob

    • config 覆盖或创建 config.json

    • env 为 bench 设置 virtualenv

    • nginx 为 nginx 生成配置

    • procfile 为 bench start 设置 Procfile

    • production 将 bench 设置为生产环境

    • redis 为 redis 缓存生成配置

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

    • sudoers 将命令添加到 sudoers 列表以执行…

    • supervisor 为 supervisor 生成配置

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

    • firewall 设置防火墙并阻止除 22、80 和 443 之外的所有端口

    • ssh-port 更改默认 SSH 连接端口

    • requirements 更新 Python 和 Node 包

      • --node 仅更新 Node 包
      • --python 仅更新 Python 包
      • --dev 仅更新 Python 开发依赖项。
  • bench set-nginx-port [sitename] [port] – 在生产环境中设置站点的端口

开发

  • bench new-app [app-name] 创建一个新应用

  • bench get-app [repo-link] – 从 git 仓库下载应用并安装

    • --branch [branch-name] 获取应用的特定分支
  • bench install-app [app-name] 安装现有应用

  • bench remove-from-installed-apps [app-name] 从应用列表中移除应用

  • bench uninstall-app [app-name] 删除应用及与应用链接的所有内容(Bench 需要正在运行)

  • bench remove-app [app-name] 从 bench 中完全移除应用

  • bench --site [sitename] --force reinstall 使用全新数据库重新安装(注意:将清除旧数据库)

  • bench new-site [sitename] – 创建一个新站点

    • --db-name 数据库名称
    • --db-host 用于远程连接的自定义数据库主机 URL
    • --db-port 自定义数据库监听端口(例如,非默认的 3306 端口)
    • --mariadb-root-username MariaDB 的 root 用户名
    • --mariadb-root-password MariaDB 的 root 密码
    • --admin-password 新站点的管理员密码
    • --verbose 详细输出
    • --force 如果站点/数据库已存在,则强制恢复
    • --source_sql 使用 SQL 文件初始化数据库
    • --install-app 安装后安装应用`
  • bench use [site] 设置默认站点

  • bench drop-site 从磁盘和数据库中彻底删除站点

    • --root-login
    • --root-password
  • bench set-config [key] [value] 向站点的配置文件添加键值对

  • bench console 在 bench 虚拟环境中打开 IPython 控制台

    • --autoreload 自动重新加载代码更改
  • bench execute 在任何应用内执行方法。

    • 例如:bench execute frappe.utils.scheduler.enqueue_scheduler_events
  • bench --site [sitename] mariadb 打开 SQL 控制台

  • bench --site [sitename] export-fixtures [--app TEXT] 将应用钩子中定义的记录导出为 JSON 文件。

  • bench run-tests 运行测试

    • --app 应用名称
    • --doctype 要运行测试的 DocType
    • --test 特定测试
    • --module 运行包含测试的特定模块
    • --profile 在测试上运行 Python 性能分析器
  • bench disable-production 禁用生产环境

  • bench serve 在 0.0.0.0 上启动开发 Web 服务器

    • --port 在不同端口上启动 Web 服务器(默认:8000)
    • --profile 添加一个性能分析中间件,打印出具体调用了哪些后端方法、调用频率以及耗时。
    • --proxy 开发服务器可以运行在代理之后,例如 ngrok / localtunnel
    • --noreload 当文件更改时,禁用服务器的自动重启。
    • --nothreading 禁用使用线程处理并发请求。当需要多线程时(例如在 PDF 生成期间),可能导致意外行为。
    • --with-coverage 测量代码覆盖率并在 sites/ 文件夹中创建报告 coverage.xml。同时激活 --noreload 和 --nothreading。

调度器

  • bench enable-scheduler – 启用将运行计划任务的调度器
  • bench doctor – 获取有关后台工作进程的诊断信息
  • bench show-pending-jobs– 获取待处理任务
  • bench purge-jobs – 销毁所有待处理任务

数据导入

  • bench data-import – 从 .csv、.xls 或 .xlsx 导入批量数据

    • --file 文件名
    • --doctype DocType
    • --type 插入/更新

后台服务

运行一个活跃的 Frappe 环境需要运行各种系统级服务以及一些 Frappe 进程。

系统级服务,除了你选择的数据库解决方案和 Redis 之外,还取决于你的部署架构和策略。至于 Frappe 服务,它们定义在开发 bench 的 Procfile 和生产 bench 的 config/supervisor.conf 中。

系统进程

这些进程在系统级别处理,可能通过 bench 或其他 Frappe 部署管理工具进行配置。

  • MariaDB/PostgreSQL(数据库)
  • Redis(后台工作进程的队列和缓存)
  • NGINX(生产部署的反向代理)
  • Supervisor(bench 非容器化生产部署的进程管理)

Frappe 进程

这些进程可以手动触发,也可以通过进程管理器触发。不过,它们定义在 Frappe 的代码库中,并由其管理。

  • WSGI 服务器

WSGI 服务器负责响应发送到 frappe 的 HTTP 请求。在开发场景中,bench serve 或 bench start 会启动 Werkzeug 服务器。对于生产环境,Bench 使用 Gunicorn(在 supervisor 中自动配置)。

  • Redis 工作进程

工作进程执行 Frappe 系统中的后台任务。

这些进程在运行 bench start 时自动启动,生产环境中则在 supervisor 配置中进行配置。

  • 调度器进程

调度器进程负责在 Frappe 系统中安排定时任务的入队。该进程在运行 bench start 时自动启动,生产环境中则在 supervisor 配置中进行配置。