当你初始化一个新的 frappe-bench 目录时,你会得到一个类似如下的目录结构:
.
├── apps
├── frappe
├── config
├── redis_cache.conf
├── redis_queue.conf
└── redis_socketio.conf
├── env
├── logs
├── Procfile
└── sites
├── apps.txt
├── assets
├── common_site_config.json
└── site1.local
├── private
├── public
└── site_config.json
apps(应用)
frappe 应用和其他基于 frappe 的应用都存放在此目录中。当你运行 bench new-app app_name 命令时,应用会在此目录中被初始化。你的自定义应用也存放在这里,你应该在此处进行编辑和开发。
了解更多关于应用的信息。
sites(站点)
站点从此目录中提供服务。当你运行 bench new-site site_name 命令时,站点会在此目录中被创建。站点根据其目录名称进行区分。
了解更多关于站点的信息。
logs(日志)
此目录用于存放来自各种进程的日志文件。每个日志文件根据其来源进程进行命名。
config(配置)
Frappe 使用 3 个 Redis 实例来管理缓存、任务队列和 socketio 通信。所有这些配置都存放在此目录中。
env(环境)
Python 虚拟环境存放在此目录中。基于 Frappe 的应用和 Python 包依赖都安装在这里。
Procfile(进程文件)
Frappe 使用基于 Procfile 的进程管理方式。默认的 Procfile 内容如下所示:
redis_cache: redis-server config/redis_cache.conf
redis_socketio: redis-server config/redis_socketio.conf
redis_queue: redis-server config/redis_queue.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 --quiet
worker_long: bench worker --queue long --quiet
worker_default: bench worker --queue default --quiet
让我们看看每个进程的用途。
redis_cache:
用于内存缓存的 Redis。
redis_socketio:
用作 web 和 socketio 进程之间实时通信的发布/订阅(pub/sub)Redis。
redis_queue:
用于管理后台任务队列的 Redis。
web:
基于 Werkzeug 的 Python Web 服务器。
socketio:
用于与浏览器建立 socketio 连接以实现实时通信的 Node 服务器。
watch:
使用 Rollup 打包 JS/CSS 资源的 Node 服务器。它也会在文件变更时重新构建文件。
schedule:
使用 Python RQ 的作业调度器。
worker_short:
超时时间(短)为 300 秒的 Python 工作进程。
worker_long:
超时时间(长)为 1500 秒的 Python 工作进程。
worker_default:
超时时间为 300 秒的 Python 工作进程。