如何检查我的pm2应用程序NODE_ENV是否正在设置?
所以我刚刚第一次部署了一个节点和pm2的站点,然后回去做一些优化和阅读最佳实践等。
我读过,你可以通过设置NODE_ENV=production
来获得很多好处。
我在pm2文档中find了这个:
[process.json] "env_production" : { "NODE_ENV": "production" } ... $ pm2 start process.json --env production
所以,我做了,但我不知道它是否工作。 当试图找出如何检查它,我学会了尝试:
$ node > process.env.NODE_ENV > undefined
所以,这不是一个好兆头,但是,由于我对低级别工作的理解有限,我可以猜测,也许pm2会将每个应用程序作为单独的节点进程启动? 所以当我尝试检查时,可能我没有find正确的方法。
另外,我不知道是否必须创build一个新的〜/ .pm2 / dump.pm2文件,因为也许每当这可能覆盖我设置的选项? (因为我用pm2 startup
)。
如何检查我的pm2应用程序的NODE_ENV是否已设置?
编辑:
看来,实际上所有必要的是你杀了并重新启动过程来改变你的环境。
$ pm2 kill && pm2 start pm2.json --env production
以下是不够好的:
pm2 restart pm2.json --env production
你必须杀死这个过程
先前的回答:
所以,我得到它的工作。 我认为这与init脚本中保存的环境有关,因为擦除所有内容并重新开始工作。
这是我做的。
$ pm2 stop all && pm2 kill && rm -R ~/.pm2 && sudo rm -R /root/.pm2 $ pm2 startup
其中输出以下命令为我复制粘贴:
$ sudo su -c "env PATH=$PATH:/usr/bin pm2 startup linux -u myusername --hp /home/myusername"
接着:
/srv/http/project $ pm2 start pm2.json --env production
pm2.json
是我的configuration文件。
然后我检查了日志,果然,它说production
而不是undefined
。
所以,总结一下,我不认为我有什么问题,但是我已经生成了init脚本并保存了configuration,并且由于某种原因它没有使用新的环境。
你的process.json文件不完整。 尝试使用这样的东西:
[process.json] { "name" : "MyApp", "script" : "myapp.js", "env_production" : { "NODE_ENV": "production" } }
然后将日志添加到您的代码中,最好是在启动时的somwhere:
console.log("NODE_ENV : ", process.env.NODE_ENV);
现在启动应用程序:
pm2 start process.json --env production
最后观看应用程序日志:
pm2 logs MyApp
这应该做到这一点。
可能在服务器脚本的开始处,您可以打印环境variables的值,然后检查PM2日志。 使用下面的代码来打印您的环境variables值:
console.log('process.env.NODE_ENV:', process.env.NODE_ENV);
然后使用下面的代码来查看PM2日志
pm2日志app_name
这里app_name
是你的进程名称,如process.json
文件中的条目所示。
把它join到你的package.json
,用npm
来启动它:
"scripts": { "myScript": "NODE_ENV=production pm2 start server.js" }
然后
npm start myScript
你也可以直接做,但这很容易pipe理,自动化和crontab
,并在你的源代码pipe理…