Django Channels§
要使用 Django Channels 框架和 Unit 运行 Django 应用
使用 Python 3.6+ 语言模块安装 Unit。
安装并配置 Django 3.0+ 框架。官方文档 建议设置虚拟环境;如果你这样做,稍后配置 Unit 时将其列为home。此处为/path/to/venv/。
在你的虚拟环境中安装 Django Channels
$ cd /path/to/venv/ $ source bin/activate $ pip install channels $ deactivate
创建一个 Django 项目。此处,我们将使用 教程聊天应用,将其安装在/path/to/app/;在你的配置中使用真实路径。以下步骤假定你的项目使用 基本目录结构
/path/to/app/ |-- manage.py |-- chat/ | |-- ... |-- mysite/ | |-- ... | `-- asgi.py `-- static/
运行以下命令,以便 Unit 可以访问 应用程序目录
# chown -R unit:unit /path/to/app/
有关更多详细信息,包括权限,请参阅 安全检查清单。
根据官方Channels 指南将 Django Channels 集成到你的项目中。
接下来,为 Unit 创建 Django Channels 配置。此处,/path/to/app/ 目录存储在 path 选项中;虚拟环境为 home;mysite/ 子目录中的 ASGI 模块通过 module 导入。如果你重新排列目录,请相应地设置path、home 和 module。
你还可以使用 environment 选项设置项目依赖的一些环境变量。最后,如果你的项目使用 Django 的静态文件,可以选择添加一个路由以使用 Unit 提供这些文件。
以下是一个示例(对 share、path、environment、module 和 home 使用实际值)
{ "listeners": { "*:80": { "pass": "routes" } }, "routes": [ { "match": { "uri": "/static/*" }, "action": { "share": "/path/to/app$uri" } }, { "action": { "pass": "applications/djangochannels" } } ], "applications": { "djangochannels": { "type": "python 3.X", "path": "/path/to/app/", "home": "/path/to/venv/", "module": "mysite.asgi", "environment": { "DJANGO_SETTINGS_MODULE": "mysite.settings" } } } }
上传更新后的配置。假设上述 JSON 已添加到
config.json
# curl -X PUT --data-binary @config.json --unix-socket \ /path/to/control.unit.sock http://localhost/config/
成功更新后,你的项目和应用(此处为聊天)将在侦听器的 IP 地址和端口上运行