运行一个活跃的 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 配置中进行配置。