📜  使用 supervisord 运行 django 自定义管理命令 (1)

📅  最后修改于: 2023-12-03 15:22:17.054000             🧑  作者: Mango

使用 supervisord 运行 django 自定义管理命令

Supervisord 是一个用 Python 实现的进程管理工具,可以用于管理在 Linux 系统下运行的进程。它可以启动、停止、重启进程,并在进程意外终止时自动重启进程。本文将介绍如何使用 supervisord 运行 Django 的自定义管理命令。

1. 安装 supervisord

在 Ubuntu 系统上,使用以下命令安装 supervisord:

sudo apt-get install supervisor
2. 配置 supervisord

在 supervisord 的配置文件中添加一个 program,用于运行 Django 的自定义管理命令。例如,我们要运行一个名为 my_command 的自定义管理命令,可以这样配置:

[program:my_command]
command=/path/to/python /path/to/manage.py my_command
directory=/path/to/project
user=www-data
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/path/to/logs/my_command.log

该配置文件内容解释如下:

  • [program:my_command]:程序的名称。这个名称可以是任意的,只要它不与其他程序的名称重复即可。
  • command:要运行的命令。这里是运行 Django 的自定义管理命令 my_command。
  • directory:命令的工作目录。这里是 Django 项目的根目录。
  • user:运行命令的用户。这里是 www-data 用户。
  • autostart:服务是否随着 supervisord 启动而自动启动。这里设置为 true。
  • autorestart:服务在意外停止时是否自动重启。这里设置为 true。
  • redirect_stderr:重定向 stderr 到 stdout。这里设置为 true。
  • stdout_logfile:输出日志文件的路径。这里是一个名为 my_command.log 的文件,它将日志写入到 /path/to/logs 目录中。
3. 配置日志切割

由于 supervisord 启动的进程将挂在后台运行,可以通过 logrotate 工具将日志文件按照一定规则切割。例如,可编写一个名为 /etc/logrotate.d/my_command 的配置文件,配置如下:

/path/to/logs/my_command.log {
    daily
    rotate 7
    missingok
    notifempty
    compress
    delaycompress
}

这里我们将 my_command.log 日志文件每天产生一个新文件,并最多保留 7 个旧日志文件。当日志文件不存在时,不产生错误。当日志文件为空时,不进行切割。使用 gzip 压缩旧的日志文件,并稍后进行压缩。

4. 重启 supervisord

完成以上配置后,重启 supervisord 服务即可生效:

sudo service supervisor restart

以上就是使用 supervisord 运行 django 自定义管理命令的详细介绍。