[应用部署]使用supervisor管理web应用出错重启等状态

[应用部署]使用supervisor管理web应用出错重启等状态

💡 原文中文,约1100字,阅读约需3分钟。
📝

内容提要

supervisor是一个Python开发的进程管理工具,可在Linux系统下使用。安装完成后,配置文件会自动添加到/etc/supervisor/supervisor.conf中。可以在/etc/supervisor/conf.d/目录下创建自己的配置文件,并在其中输入程序的相关信息。使用supervisor运行管理程序,可以通过sudo service supervisor restart和sudo supervisorctl命令进行操作。

🔎

延伸解读

配置文件目录的自动加载机制

文章指出,在 /etc/supervisor/conf.d/ 目录下新建的配置文件会自动被添加到主配置文件 /etc/supervisor/supervisor.conf 中。这意味着用户无需手动修改主配置文件,只需在 conf.d 目录下管理各自的程序配置即可。这种设计便于模块化管理多个应用,也降低了配置冲突的风险。

虚拟环境下启动命令的两种写法

对于使用 pipenv 创建虚拟环境的项目,可以直接在 command 中写 'pipenv run gunicorn -w 4 wsgi:app'。而使用 virtualenv 时,文章建议在项目根目录创建 bash 脚本,先激活虚拟环境再执行 gunicorn。两种方式都旨在确保应用在正确的 Python 环境中运行,读者可根据自己使用的工具选择。

autostart 与 autorestart 的作用

配置示例中设置了 autostart=true 和 autorestart=true,这表示 supervisor 会在启动时自动拉起程序,并在程序意外退出时自动重启。对于需要长期稳定运行的 Web 应用,这两个选项能减少人工干预。同时 stopasgroup 和 killasgroup 确保停止时能终止整个进程组,避免残留子进程。

❓

Q&A

supervisor是什么?它只能在Linux系统下使用吗?

supervisor是一个采用Python开发的进程管理工具,它只在Linux系统下生效。

如何安装supervisor?

可以通过命令sudo apt-get install supervisor来安装supervisor。

supervisor的配置文件放在哪里?如何添加自己的配置?

安装后配置文件会自动添加到/etc/supervisor/supervisor.conf中。可以在/etc/supervisor/conf.d/目录下新建自己的配置文件,该目录下的配置文件会自动被添加到主配置文件中。

在supervisor的配置文件中,[program:xxx]部分需要设置哪些内容?

需要设置program(程序名)、command(要运行的命令,一般是程序启动命令)、directory(应用程序的主目录)、user、autostart、autorestart等常规设置,可以根据需要灵活配置。

如果使用pipenv创建虚拟环境,如何在supervisor中配置启动命令?

可以直接在command命令中使用pipenv run,例如:command=pipenv run gunicorn -w 4 wsgi:app。

如果使用virtualenv创建虚拟环境,如何通过bash脚本让supervisor启动应用?

可以在项目根目录创建一个bash脚本,内容示例:#!/bin/bash cd /home/ubuntu/blog/flask-blog-owner source venv/bin/activate exec gunicorn -w 4 wsgi:app。然后在supervisor配置的command中指向该脚本。

如何使用supervisor来管理程序(启动、重启等)?

可以使用sudo service supervisor restart和sudo supervisorctl命令来管理程序。

🏷️

标签

➡️

继续阅读