Django§
使用 Unit 运行基于 Django 框架 的应用
使用 Python 3 语言模块安装 Unit。
安装并配置 Django 框架。官方文档 建议 设置虚拟环境;如果设置,稍后配置 Unit 时将其列为 home。此处为 /path/to/venv/。
创建一个 Django 项目。此处,我们将其安装在 /path/to/app/;在配置中使用真实路径。以下步骤假定你的项目使用 基本目录结构
/path/to/app/ |-- manage.py |-- django_app1/ | |-- ... |-- django_app2/ | |-- ... |-- project/ | |-- ... | |-- asgi.py | `-- wsgi.py `-- static/
运行以下命令,以便 Unit 可以访问 应用目录
# chown -R unit:unit /path/to/app/
有关更多详细信息,包括权限,请参阅 安全检查清单。
接下来,为 Unit 准备 Django 配置。此处,/path/to/app/ 目录存储在 path 选项中;虚拟环境为 home;project/ 子目录中的 WSGI 或 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/django" } } ], "applications": { "django": { "type": "python 3.X", "path": "/path/to/app/", "home": "/path/to/venv/", "module": "project.wsgi", "environment": { "DJANGO_SETTINGS_MODULE": "project.settings", "DB_ENGINE": "django.db.backends.postgresql", "DB_NAME": "project", "DB_HOST": "127.0.0.1", "DB_PORT": "5432" } } } }
注意
ASGI 需要 Python 3.5+ 和 Django 3.0+。
{ "listeners": { "*:80": { "pass": "routes" } }, "routes": [ { "match": { "uri": "/static/*" }, "action": { "share": "/path/to/app$uri" } }, { "action": { "pass": "applications/django" } } ], "applications": { "django": { "type": "python 3.X", "path": "/path/to/app/", "home": "/path/to/venv/", "module": "project.asgi", "environment": { "DJANGO_SETTINGS_MODULE": "project.settings", "DB_ENGINE": "django.db.backends.postgresql", "DB_NAME": "project", "DB_HOST": "127.0.0.1", "DB_PORT": "5432" } } } }
上传更新后的配置。假设上述 JSON 已添加到
config.json
# curl -X PUT --data-binary @config.json --unix-socket \ /path/to/control.unit.sock http://localhost/config/
更新成功后,您的项目和应用应可在侦听器的 IP 地址和端口上使用