2014-09-19 122 views
1

我已经使用Vagrant/Puppet(从puphpet.com生成)在Ubuntu环境中设置了一个node.js应用程序。我将把完成的软件包发送给某个人,并且希望node.js应用程序能够在“vagrant up”完成后运行(以便它们不必通过ssh和运行命令进行连接) 。Ubuntu + Vagrant + Puphpet:如何在启动时自动启动node.js应用程序?

该puphpet下载包包括一个文件夹/ p​​uphpet/files/start-always和/ exec-always,我想知道如果我可以使用这些。

或者,如果我没有弄错,也可以在.Vagrant文​​件末尾添加一些Ubuntu运行命令(只是不确定语法)。

任何人都有这方面的经验?

回答

5

解决方案:想通了。对于需要知道的人:创建一个名为run.sh/puphpet/files/exec-once(或您需要的文件夹/频率)的文件(这些文件按字母顺序加载,所以如果您有多个文件,请适当命名文件)。示例文件:

#!/bin/bash 
sudo npm install pm2 -g --unsafe-perm 2&>1 >/dev/null 
cd /var/www/app && sudo pm2 start app.js 

在这种情况下,我安装被称为“PM2”的NPM模块(2&>1 >/dev/null将隐藏控制台和错误消息)。此模块允许您将node.js应用程序作为服务运行。下一行我们必须cd进入应用程序目录,并从那里,启动应用程序sudo pm2

从这个角度来看,node.js应用程序会自动运行/重启(包括应用程序崩溃或Ubuntu重启时),因此您不必多次运行此命令(因此/exec-once文件夹改为exec-always,每次运行时都会运行“vagrant up”,包括初始设置后的未来启动)。

pm2还具有允许您监视文件夹中的更改的功能,以便您的node.js应用程序将在您开发时自动重新启动。有关这些详细信息,请参阅pm2文档或在ssh中键入pm2

+5

其实,你应该把它移到“puphpet/files/startup-always”。 '执行一次'和'永远执行'已经改为只在第一次'上'或在每个'规定'期间运行。因此,如果您'流浪停止&&流浪',nodejs应用程序将不再运行。发布文档:https://github.com/puphpet/puphpet/issues/389 – nover 2014-12-01 15:55:34

相关问题