python - 主管没有启动 gunicorn

标签 python django ubuntu gunicorn supervisord

我在 Ubuntu 服务器上有一个 django 应用程序,它使用 gunicorn 运行并由主管启动/停止。我正在将它迁移到运行相同 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秒)然后退出。它不会向控制台打印任何内容,也不会向日志文件添加任何内容。

最佳答案

通过运行 /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 key 和数据库密码尝试环境变量。所以我将它们切换为它们的实际值。然后运行 ​​sudo supervisorctl start beta它开始非常好。

关于python - 主管没有启动 gunicorn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28255133/

相关文章:

python - 如何使用 Python 通过 Unix pass 命令行程序自动设置密码

python - 为什么分组的struct.pack会写入错误的数据?

python - 将 django 应用程序部署到 aws beanstalk 时的 requirements.txt 无效

java - Ubuntu Java XML FileNotFoundException

linux - Debian 和 Win7、Ubuntu 上的 OpenGL 阴影体积差异

python - 在 python 中追加表(不同的行号)以实现可视化目的

python - 突然出现导入错误

django - 使用 python 3 用 django 创建 PDF

python - 使用 ThreadPoolExecutor 时 Django ORM 泄漏连接

ubuntu - 将文件从 Kaggle 下载到 Google Colab