主管没有开枪

时间:2015-01-31 18:38:38

标签: python django ubuntu gunicorn supervisord

我在Ubuntu服务器上有一个django应用程序,该服务器使用gunicorn运行并使用supervisor启动/停止。我正在将其迁移到运行相同Ubuntu服务器操作系统的新服务器。到目前为止,当我尝试与主管一起开始工作时,它一直很好。当我尝试启动它时会退出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然后运行它时,它将暂停,就像它运行(~1秒)然后退出一样。它不会向控制台打印任何内容,也不会在日志文件中添加任何内容。

1 个答案:

答案 0 :(得分:2)

通过以root身份逐行运行/var/www/beta/myapp/bin/gunicorn_start来解决问题。第一个来源工作正常但是第二条线路遇到了麻烦。

然后我尝试运行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身份运行它时,它没有像普通用户那样具有相同的环境变量。

并且授予此我的两台服务器之间的唯一区别。我决定为我的django密钥和数据库密码试用环境变量。所以我将这些转换为实际值。然后跑了sudo supervisorctl start beta,它开始很好。