我已对节点应用程序进行了一些更新,部署到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'
我正在读环氧树脂的东西,虽然我不太熟悉它?
答案 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以获取静态文件服务器的“手动”实现。