我在使用 Gunicorn 和 Supervisor 部署 Django 应用程序时遇到问题。虽然我可以让 Gunicorn 为我的应用程序提供服务(通过设置适当的 PYTHONPATH 并运行适当的命令,即来自 supervisord 配置的命令),但我无法让主管运行它。它只是看不到我的应用程序。我不知道如何确定配置文件是否正常。
这是 supervisorctl 所说的:
# supervisorctl start myapp_live
myapp_live: ERROR (no such process)
Run Code Online (Sandbox Code Playgroud)
我在 Ubuntu 10.04 上使用以下配置运行它:
文件 /home/myapp/live/deploy/supervisord_live.ini:
[program:myapp_live]
command=/usr/local/bin/gunicorn_django --log-file /home/myapp/logs/gunicorn_live.log --log-level info --workers 2 -t 120 -b 127.0.0.1:10000 -p deploy/gunicorn_live.pid webapp/settings_live.py
directory=/home/myapp/live
environment=PYTHONPATH='/home/myapp/live/eco/lib'
user=myapp
autostart=true
autorestart=true
Run Code Online (Sandbox Code Playgroud)
在 /etc/supervisor/supervisord.conf 文件的末尾,有:
[include]
files = /etc/supervisor/conf.d/*.conf
Run Code Online (Sandbox Code Playgroud)
这是我的配置文件的符号链接:
# ls -la /etc/supervisor/conf.d
lrwxrwxrwx 1 root root 48 Dec 4 18:02 myapp-live.conf -> /home/myapp/live/deploy/supervisord_live.ini
Run Code Online (Sandbox Code Playgroud)
对我来说一切都很好,但 supervisorctl 只是一直说myapp_live: ERROR (no …
我有主管设置来管理一些流程。当我启动我的服务器时它工作得很好,但是当我停止它并尝试再次启动它时它失败并给我这个错误消息:
* 启动 Supervisor 守护进程管理器... 错误:另一个程序已经在监听我们的一个 HTTP 服务器配置为使用的端口。在启动 supervisord 之前先关闭这个程序。 如需帮助,请使用 /usr/bin/supervisord -h ...失败!
我在端口 80 上运行 nginx,在端口 8000、8001、8002、8003 上运行 4 个 Web 服务器
有谁知道发生了什么?
当我重新启动时一切正常。
Supervisord 不附带初始化脚本或不指示如何自动启动它,即。重启后。我尝试了一些用户提供的 /etc/init.d 脚本,但它们都失败了。
什么是首选的解决方案?
有什么方法supervisord可以自动重新启动失败/退出/终止的作业并向我发送一封通知电子邮件,其中包含日志文件最后 x 行的转储?
我已经定义了一个非同质的主管组。但是我无法使用组名控制该组。
如果我尝试,我会收到以下错误:
$ supervisorctl start groupname
groupname ERROR (no such process)
Run Code Online (Sandbox Code Playgroud)
但是,我可以控制组的单个元素,例如 supervisorctl start groupname:programname
是否可以一次控制整个组(启动/停止/重新启动组中的所有程序)?如果是这样,如何?
我似乎无法弄清楚如何附加到 supervisord 程序配置中的默认路径。
我可以重置路径:
environment=PATH="/home/site/environments/master/bin"
Run Code Online (Sandbox Code Playgroud)
但是当我尝试:
environment=PATH="/home/site/environments/master/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
我看到 supervisord 不评估$PATH.
出于某种原因,谷歌在这方面没有太大帮助,我不敢相信我是第一个需要这个的人。
Supervisord 必须对此提供支持,知道它是什么吗?
我在 CentOS 6.5 上安装了 Supervisor,目前遇到了一些我似乎无法修复的奇怪错误。
我supervisord.conf在/etc目录中创建了一个文件并像这样调用主管:
$ supervisord -c /etc/supervisord.conf
Run Code Online (Sandbox Code Playgroud)
这看起来很基本。但是这个错误一直出现:
Error: .ini file does not include supervisord section
Run Code Online (Sandbox Code Playgroud)
我的 supervisord.conf 文件看起来像:
[program:supervisord]
command=/usr/local/bin/run_queue.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/laraqueue.err.log
stdout_logfile=/var/log/laraqueue.out.log
Run Code Online (Sandbox Code Playgroud)
有人知道这里有什么问题吗?
我目前正在重建我的 vps,我想使用主管来管理我的 gunicorn/wsgi django 进程。事情是,主管不断退出进程:
2010-07-23 14:54:40,575 INFO supervisord started with pid 31391
2010-07-23 14:54:41,582 INFO spawned: 'projectx' with pid 31395
2010-07-23 14:54:41,691 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:42,695 INFO spawned: 'projectx' with pid 31401
2010-07-23 14:54:42,801 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:44,806 INFO spawned: 'projectx' with pid 31404
2010-07-23 14:54:44,912 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:47,917 INFO spawned: 'projectx' with pid 31408
2010-07-23 14:54:48,022 INFO exited: projectx …Run Code Online (Sandbox Code Playgroud) 我正在配置主管守护程序以启动/停止 Celery。
这没用。在来回调试后,我意识到问题在于它没有将工作目录更改为程序部分下 supervisord.conf 中的目录选项中提到的目录。
希望workdir芹菜中有一个,但我很好奇 - 那么这个directory选项的目的是什么?
如果您通过主管运行脚本并打印pwd它将输出/。
我用这样的主管运行 docker 容器:
文件
CMD ["/run.sh"]
Run Code Online (Sandbox Code Playgroud)
运行文件
#!/usr/bin/env bash
exec supervisord -n
Run Code Online (Sandbox Code Playgroud)
主管-serf.conf
[group:job]
programs=serf,producer
[program:serf]
command=/start-serf-agent.sh
numprocs=1
autostart=true
autorestart=unexpected
stopasgroup=true
killasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
Run Code Online (Sandbox Code Playgroud)
start-serf-agent.sh
#!/bin/bash
exec serf agent --join=serf:7946 -tag role=producer
Run Code Online (Sandbox Code Playgroud)
supervisor-service.conf
[program:producer]
command=/start.sh
numprocs=1
stopasgroup=true
killasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
Run Code Online (Sandbox Code Playgroud)
启动文件
#!/bin/bash
exec /producer --project=${NAME}
Run Code Online (Sandbox Code Playgroud)
制作人停止后,我得到了:
producer_1 | 2016/02/29 21:59:50 [INFO] serf: EventMemberLeave: 7c4fbc80af97 172.19.0.2
producer_1 | 2016/02/29 21:59:51 INF 1 stopping
producer_1 | 2016/02/29 21:59:51 INF 1 exiting router
producer_1 | 2016-02-29 21:59:51,281 INFO exited: …Run Code Online (Sandbox Code Playgroud) supervisord ×10
linux ×3
centos ×1
containers ×1
daemon ×1
deployment ×1
docker ×1
gunicorn ×1
logging ×1
monitoring ×1
process ×1
python ×1