centos 中有3个项目,用pm2启动3个项目。用pm2 list 一看,状态全是启动的。 但是其中有一个访问不了,一直报502(我设置二级域名)。之前一直怀疑是nginx配置的问题,后面又去排查端口。 结果再进程中一看,居然只有其中的2个端口,那么第三个端口呢,怀疑端口冲突,改了好几个。还是无果。 最终试了试npm 启动 ,正常启动。nginx也正常映射,网站也能正常访问了。
不知道有没有大神知道这是怎么回事呢? 最终的原因找到了。 Express 4.x 默认将启动模块分离到了./bin/www中,直接使用 supervisor 无法正常监控应用,使得开发过程中的调试非常不方便。 直接在 app.js 添加 app 模块即可。
var debug = require('debug')('my-application'); // debug模块
app.set('port', process.env.PORT || 3000); // 设定监听端口
// Environment sets...
// module.exports = app; 这是 4.x 默认的配置,分离了 app 模块,将它注释即可,上线时可以重新改回来
//启动监听
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
之后就可以正常的supervisor app.js进行调试了。
如果需要彻底改变启动方式,还需要修改packages.json
"scripts": {
"start": "node app.js" // 此处将原本的 'node ./bin/www' 改为 'node app.js'
}
之后运行npm start实际就是node app.js了。