首页 > 解决方案 > 如何使用 Phusion Passanger 为 Nodejs 和 Express 应用程序提供服务

问题描述

我有一个当前托管在共享主机上的 node & express 应用程序。我想使用 Phusion Passenger 运行和管理应用程序。我的托管帐户支持我以前从未使用过的由 Passenger 管理的 nodejs 应用程序。

在此处输入图像描述

设置 Node 应用程序时生成的服务器代码是基本的服务器设置,如下所示。

var http = require('http');
var server = http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    var message = 'It works!\n',
    version = 'NodeJS ' + process.versions.node + '\n',
    response = [message, version].join('\n');
    res.end(response);
});
server.listen();

我想用下面的代码替换它,其中包含我用来服务我的 API 路由的 express 元素。

//import modules
var express = require('express'),
    bodyParser = require('body-parser'),
    morgan = require('morgan'),
    cors = require('cors');
    path = require('path');

var app = express();
var port = process.env.PORT || 3000;

//import database connection from dbconnect.js file
var mysql = require('./dbconnect/dbconnect');

//Parse as urlencoded and json.
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());

//adding middleware - cors
app.use(cors());

//Http logger
app.use(morgan('dev'));

//Uncomment for production
//app.use(express.static(__dirname + '/public'));

// Point static path to public
app.use(express.static(path.join(__dirname, 'public')));

//import routes from /routes/routes.js
var user = require('./routes/Users');  
    route = require('./routes/route');
    router = require('./router/router');
//adding routes
app.use('/api', user, route, router);

// Catch all other routes and return the index file
app.get('/*', (req, res) => { res.sendFile(path.join(__dirname, '/public/index.html'));
});

app.use(function (req,res,next){
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "x-access-token, Origin, Content-Type, Accept");
    next();
});

app.listen(port, function() {console.log('Server started at http://localhost:'+port+'/');});

但我得到了错误:

在此处输入图像描述

我目前正在使用Forever在共享服务器上运行我的服务器脚本,它工作正常但效率不高,所以我想改用Passenger。

标签: node.jsexpresspassengerforever

解决方案


你能设置你的NODE_ENV=development然后再看看你的页面吗?它可能会输出更多信息,为什么会抛出错误。

通过错误信息,我们可以更好地了解可能出现的问题。

谢谢,马克


推荐阅读