Ubuntu + Vagrant + Puphpet:如何在启动时自动启动node.js应用程序?

Bui*_*er1 1 ubuntu puppet node.js vagrant puphpet

我使用Vagrant/Puppet(从puphpet.com生成)在Ubuntu环境中设置了node.js应用程序.我要将完成的包发送给某人,并希望node.js应用程序运行"vagrant up"为他们完成的那一刻(这样他们就不必费心通过ssh和运行命令连接) .

puphpet下载包包括一个文件夹/ p​​uphpet/files/start-always和/ exec-always,我想知道我是否可以使用它们.

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

有人有这方面的经验吗?

Bui*_*er1 5

解决方案:想出来.对于任何需要知道的人:创建一个文件/puphpet/files/exec-once(或你需要的文件夹/频率)调用run.sh(这些文件按字母顺序加载,所以如果你有多个文件,请正确命名你的文件).示例文件:

#!/bin/bash
sudo npm install pm2 -g --unsafe-perm 2&>1 >/dev/null
cd /var/www/app && sudo pm2 start app.js
Run Code Online (Sandbox Code Playgroud)

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

据说从这一点开始,node.js应用程序将自动运行/重启(包括应用程序崩溃或Ubuntu重启时),因此您不必多次运行此命令(因此/exec-once文件夹而不是exec-always,将运行每次调用"vagrant up",包括初始设置后的将来启动).

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

  • 实际上,你应该把它移到"puphpet/files/startup-always".'exec-once'和'exec-always'已被更改为仅在第一个'up'或每个'provision'中运行.因此,如果你'流浪汉停止&& vagrant up',nodejs app将不再运行.问题记录:https://github.com/puphpet/puphpet/issues/389 (5认同)