node.js - 如何使用 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_ENV=development
然后再看看你的页面吗?它可能会输出更多信息,为什么会抛出错误。
通过错误信息,我们可以更好地了解可能出现的问题。
谢谢,马克
推荐阅读
- search - 元描述在 Google 中是正确的,但在 Bing 和 DuckDuckgo 中,它显示特殊字符
- python - 没有使用python在输出中绘制图表
- security - 为切片传输建立文件所有权
- java - Eclipse 为最终的静态变量或枚举值消隐大写“F”
- python - 如何按列对pyspark中的数据框进行分组并以该列作为键并以记录列表作为其值来获取字典?
- git - 浏览 GitHub 上的存储库并在 ReactJS 和 NodeJS 中提取一些简单的统计数据
- duplicates - 发件箱模式 - 任何 SQL 和 NoSQL DB 的无重复和无序消息中继
- java - 当令牌在 1 个线程中的多个请求中间过期时,OAuth2RestTemplate 会自行刷新吗?
- javascript - React-Router-Dom - 重定向不会导致重新渲染
- c++ - 如何处理具有不同文件夹的 IShellFolder 菜单或具有多个文件的 ShellExecuteEx