主管,Gunicorn(退出状态 127;预计不会)
Supervisord, Gunicorn (exit status 127; not expected)
我希望使用 supervisor 来监控 运行 gunicorn 服务器。
当我运行:
/usr/bin/gunicorn app.wsgi:application -c config.conf
有效。
但是我的主管 conf 文件中的完全相同的命令不起作用。有什么解释吗?
supervisor.conf
[supervisord]
[group:app]
programs=gunicorn_app
[program:gunicorn_app]
environment=PYTHONPATH=usr/bin
command=/usr/bin/gunicorn app.wsgi:application -c gunicorn.conf.py
directory=~/path/to/app
autostart=true
autorestart=true
environment=LANG="en_US.UTF-8",LC_ALL="en_US.UTF-8",LC_LANG="en_US.UTF-8"
我收到这样的错误:
2016-05-31 22:53:34,786 INFO spawned: 'gunicorn_app' with pid 18763
2016-05-31 22:53:34,789 INFO exited: gunicorn_app (exit status 127; not expected)
2016-05-31 22:53:35,791 INFO spawned: 'gunicorn_app' with pid 18764
2016-05-31 22:53:35,795 INFO exited: gunicorn_app (exit status 127; not expected)
2016-05-31 22:53:37,798 INFO spawned: 'gunicorn_app' with pid 18765
2016-05-31 22:53:37,802 INFO exited: gunicorn_app (exit status 127; not expected)
2016-05-31 22:53:40,807 INFO spawned: 'gunicorn_app' with pid 18766
2016-05-31 22:53:40,810 INFO exited: gunicorn_app (exit status 127; not expected)
我知道退出代码 127 表示 "command not found" 但我可以在命令行上执行完全相同的命令。
尽量使用绝对路径。
/home/path/to/app
不是~/path/to/app
如您所说,此代码表示 "command not found",这可能是以下任一情况的结果:
- 主管无法找到配置文件
- 配置错误
无论如何,我会推荐你:
案例 1:
确保你提供绝对路径(完整路径)路径给你 gunicorn.conf.py 文件(.e.g. /home/user/path/to/gunicorn.conf.py)
案例 2:
重新访问您的主管配置文件并尝试确定可能出现错误的位置。这样做的最佳方法是找到日志文件并打开它以验证原因。为方便起见,我建议将以下内容添加到您的 supervisord.conf 文件中:
[program:gunicorn]
# where the configuation file is located on the /home/<user>/path/to/configuration_file
command=/usr/local/bin/gunicorn app.wsgi:application -c /home/<user>/path/to/gunicorn.conf.py
directory=~/path/to/app
autostart=true
autorestart=true
#add this setting to log error
stderr_logfile=/var/log/gunicorn.err.log
stdout_logfile=/var/log/gunicorn.out.log
environment=LANG="en_US.UTF-8",LC_ALL="en_US.UTF-8",LC_LANG="en_US.UTF-8"
注意:我在这里所做的假设是您想要部署或 运行 使用 gunicorn 的 django 应用程序。午餐服务器时遇到的任何错误都可以在 gunicorn.err.log 文件中进行验证。
我希望使用 supervisor 来监控 运行 gunicorn 服务器。
当我运行:
/usr/bin/gunicorn app.wsgi:application -c config.conf
有效。
但是我的主管 conf 文件中的完全相同的命令不起作用。有什么解释吗?
supervisor.conf
[supervisord]
[group:app]
programs=gunicorn_app
[program:gunicorn_app]
environment=PYTHONPATH=usr/bin
command=/usr/bin/gunicorn app.wsgi:application -c gunicorn.conf.py
directory=~/path/to/app
autostart=true
autorestart=true
environment=LANG="en_US.UTF-8",LC_ALL="en_US.UTF-8",LC_LANG="en_US.UTF-8"
我收到这样的错误:
2016-05-31 22:53:34,786 INFO spawned: 'gunicorn_app' with pid 18763
2016-05-31 22:53:34,789 INFO exited: gunicorn_app (exit status 127; not expected)
2016-05-31 22:53:35,791 INFO spawned: 'gunicorn_app' with pid 18764
2016-05-31 22:53:35,795 INFO exited: gunicorn_app (exit status 127; not expected)
2016-05-31 22:53:37,798 INFO spawned: 'gunicorn_app' with pid 18765
2016-05-31 22:53:37,802 INFO exited: gunicorn_app (exit status 127; not expected)
2016-05-31 22:53:40,807 INFO spawned: 'gunicorn_app' with pid 18766
2016-05-31 22:53:40,810 INFO exited: gunicorn_app (exit status 127; not expected)
我知道退出代码 127 表示 "command not found" 但我可以在命令行上执行完全相同的命令。
尽量使用绝对路径。 /home/path/to/app 不是~/path/to/app
如您所说,此代码表示 "command not found",这可能是以下任一情况的结果:
- 主管无法找到配置文件
- 配置错误
无论如何,我会推荐你:
案例 1:
确保你提供绝对路径(完整路径)路径给你 gunicorn.conf.py 文件(.e.g. /home/user/path/to/gunicorn.conf.py)
案例 2:
重新访问您的主管配置文件并尝试确定可能出现错误的位置。这样做的最佳方法是找到日志文件并打开它以验证原因。为方便起见,我建议将以下内容添加到您的 supervisord.conf 文件中:
[program:gunicorn]
# where the configuation file is located on the /home/<user>/path/to/configuration_file
command=/usr/local/bin/gunicorn app.wsgi:application -c /home/<user>/path/to/gunicorn.conf.py
directory=~/path/to/app
autostart=true
autorestart=true
#add this setting to log error
stderr_logfile=/var/log/gunicorn.err.log
stdout_logfile=/var/log/gunicorn.out.log
environment=LANG="en_US.UTF-8",LC_ALL="en_US.UTF-8",LC_LANG="en_US.UTF-8"
注意:我在这里所做的假设是您想要部署或 运行 使用 gunicorn 的 django 应用程序。午餐服务器时遇到的任何错误都可以在 gunicorn.err.log 文件中进行验证。