主管没有启动 gunicorn

Supervisor not starting gunicorn

我在 Ubuntu 服务器上有一个 django 应用程序,它是 运行 与 gunicorn 和 started/stopped 与主管。我正在将它迁移到 运行 同一个 Ubuntu 服务器 OS 的新服务器。到目前为止,当我尝试与主管一起启动它时,它一直运行良好。当我尝试启动它时,它以 ERROR (abnormal termination) 退出我在我的新服务器上使用的配置文件与我在旧服务器上使用的配置文件完全相同,这真的让我很困扰,为什么它不能在新服务器上工作......我将把我的一些配置以及部分主管日志放在下面。

/etc/supervisor/supervisor.conf

; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0766                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)
loglevel=debug

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

[include]
files = /etc/supervisor/conf.d/*.conf

/etc/supervisor/conf.d/beta.conf

[program:beta]
command = /var/www/beta/myapp/bin/gunicorn_start
user = eli
stdout_logfile = /var/web-data/logs/beta/gunicorn_supervisor.log
redirect_stderr = true

/var/www/beta/myapp/bin/gunicorn_start

#!/bin/bash

source /var/www/beta/env/bin/activate
exec gunicorn -c /var/www/beta/myapp/bin/gunicorn_config.py myapp.wsgi

/var/www/beta/myapp/bin/gunicorn_config.py

command = '/var/www/beta/env/bin/gunicorn'
pythonpath = '/var/www/beta/myapp'
bind = '127.0.0.1:9000'
workers = 1
user = 'eli'

/var/log/supervisor/supervisord.log http://pastebin.com/fAGdJMKg

/var/web-data/logs/beta/gunicorn_supervisor.log

我的下一步是清除新服务器并重新从头开始,看看是否可以解决我的问题。这真的很困扰我,为什么两台配置完全相同的服务器,一台可以工作而另一台不能。

我也尝试过更改套接字文件的位置以及将 user=eli 添加到 [supervisord] 块,但均无济于事。

最后,如果我从命令行 运行 /var/www/beta/myapp/bin/gunicorn_start eli 它将 运行 并且我能够访问我的网站。但是,当我 sudo su 然后 运行 它时,它会像 运行ning 一样暂停(~1 秒),然后退出。它不会向控制台打印任何内容,也不会向日志文件添加任何内容。

问题已通过运行 /var/www/beta/myapp/bin/gunicorn_start 以root 逐行解决。第一个来源工作正常,但第二行有问题。

然后我尝试了 运行 gunicorn -c /var/www/beta/myapp/bin/gunicorn_config.py myapp.wsgi,这是在做同样的事情,但仍然没有显示任何错误。然后我 运行 gunicorn -c /var/www/beta/myapp/bin/gunicorn_config.py myapp.wsgi --preload 发现它正在为我在设置中的环境变量引发 KeyError。然后这一切都说得通了。当我 运行 作为 root 时,它没有与我的普通用户相同的环境变量。

而 g运行 这 我的两个服务器之间的唯一区别。我决定为我的 Django 密钥和数据库密码尝试环境变量。所以我将它们切换为它们的实际值。然后 运行 sudo supervisorctl start beta 开始一切顺利。