1、安装supervisor
pip install supervisor
2、进入etc生成supervisor配置文件
cd /etc
echo_supervisord_conf > supervisord.conf
3、创建文件夹
mkdir -p /etc/supervisord.d
mkdir -p /home/username/supervisor/var
mkdir -p /home/username/supervisor/log
4、配置文件
vim /etc/supervisord.conf
[unix_http_server]
file=/home/username/supervisor/var/supervisor.sock ; the path to the socket file
[supervisord]
logfile=/home/username/supervisor/log/supervisord.log ; main log file; default $CWD/supervisord.log
pidfile=/home/username/supervisor/var/supervisord.pid ; supervisord pidfile; default supervisord.pid
[supervisorctl]
serverurl=unix:///home/username/supervisor/var/supervisor.sock ; use a unix:// URL for a unix socket
[include]
files = /etc/supervisord.d/*.conf
vim /etc/supervisord.d/myblog.conf
[program:myblog_site]
directory = /home/username/django/myblog
command = pipenv run gunicorn mysite.wsgi -w 2 -k gthread -b 0.0.0.0:8000
autostart = true
autorestart = true
user = root
stdout_logfile = /home/myblog/supervisor/log/pro_stdout.log
[program:myblog_site] 指明运行应用的进程名为 myblog_site。
directory 指定执行命令时所在的目录。
command 为进程启动时执行的命令。
autostart 随 Supervisor 启动自动启动进程。
autorestart 进程意外退出时重启。
user 进程运行的用户,防止权限问题。
stdout_logfile日志输出文件。
5、启用
supervisord -c /etc/supervisord.conf
6、管理
supervisorctl status # 查看进程状态
supervisorctl stop project_name # 终止某个进程
supervisorctl start project_name # 启动某个进程
supervisorctl restart project_name # 重启某个进程
supervisorctl reread # 更新配置,根据最新的配置启动程序,会启动已经运行的程序
supervisorctl update # 更新配置,重启配置有变化的进程,不会重启那些配置没有变化
7、开机自启
systemctl enable supervisord
8、问题
①Unlinking stale socket /home/username/supervisor/var/supervisor.sock
解决方法:
rm -rf /home/username/supervisor/var/supervisor.sock
②Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
解决方法:
ps -aux|grep supervisord
kill -9 pid