繁体   English   中英

如何使用gunicorn将heroku nginx buildpack添加到python django应用程序中?

[英]How to add the heroku nginx buildpack to a python django app with gunicorn?

我正在尝试在 heroku 上部署带有 django 的 python 并配置一个 nginx 反向代理,使其像过滤器一样不会让请求传递到我的 django 后端,直到令牌被检查到第三方 IDP。

** 第1步 **

我正在按照本教程添加 nginx buildpack: https ://elements.heroku.com/buildpacks/hq-mobile/v3-nginx-buildpack

添加 buildpack 并启动应用程序后,我收到以下消息: bin/start-nginx: line 37: bundle: command not found

经过一番挖掘,我注意到需要将一些路径添加到 heroku 应用程序的配置变量中,以便捆绑程序获得所需的依赖项:

所以我添加了这个路径:

heroku config:add GEM_PATH=vendor/bundle/1.9.3

heroku config:set PATH=bin:vendor/bundle/ruby/1.9.3/bin:/usr/local/bin:/usr/bin:/bin 

然后是config/unicorn.rb文件:

require 'fileutils'
listen '/tmp/nginx.socket'
before_fork do |server,worker|
  FileUtils.touch('/tmp/app-initialized')
end

简介

web: bin/start-nginx bundle exec unicorn -c config/unicorn.rb gunicorn -c gunicorn.conf.py MyApp.wsgi

gunicorn.conf.py

# gunicorn.conf
def when_ready(server):
    # touch app-initialized when ready
    open('/tmp/app-initialized', 'w').close()

bind = 'unix:///tmp/nginx.socket'
workers = 4

即使添加了这个,错误仍然存​​在。

** 第2步 **

一旦正常的 buildpack 就位,我想按照本教程来配置我想要的 nginx:

https://www.nginx.com/blog/validating-oauth-2-0-access-tokens-nginx/

需要什么配置才能让这个 buildpack 在我的情况下工作?

要解决此问题,请从 Procfile 中删除bundle exec部分。 换句话说,您的 Procfile 变为:

web: bin/start-nginx unicorn -c config/unicorn.rb gunicorn -c gunicorn.conf.py MyApp.wsgi

(旁注:仅使用MyApp.wsgi可能会出错,因为您可能需要将其更改为MyApp.wsgi:application以公开MyApp.wsgi:application的环境变量)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM