Phusion Passenger上的Express.js应用程序 - 没有及时写出启动响应

时间:2015-04-10 03:19:25

标签: node.js express passenger phusion

我正在尝试在运行Phusion Paggenger(apache)的服务器上运行express.js应用程序,并且看到错误“启动Web应用程序时出错:它没有及时写入启动响应。”请求超时后。我读过https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems,但这看起来有点模糊。我的快递应用程序尽可能简单,所以我想知道是否有人知道是否有可能导致此问题的特定组件。我已经能够在服务器上运行具有相同设置的普通node.js应用程序。

3 个答案:

答案 0 :(得分:8)

如果使用express-generator命令设置项目,您可能会看到将虚拟主机配置文件的PassengerStartupFile行指向bin/www而不是app.js技巧而不是在app.listen文件中显式调用app.js。 Phusion Passenger的documentation没有涉及ExpressJS采用的这一特定惯例。您可以在Express Moving to 4.x guide上阅读有关此bin/www启动约定的一些内容。似乎为我工作。

答案 1 :(得分:3)

您似乎需要在app.js中明确调用app.listen。具体来说,我只在生产时这样做:

if (app.get('env') === 'production') {
    app.listen(3000);
}

在app.js

的末尾

答案 2 :(得分:0)

如果您是从Google到达这里。现在已记录在旅客中:https://www.phusionpassenger.com/library/indepth/nodejs/reverse_port_binding.html

一个简单的快速应用程序的工作示例如下:

if (typeof(PhusionPassenger) != 'undefined') {
    PhusionPassenger.configure({ autoInstall: false });
}

var express = require('express');
var app = express();
app.get('/', function(req, res){
    var body = 'Hello World';
    res.setHeader('Content-Type', 'text/plain');
    res.setHeader('Content-Length', body.length);
    res.end(body);
});

if (typeof(PhusionPassenger) != 'undefined') {
    app.listen('passenger');
} else {
    app.listen(3000);
}