0

Heroku への新しい展開を試していますが、問題なく geddy を実行できないようです。

このエラーが発生し続けます

エラー R11 (Bad bind) -> ポート 5768 にバインドされたプロセス、41113 である必要があります (環境変数 PORT を参照)

プロフィール

web: geddy -p 5768

パッケージ.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)

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

6

OK、問題を見つけました、ばかげています。

Procfile ではポート番号を使用すべきではありませんでしたが、heroku は $PORT 変数を使用してそのポートを提供してくれます。

そこで、Procfile を次のようにしました。

web: geddy -p $PORT

そして、それはうまくいきました。また、heroku ポートも使用するように production.js 環境構成ファイルを次のように変更しました。

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

そうすれば、本番構成がロードされ、さまざまな環境を真にサポートできます。

于 2012-04-14T16:52:34.633 に答える