应用程序"appname"无法在打开的班次节点应用程序上启动(端口8080不可用)

phi*_*noo 19 linux node.js coffeescript openshift restify

我已经用咖啡写了一个节点restify服务器,我似乎无法让它运行.

部署时我收到以下错误:

等待应用程序端口(8080)变得可用...

之后我得到以下错误

应用程序'appname'无法启动(端口8080不可用)

如果coffeescript似乎是问题,那么就有一项工作.我不想改回js.

我的服务器代码是:

restify = require 'restify'
Bunyan = require 'bunyan'

server = restify.createServer
    name: 'APPNAME'
    version: '0.0.1'
    log: Bunyan.createLogger
        name: 'api'
        serializers: 
            req: ()->
                return "bad"

# Usercontroller.access calls a function to process the request
server.post '/user/access', UserController.access

server = create.createServer()
server.listen server_port, ->
    console.log "Http server listening on #{server_port}"
    require('./document')(server.router.mounts, 'restify')
    return
Run Code Online (Sandbox Code Playgroud)

cod*_*sed 29

您需要检查的第一步是查看〜/ app-root/logs/nodejs.log下的日志

在我的情况下,包或任何类型的访问都没有问题.我在日志中获得的唯一信息是:

错误:在Server._listen2(net.js:1024:19)的errnoException(net.js:905:11)中侦听EACCES

如果除了前控制台之外找不到任何理由说它无法访问8080,请确保已指定IP地址和PORT编号.

这就是我修复它的方法.

var express = require('express');
var app = express();
var http = require('http');

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 3002);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1");


http.createServer(app).listen(app.get('port') ,app.get('ip'), function () {
    console.log("? Express server listening at %s:%d ", app.get('ip'),app.get('port'));
    server();
});
Run Code Online (Sandbox Code Playgroud)

如上所述,app.get('ip')在收听时非常重要.否则,openshift无法启动您的应用程序.

更新:

如何进入日志目录:

  1. 使用命令rhc ssh SSH进入你的装备
  2. 登录后输入类型 cd $OPENSHIFT_LOG_DIR

你有Openshift环境存储的日志文件.

  • 好好调用`〜/ app-root/logs/nodejs.log`.我没想到错误日志可能会记录错误.:-P (6认同)
  • 在`app`上设置字段`ip`为我解决了它.谢谢 (2认同)

小智 6

这可能有很多原因.如果nodejs没有正确启动,PaaS似乎试图不断启动它.它要么为端口创建冲突,要么错误与问题本身无关.在我的情况下,缺少一个依赖.解决问题的最佳方法是在应用程序容器中ssh并观察日志文件:tail -f~/app-root/logs/nodejs.log


phi*_*noo 1

通过设置我的 mongo db 用户名和密码解决了问题