如何在Linux机器上运行hapijs作为服务器守护程序?现在,我正在使用主页的node index.js
命令将其作为开发用户进程运行,但从长远来看,它应该是www-data
或运行该进程的其他用户。< / p>
答案 0 :(得分:4)
如果你想在没有任何额外工具的情况下将节点作为守护进程运行,你可以使用nohup:
nohup node index.js &
但是,以下工具可以执行此操作,还具有一些其他非常有用的功能,例如退出时自动重启,日志重定向以及PM2的情况下,群集:
PM2:https://github.com/Unitech/pm2
永远:https://github.com/foreverjs/forever
如果您希望在机器启动/重新启动时启动服务,可以使用Upstart(在ubuntu上)或System-V上:
https://www.digitalocean.com/community/tutorials/how-to-write-a-linux-daemon-with-node-js-on-a-vps
以不同的用户身份运行您登录的用户:
sudo -u somebody node index.js
请注意,上述内容均不适用于hapi,而是适用于任何Node.js应用。
答案 1 :(得分:2)
PM2是最好的选择。它从地方发展到生产都没有问题。
第一步:
npm install -g pm2
-g
标志仅用于全局安装,因此可用作系统命令。
第二步:
pm2 start index.js
start命令只是替换node index.js
它在后台运行节点进程但是作为守护进程。
PM2实际使用案例
cd projects/my-app
npm install -g pm2
npm install
NODE_ENV=development pm2 start index.js -n my-app
pm2 stop my-app
pm2 restart my-app
pm2 status
pm2 logs my-app
pm2 m
这些应该足以让你前进。关于PM2的好处是它在CI / CD环境中运行良好,因为您可以按名称调用进程。最后开箱即用它可以记录旋转和一些其他很棒的东西,即使东西向南移动也可以让你继续前进。如果应用程序崩溃,它们也会自动重启(显示可配置)。
其他配置允许PM2在磁盘上观看文件并在应用程序更改时重新启动应用程序。这非常适合开发,因为您可以编写代码+保存文件,而您在HapiJS中构建的API将只是重新启动并且您的更改是实时的。
答案 2 :(得分:0)
我使用supervisord,效果很好。
简而言之,您必须配置supervisord以启动您的hapijs应用程序。此外,您需要配置nginx或apache以反转对您的hapijs应用程序的代理请求。
您可以在http://blog.risingstack.com/operating-node-in-production/
找到有关设置的详细说明答案 3 :(得分:0)
当您没有明确要求提供工具时,建议使用工具会感觉很奇怪。 nohup-ing进程并在后台运行是一个不需要新工具的选项,但是对于它的价值,我建议Docker-izing应用程序并让docker处理所有内容。 Docker内置了几个功能,即使它不仅仅用于创建守护进程(它还有更多功能),您可以使用它的restart ='always'功能来保持进程运行。
希望有所帮助。