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无法启动您的应用程序.
更新:
如何进入日志目录:
cd $OPENSHIFT_LOG_DIR你有Openshift环境存储的日志文件.
小智 6
这可能有很多原因.如果nodejs没有正确启动,PaaS似乎试图不断启动它.它要么为端口创建冲突,要么错误与问题本身无关.在我的情况下,缺少一个依赖.解决问题的最佳方法是在应用程序容器中ssh并观察日志文件:tail -f~/app-root/logs/nodejs.log