内容提要
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命令来管理程序。