返回

Deploy Django With Supervisor: A Beginner's Guide

后端

如何使用 Supervisor 部署 Django:分步指南

部署 Django 应用到实际服务器上可能是一项艰巨的任务,尤其是对那些不熟悉底层技术和最佳实践的人来说。本指南将分步指导你使用 Supervisor 将 Django 应用部署到 Linux 服务器。

1. 设置 WSGI 配置

WSGI(Web 服务器网关接口)配置是一种将 Web 服务器连接到 Web 应用的标准方法。它通常使用 WSGI 服务器(如 Gunicorn)来实现。

  1. 在 Django 项目目录中创建新的 Python 文件(如 wsgi.py)。
  2. 将以下代码添加到该文件中:
import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project_name.settings")

application = get_wsgi_application()

用你的 Django 项目名称替换 your_project_name

2. 配置 Gunicorn

Gunicorn 是 Django 应用的常用 WSGI 服务器。它以其性能和可靠性而闻名。

  1. 使用 pip 安装 Gunicorn:
pip install gunicorn
  1. 在 Django 项目目录中创建新的配置文件(如 gunicorn.conf)。

  2. 将以下代码添加到该文件中:

[uwsgi]
chdir = /path/to/your/project/directory
module = wsgi:application
workers = 3

/path/to/your/project/directory 替换为你的 Django 项目目录的路径,将 wsgi 替换为你的 WSGI 模块的名称(如 wsgi.py)。

3. 安装和配置 Supervisor

Supervisor 是一个进程控制系统,允许你管理和监控服务器上的进程。

  1. 安装 Supervisor:
sudo apt install supervisor
  1. 配置 Supervisor:

  2. 创建一个新的配置文件(如 /etc/supervisor/conf.d/your_project_name.conf)并添加以下内容:

[program:your_project_name]
command=gunicorn -c /path/to/your/project/directory/gunicorn.conf wsgi:application
directory=/path/to/your/project/directory
autostart=true
autorestart=true
redirect_stderr=true

/path/to/your/project/directory 替换为你的 Django 项目目录的路径,将 your_project_name 替换为你的 Django 项目的名称。

  1. 重新加载 Supervisor 配置:
sudo supervisorctl reread
  1. 启动 Supervisor:
sudo supervisorctl start

4. 配置 Celery

Celery 是一个分布式任务队列,允许你在后台异步运行任务。它通常用于处理后台任务,如发送电子邮件或生成报告。

  1. 使用 pip 安装 Celery:
pip install celery
  1. 在 Django 项目目录中创建新的 Celery 配置文件(如 celeryconfig.py)。

  2. 将以下代码添加到该文件中:

from __future__ import absolute_import

import os

from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project_name.settings')

app = Celery('your_project_name')

app.config_from_object('django.conf:settings', namespace='CELERY')

app.autodiscover_tasks()

用你的 Django 项目名称替换 your_project_name

  1. 在 Django 项目目录中创建新的文件(如 tasks.py)并在其中定义你的 Celery 任务。

  2. 运行以下命令启动 Celery 工作器:

celery worker -A your_project_name.celeryconfig

5. 设置 Cron 作业

Cron 作业是计划在特定时间间隔运行的任务。它们通常用于生成报告或清理旧数据等任务。

  1. 打开 Crontab 编辑器:
crontab -e
  1. 将以下行添加到该文件中:
* * * * * /path/to/your/project/directory/manage.py runcrons

/path/to/your/project/directory 替换为你的 Django 项目目录的路径。

  1. 保存并关闭文件。

结论

通过遵循本指南中的步骤,你将能够使用 Supervisor 将你的 Django 应用部署到 Linux 服务器上。这将为你提供一个强大且可靠的部署配置,可以处理后台任务和计划作业。

常见问题解答

  1. 什么是 Supervisor?
    Supervisor 是一个进程控制系统,用于管理和监控服务器上的进程。

  2. 什么是 WSGI?
    WSGI(Web 服务器网关接口)配置是将 Web 服务器连接到 Web 应用的标准方法。

  3. 什么是 Celery?
    Celery 是一个分布式任务队列,用于在后台异步运行任务。

  4. 什么是 Cron 作业?
    Cron 作业是计划在特定时间间隔运行的任务。

  5. 如何使用 Supervisor 部署 Django 应用?
    请参考本指南中的分步说明以获取详细的部署说明。