【问题标题】:How to add the heroku nginx buildpack to a python django app with gunicorn?如何使用 gunicorn 将 heroku nginx buildpack 添加到 python django 应用程序?
【发布时间】:2020-11-14 16:12:13
【问题描述】:

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

** 第 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 在我的情况下工作?

【问题讨论】:

    标签: python django heroku bundler buildpack


    【解决方案1】:

    要解决此问题,请从 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 之类的内容以公开应用程序的环境变量)

    【讨论】:

      猜你喜欢
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      • 2021-11-12
      • 2017-06-09
      • 2016-12-19
      • 2020-11-10
      • 2020-10-03
      相关资源
      最近更新 更多