我安排了cron作业,用于在Debian 7和Centous 6.5上系统启动时运行使用meteor开发的项目。一切都很好,直到不明原因崩溃。
Cron包含运行Rocket.Chat项目的命令,该项目是用meteor开发的。
当我通过ssh连接运行meteor
命令时,Rocket.chat一直运行直到ssh连接打开。
最后,我想知道如何在系统启动时运行meteor或node.js项目,因为该项目在系统关闭或杀死cron之前不会崩溃。
答案 0 :(得分:1)
保持NodeJS应用程序运行并在启动时启动的一个好方法是使用PM2(https://github.com/Unitech/pm2)。 Rocket.Chat甚至在应用程序的根文件夹上有一个示例配置文件。
另外,请确保您不在生产环境中使用meteor
命令,它仅用于开发,因为它具有许多调试功能,使应用程序更慢。
答案 1 :(得分:0)
要回应你的第一个问题,当你的ssh连接死亡时关闭流星,你总是可以使用nohup
nohup meteor > /dev/null &
我设置/ dev / null作为输出,但是如果你在那里指定一个文件,你就会记录通常被打印到屏幕上的内容。当你断开你的流星将继续运行:)。
至于在启动时运行服务,你真的不需要cron,你可以创建一个脚本。如果使用Debian或基于debian的发行版(如您的标签之一所示),只需复制骨架脚本
即可cp /etc/init.d/skeleton /etc/init.d/myCoolNodeProject
并根据您的环境编辑您的文件,了解如何开始停止您的nodejs服务
然后运行
update-rc.d myCoolNodeProject defaults
将其设置为在启动时启动。 希望它有所帮助
答案 2 :(得分:0)
有一个名为Passenger的优秀工具
https://www.phusionpassenger.com/
这允许您设置NGINX代理以在端口80上运行所有流星应用程序,并且它可以在不需要cron作业的情况下运行流程并担心如何设置nohup。
他们的帮助很好,而且Passenger很容易与NGINX虚拟主机配置集成,你不会回头看