【问题标题】:Starting geddy on heroku fails with Error R11 (Bad bind). What is wrong with the deployment? What am I missing?在 heroku 上启动 geddy 失败并出现错误 R11(绑定错误)。部署有什么问题?我错过了什么?
【发布时间】:2012-04-13 18:03:12
【问题描述】:

我正在尝试在 heroku 中进行新的部署,似乎无法让 geddy 顺利运行。

我不断收到此错误

Error R11 (Bad bind) -> 进程绑定到端口 5768,应该是 41113(参见环境变量 PORT)

过程文件

web: geddy -p 5768

package.json

{
  "name": "oskalisti",
  "version": "0.0.1",
  "dependencies": {
    "geddy": "0.3.20",
    "jake": "0.2.31"
  }
}

完整日志:

2012-04-13T17:47:26+00:00 app[web.1]: [Fri, 13 Apr 2012 17:47:26 GMT] INFO Server starting with config: {
2012-04-13T17:47:26+00:00 app[web.1]:   "environment": "development",
2012-04-13T17:47:26+00:00 app[web.1]:   "workers": 1,
2012-04-13T17:47:26+00:00 app[web.1]:   "port": "5768",
2012-04-13T17:47:26+00:00 app[web.1]:   "debug": true,
2012-04-13T17:47:26+00:00 app[web.1]:   "rotateWorkers": false,
2012-04-13T17:47:26+00:00 app[web.1]:   "rotationWindow": 7200000,
2012-04-13T17:47:26+00:00 app[web.1]:   "rotationTimeout": 300000,
2012-04-13T17:47:26+00:00 app[web.1]:   "logDir": "/app/log",
2012-04-13T17:47:26+00:00 app[web.1]:   "gracefulShutdownTimeout": 30000,
2012-04-13T17:47:26+00:00 app[web.1]:   "heartbeatInterval": 5000,
2012-04-13T17:47:26+00:00 app[web.1]:   "heartbeatWindow": 20000,
2012-04-13T17:47:26+00:00 app[web.1]:   "staticFilePath": "/app/public",
2012-04-13T17:47:26+00:00 app[web.1]:     "store": "memory",
2012-04-13T17:47:26+00:00 app[web.1]:     "key": "sid",
2012-04-13T17:47:26+00:00 app[web.1]:   "sessions": {
2012-04-13T17:47:26+00:00 app[web.1]:     "expiry": 1209600
2012-04-13T17:47:26+00:00 app[web.1]:   "cookieSessionKey": "sdata",
2012-04-13T17:47:26+00:00 app[web.1]:   "metrics": null,
2012-04-13T17:47:26+00:00 app[web.1]:   },
2012-04-13T17:47:26+00:00 app[web.1]:   "i18n": {
2012-04-13T17:47:26+00:00 app[web.1]:     "defaultLocale": "en-us",
2012-04-13T17:47:26+00:00 app[web.1]:     "loadPaths": [
2012-04-13T17:47:26+00:00 app[web.1]:       "/app/config/locales"
2012-04-13T17:47:26+00:00 app[web.1]:     ]
2012-04-13T17:47:26+00:00 app[web.1]:   },
2012-04-13T17:47:26+00:00 app[web.1]:   "ssl": null,
2012-04-13T17:47:26+00:00 app[web.1]:   "model": {
2012-04-13T17:47:26+00:00 app[web.1]:     "useTimestamps": false,
2012-04-13T17:47:26+00:00 app[web.1]:     "forceCamel": true
2012-04-13T17:47:26+00:00 app[web.1]:   },
2012-04-13T17:47:26+00:00 app[web.1]:   "detailedErrors": true,
2012-04-13T17:47:26+00:00 app[web.1]:   "hostname": null
2012-04-13T17:47:26+00:00 app[web.1]: }
2012-04-13T17:47:26+00:00 app[web.1]: [Fri, 13 Apr 2012 17:47:26 GMT] INFO Creating 1 worker process.
2012-04-13T17:47:26+00:00 app[web.1]: [Fri, 13 Apr 2012 17:47:26 GMT] INFO Server worker running in development on port 5768 with a PID of: 6
2012-04-13T17:47:26+00:00 app[web.1]: [Fri, 13 Apr 2012 17:47:26 GMT] DEBUG LOGGING STARTED ============================================
2012-04-13T17:47:26+00:00 app[web.1]: [Fri, 13 Apr 2012 17:47:26 GMT] DEBUG ============================================================
2012-04-13T17:47:27+00:00 heroku[web.1]: Error R11 (Bad bind) -> Process bound to port 5768, should be 22421 (see environment variable PORT)

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: node.js heroku geddy


    【解决方案1】:

    好的,找到问题了,笨蛋。

    在 Procfile 上,我不应该使用端口号,heroku 将使用 $PORT 变量为我提供该端口。

    所以我让 Procfile 看起来像这样:

    web: geddy -p $PORT
    

    这很奏效。我还修改了 production.js 环境配置文件以使用 heroku 端口,如下所示:

    var config = {
      detailedErrors: false
    , hostname: null
    , port: process.env.PORT
    , sessions: {
        store: 'memory'
      , key: 'sid'
      , expiry: 14 * 24 * 60 * 60
      }
    };
    
    module.exports = config;
    

    注意那里的 port: process.env.PORT 行。

    然后,如果您以这种方式更改文件,而不是在 Procfile 文件中使用 $PORT 变量,您可以像这样启动 geddy:

    web: geddy -e production
    

    只是更好的做法,这样您的生产配置就会被加载,并且您可以真正支持不同的环境。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 2019-08-29
      • 2015-10-06
      • 1970-01-01
      相关资源
      最近更新 更多