节点JS表达应用程序不在Openshift上提供索引文件。适用于当地

时间:2015-01-10 21:06:44

标签: node.js express openshift server

我已对节点应用程序进行了一些更新,部署到OpenShift,现在它不会在实时发送index.html文件。我也更新了Express并修复了那里的所有错误......

我的目录结构如下:

/Site/
....server.js
....app/
........index.html/

我的服务器看起来像这样:

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

app.use(express.static('app'));

require('./server-stripe.js')(app);

app.get('*', function(req, res) {
    res.sendFile(path.resolve(__dirname + 'app/index.html'));
});

var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || process.env.OPENSHIFT_INTERNAL_IP ||'127.0.0.1'

app.listen(server_port, server_ip_address, function () {
  console.log( "Listening on " + server_ip_address + ", server_port " + server_port )
});

它在我的本地环境中工作正常但在生产中我得到503服务不可用。

任何建议都将不胜感激!什么结束,所有这一切;)

谢谢, 马特

修改 这是日志:

==> app-root/logs/haproxy.log <==
[WARNING] 009/181452 (443835) : Server express/local-gear is UP (leaving maintenance).
[WARNING] 009/181453 (443835) : Server express/local-gear is DOWN, reason: Layer7 wrong status, code: 404, info: "Not Found", check duration: 36ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
[ALERT] 009/181453 (443835) : proxy 'express' has no server available!

==> app-root/logs/nodejs.log <==
Error: ENOENT, stat '/var/lib/openshift/539976e05004467473000668/app-root/runtime/repo/app/index.html'

我正在读环氧树脂的东西,虽然我不太熟悉它?

1 个答案:

答案 0 :(得分:0)

Haproxy需要您的应用从根路径(http://domain.name)提供具有http 200 OK响应代码的内容。否则会报告你的装备是否已关闭。您可以尝试使用应用程序自带的curl检查应用程序,查看IP和端口的部署日志。

要从所选文件夹(此处为“/ app”)提供静态文件而不必担心类型识别,您可以使用:

app.use(express.static(__dirname + '/app'));

如果本机mime类型不够,可以扩展它们:

express.mime.type['ogv'] = 'video/ogg';

否则,请参阅Basic static file server in NodeJS以获取静态文件服务器的“手动”实现。

请参阅:http://expressjs.com/api.html